boostryjp / ibet-prime Goto Github PK
View Code? Open in Web Editor NEWA suite of APIs for issuing and managing digital securities on the ibet network 🚀
Home Page: https://ibet.jp/ibet-for-fin
License: Apache License 2.0
A suite of APIs for issuing and managing digital securities on the ibet network 🚀
Home Page: https://ibet.jp/ibet-for-fin
License: Apache License 2.0
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
#101
currently, There is no API to get or delete ledger details data.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Add API to return the public key for E2EE
Describe the bug
When issuing ibetShare, dividends and cancellation_date should be optional inputs.
Reason
Expected behavior
Describe the bug
datatime property (ex. share/transfer_approvals/:token_address
, application_datetime) is not formatted to ISO 8601.
Expected behavior
If the timezone is +09:00, then the date and time should be displayed as JST.
"2021-05-14T09:43:28.773018+09:00" => "2021-05-14T18:43:28.773018+09:00"
Supplemental
https://tool.konisimple.net/date/unixtime
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Add bulk transfer api and batch process
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
The startup parameters for uvicorn are temporary, so we will review them.
Describe the bug
The rsa key creation batch process is in a state where updates are not committed.
Expected behavior
Add DB flush.
Is your feature request related to a problem? Please describe.
I want to add an additional issuing (add_supply) API for Bond and Share.
Describe the solution you'd like
Add APIs
Is your feature request related to a problem? Please describe.
/tnansfer
), it does not check that the token has already been issued.Describe the solution you'd like
Is your feature request related to a problem? Please describe.
When sending a transaction, processing is performed in the following order, so that it cannot withstand parallel execution.
(1) Obtain nonce
(2) Sign transaction
(3) Send transaction
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
トークン発行後にTokenList
コントラクトへトークンを登録する(=公開)機能を追加する。
Describe the solution you'd like
案① Token/{token_address}/Publish
のような公開用のエンドポイントを作成する
案② 発行処理でTokenList
コントラクトの登録まで実施してしまう(ユーザーに公開を意識させない)
Describe the bug
発行後に発行体の保有が生成されていないため、生成すべき
Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Add any other context about the problem here.
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe the bug
the environment property of config.py
"EAO_PASSWORD_PATTERN_MSG" is invalid
Expected behavior
EOA_PASSWORD_PATTERN_MSG
is expected
Is your feature request related to a problem? Please describe.
Add bond ledger creation process
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Since ibet-Prime by itself has no GUI, I would like to add a CLI tool to call the API more easily.
Describe the solution you'd like
Create a CLI tool to use the main functions of ibet-Prime.
Is your feature request related to a problem? Please describe.
bool public transferApprovalRequired; // 移転承認要否
/// @notice 移転承諾要否の更新
/// @dev オーナーのみ実行可能
/// @param _required 移転承諾要否
function setTransferApprovalRequired(bool _required)
public
onlyOwner()
{
...
}
// 移転申請情報
struct ApplicationForTransfer {
address from; // 移転元アドレス
address to; // 移転先アドレス
uint256 amount; // 移転数量
bool valid; // 有効・無効
}
// 移転申請
// id => data
ApplicationForTransfer[] public applicationsForTransfer;
// 移転待ち数量
// address => balance
mapping(address => uint256) public pendingTransfer;
/// @notice 移転申請
/// @param _to 移転先アドレス
/// @param _value 移転数量
/// @param _data イベント出力用の任意のデータ
function applyForTransfer(address _to, uint256 _value, string memory _data)
public
{
...
}
/// @notice 移転申請取消
/// @dev 発行体または申請者のみが実行可能
/// @param _index 取消対象のインデックス
/// @param _data イベント出力用の任意のデータ
function cancelTransfer(uint256 _index, string memory _data)
public
{
...
}
/// @notice 移転承認
/// @param _index 承認対象のインデックス
/// @param _data イベント出力用の任意のデータ
function approveTransfer(uint256 _index, string memory _data)
public
onlyOwner()
{
...
}
// イベント:移転承諾要否変更
event ChangeTransferApprovalRequired(bool required);
// イベント:移転申請
event ApplyForTransfer(uint256 indexed index, address from, address to, uint256 value, string data);
// イベント:移転申請取消
event CancelTransfer(uint256 indexed index, address from, address to, string data);
// イベント:移転承認
event ApproveTransfer(uint256 indexed index, address from, address to, string data);
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Add share-related functions
Describe the bug
error occurs when calling transfer_approval_history between application and approval
[2021-05-14 09:43:56 +0000] [71] [ERROR] Exception in ASGI application
Traceback (most recent call last):
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/uvicorn/protocols/http/h11_impl.py", line 394, in run_asgi
result = await app(self.scope, self.receive, self.send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
return await self.app(scope, receive, send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/fastapi/applications.py", line 199, in __call__
await super().__call__(scope, receive, send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/applications.py", line 111, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
raise exc from None
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
await self.app(scope, receive, _send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/base.py", line 25, in __call__
response = await self.dispatch_func(request, self.call_next)
File "/app/ibet-Prime/app/main.py", line 48, in api_call_handler
response = await call_next(request)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/base.py", line 45, in call_next
task.result()
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
await self.app(scope, receive, send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
raise exc from None
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
await self.app(scope, receive, sender)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/routing.py", line 566, in __call__
await route.handle(scope, receive, send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
await self.app(scope, receive, send)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
response = await func(request)
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/fastapi/routing.py", line 201, in app
raw_response = await run_endpoint_function(
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/fastapi/routing.py", line 148, in run_endpoint_function
return await dependant.call(**values)
File "/app/ibet-Prime/app/routers/share.py", line 900, in list_transfer_approval_history
"approval_datetime": local_tz.localize(_transfer_approval.approval_datetime).isoformat(),
File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/pytz/tzinfo.py", line 317, in localize
if dt.tzinfo is not None:
AttributeError: 'NoneType' object has no attribute 'tzinfo'
Expected behavior
return normal response whose approval_datetime and approval_blockstamp are "" or null
Additional context
nothing.
As the title says.
Is your feature request related to a problem? Please describe.
Add Dockerfile
Describe the solution you'd like
OS: Alpine 3.13
Describe the bug
Expected behavior
Is your feature request related to a problem? Please describe.
/tokens/{token_address}/scheduled_events
are as follows.[
{
"scheduled_event_id": 0,
"token_address": "string",
"token_type": "string",
"scheduled_datetime": "2021-05-24T10:36:38.389Z",
"event_type": "string",
"status": 0,
"data": {}
}
]
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Add a batch process that performs the following
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
/bond/bulk_transfer
/share/bulk_transfer
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe the bug
│ [2021-04-28 01:33:08 +0000] [20397] [ERROR] Exception in ASGI application │
│ Traceback (most recent call last): │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/uvicorn/protocols/http/h11_impl.py", line 394, in run_asgi │
│ result = await app(self.scope, self.receive, self.send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ │
│ return await self.app(scope, receive, send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/fastapi/applications.py", line 199, in __call__ │
│ await super().__call__(scope, receive, send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/applications.py", line 111, in __call__ │
│ await self.middleware_stack(scope, receive, send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ │
│ raise exc from None │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ │
│ await self.app(scope, receive, _send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/base.py", line 25, in __call__ │
│ response = await self.dispatch_func(request, self.call_next) │
│ File "/app/ibet-Prime/app/main.py", line 48, in api_call_handler │
│ response = await call_next(request) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/base.py", line 45, in call_next │
│ task.result() │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro │
│ await self.app(scope, receive, send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ │
│ raise exc from None │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ │
│ await self.app(scope, receive, sender) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/routing.py", line 566, in __call__ │
│ await route.handle(scope, receive, send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle │
│ await self.app(scope, receive, send) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/starlette/routing.py", line 41, in app │
│ response = await func(request) │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/fastapi/routing.py", line 209, in app │
│ response_data = await serialize_response( │
│ File "/home/apl/.pyenv/versions/3.8.7/lib/python3.8/site-packages/fastapi/routing.py", line 126, in serialize_response │
│ raise ValidationError(errors, field.type_) │
│ pydantic.error_wrappers.ValidationError: 1 validation error for HolderResponse │
│ response -> 0 -> pending_transfer │
│ none is not an allowed value (type=type_error.none.not_allowed)
Expected behavior
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Add Issuer Account Reference API
Describe the solution you'd like
GET: /account/{issuer_address}
Response: issuer_address, rsa_public_key
Is your feature request related to a problem? Please describe.
Add unit test code.
Is your feature request related to a problem? Please describe.
Add health check script
Is your feature request related to a problem? Please describe.
Currently, can't change the password after creating ECDSA key and RSA key.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
現状トランザクション送信を伴うオペレーションでECDSA鍵のパスワードチェックを行っていない。そのため、APIを呼び出すことでトランザクション送信が可能になっている。高いセキュリティレベルを求められる場合に、この仕様は十分ではない。パスワードチェックを行うオプションを追加したい。
Describe the solution you'd like
トランザクション送信を伴うオペレーションでパスワードチェックを行うオプションを追加する。
Is your feature request related to a problem? Please describe.
Solutions
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Change the specification as follows.
POST: /accounts
POST: /accounts/{issuer_address}/rsakey
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe the bug
Expected behavior
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.