批發 CBDC 模型
增強版的區塊鏈 App 產生器包含模型屬性,可產生批發中央銀行數位幣別 (CBDC) 案例的其他方法。
如果您在使用延伸權杖分類架構標準之權杖的規格檔案中包含 model: wcbdc
參數,區塊鏈 App 產生器會產生應用程式特定的鏈碼,包括下列與批發 CBDC 應用程式搭配使用的其他方法和功能。
TypeScript 批發 CBDC 的方法
批發 CBDC 鏈碼包含一般權杖分類架構 NFT 鏈碼中可用的所有方法。以下為批發 CBDC 方案特定的額外方法。-
setApplicationGroups
- 此方法會在 API 中指定之應用程式群組的帳戶詳細資訊中設定
application_groups
參數。此方法只能由指定組織的Token Admin
或Org Admin
呼叫。 public async setApplicationGroups (org_id: string, user_id: string, token_id: string, application_groups: string[])
- 參數:
org_id: string
– 目前組織中使用者的成員身分服務提供者 (MSP) ID。user_id: string
– 使用者的使用者名稱或電子郵件 ID。token_id: string
– 記號的 ID。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "453821c7ffd477987ef8ccbd836b893969531ab768098cd4a99e3b89cd38a391", "payload": { "bapAccountVersion": 0, "assetType": "oaccount", "account_id": "oaccount~28ac774001f374064029d51af4fb67e26ea1ea9ef62828b7a72dbf3beb8efd8d", "user_id": "admin_user_cb", "org_id": "CB", "token_type": "fungible", "token_id": "", "token_name": "", "balance": 0, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "System_Admins" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 100, "daily_transactions": 0, "current_date": "2024-12-09T00:00:00.000Z" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 188 } }
-
getAllActiveAccounts
- 此方法會傳回與指定記號 ID 關聯的所有作用中帳戶。任何使用者都可以呼叫這個方法。
public async getAllActiveAccounts(token_id: string)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "non_account_role_name": [ "token_admin" ], "role_name": null, "valueJson": { "bapAccountVersion": 0, "assetType": "oaccount", "account_id": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "user_id": "admin_user_cb", "org_id": "CB", "token_type": "fungible", "token_id": "USD", "token_name": "cbdc", "balance": 0, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "System_Admins" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 1000, "daily_transactions": 0, "current_date": "2024-11-20T00:00:00.000Z" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "non_account_role_name": [ "token_admin" ], "role_name": null, "valueJson": { "account_id": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "org_id": "CB", "user_id": "admin_user_cb", "token_id": "USD", "max_daily_amount": 10000, "max_daily_transactions": 1000 } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "non_account_role_name": [ "token_admin" ], "role_name": null, "valueJson": { "account_id": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "org_id": "CB", "user_id": "admin_user_cb", "token_id": "USD", "max_daily_amount": 10000, "max_daily_transactions": 1000 } } ], "encode": "JSON" } }
-
getAllSuspendedAccounts
- 此方法會傳回與指定記號 ID 相關聯的所有暫停帳戶。任何使用者都可以呼叫這個方法。
func (t *Controller) GetAllSuspendedAccounts(token_id string) (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "non_account_role_name": null, "role_name": null, "valueJson": { "assetType": "oaccount", "bapAccountVersion": 1, "account_id": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "user_id": "user1_fi1", "org_id": "FI1", "token_type": "fungible", "token_id": "USD", "token_name": "cbdc", "balance": 5, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "Org_Users" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 1000, "daily_transactions": 0, "current_date": "2024-11-20T00:00:00.000Z" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "non_account_role_name": null, "role_name": null, "valueJson": { "account_id": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "org_id": "FI1", "user_id": "user1_fi1", "token_id": "USD", "max_daily_amount": 10000, "max_daily_transactions": 1000 } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "non_account_role_name": null, "role_name": null, "valueJson": { "account_id": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "org_id": "FI1", "user_id": "user1_fi1", "token_id": "USD" } } ], "encode": "JSON" } }
-
getBurnQuantity
- 此方法會傳回指定組織的燒錄記號總數量。此方法只能由
Token Admin
、Token Auditor
或具備 burner 角色的使用者呼叫。 public async getBurnQuantity(token_id: string)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": { "burnt_quantity": 31 }, "encode": "JSON" } }
-
getActionHistory
- 此方法會擷取呼叫程式針對 mint、burn 及 transfer (issuance) 作業所進行之核准或拒絕的歷史記錄,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。
public async getActionHistory(token_id: string)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "from_account_id": "oaccount~0d7b3f73aea28065017ce8b79c0bb19256dc0cb475a0b2a85192bd110f69535c", "from_org_id": "CB", "from_user_id": "retirer_user_cb", "holding_id": "ohold~cbdc~USD~eaf6", "holding_status": "REJECT_BURN", "last_updated_time": "2024-11-26T21:43:22.000Z", "notary_account_id": null, "notary_org_id": null, "notary_user_id": null, "operation_id": null, "quantity": 3, "timetoexpiration": null, "to_account_id": "", "to_org_id": null, "to_user_id": null, "token_id": "USD", "token_name": null }, { "from_account_id": "oaccount~0d7b3f73aea28065017ce8b79c0bb19256dc0cb475a0b2a85192bd110f69535c", "from_org_id": "CB", "from_user_id": "retirer_user_cb", "holding_id": "ohold~cbdc~USD~0031", "holding_status": "REJECT_BURN", "last_updated_time": "2024-11-26T21:43:15.000Z", "notary_account_id": null, "notary_org_id": null, "notary_user_id": null, "operation_id": null, "quantity": 2, "timetoexpiration": null, "to_account_id": "", "to_org_id": null, "to_user_id": null, "token_id": "USD", "token_name": null } ], "encode": "JSON" } }
-
getPendingIssuance
- 此方法會擷取呼叫者被指派為核准者的所有待處理核發 (轉移) 交易,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。只有鏈碼的
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
或Notary
才能呼叫此方法。 public async getPendingIssuance(token_id: string)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "asset_type": "ONHOLD", "category": "category value", "from_account_id": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "from_org_id": "CB", "from_user_id": "creator_user_cb", "holding_id": "ohold~cbdc~USD~8e314", "notary_account_id": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "notary_org_id": "CB", "notary_user_id": "manager_user_cb", "operation_id": "8e314", "quantity": 10, "timetoexpiration": "0", "to_account_id": "oaccount~44b844deccc6c314e14b8b9b95b51db5c8de499dbdbd3def2a44ba54c899c142", "to_org_id": "FI1", "to_user_id": "officer_user1_fi1", "token_id": "USD", "token_name": "cbdc" }, { "asset_type": "ONHOLD", "category": "category value", "from_account_id": "oaccount~51e676d7182a02ea7418ef58a6d54ecfe3858ef40b4ffb3d859b320da3921594", "from_org_id": "CB", "from_user_id": "issuer_user_cb", "holding_id": "ohold~cbdc~USD~8e315", "notary_account_id": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "notary_org_id": "CB", "notary_user_id": "manager_user_cb", "operation_id": "8e315", "quantity": 10, "timetoexpiration": "0", "to_account_id": "oaccount~44b844deccc6c314e14b8b9b95b51db5c8de499dbdbd3def2a44ba54c899c142", "to_org_id": "FI1", "to_user_id": "officer_user1_fi1", "token_id": "USD", "token_name": "cbdc" } ], "encode": "JSON" } }
-
getPendingRequest
- 此方法會擷取指定類型的所有擱置中要求,其中呼叫者被指派為核准者。只有鏈碼的
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
或Notary
才能呼叫此方法。 public async getPendingRequest(token_id: string, request_type: string)
- 參數:
token_id: string
– 記號的 ID。request_type: string
– 交易類型。例如,mint
或burn
。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "valueJson": { "assetType": "ohold", "holding_id": "ohold~cbdc~USD~op123", "operation_id": "op123", "token_id": "USD", "token_name": "cbdc", "operation_type": "mint", "status": "pending", "from_account_id": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "to_account_id": "", "notary_account_id": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "quantity": 10, "time_to_expiration": "0", "category": "category value", "description": "description value" } } ], "encode": "JSON" } }
-
getTotalBalanceByCallerOrgId
- 此方法會擷取呼叫者組織的總結餘。它可以由
Token Admin
、Token Auditor
、Org Admin
、Org Auditor
或任何帳戶擁有者呼叫。 public async getTotalBalanceByCallerOrgId()
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "totalBalance": 704 } ], "encode": "JSON" } }
-
getTransactionWithBlockNumber
- 此方法會傳回指定之交易 ID 的交易詳細資訊。
public async getTransactionWithBlockNumber(token_id: string, transaction_id: string)
- 參數:
token_id: string
– 記號的 ID。transaction_id: string
– 交易的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "blockNo": 82, "key": "otransaction~24f391919a8837d654beaa7346148ea8b2b9704624aef482ce68078c485f5b1b", "metadata": null, "txnNo": 0, "value": null, "valueJson": { "assetType": "otransaction", "transaction_id": "otransaction~24f391919a8837d654beaa7346148ea8b2b9704624aef482ce68078c485f5b1b", "token_id": "USD", "from_account_id": "", "from_account_balance": 0, "from_account_onhold_balance": 0, "to_account_id": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "to_account_balance": 100, "to_account_onhold_balance": 0, "transaction_type": "REQUEST_MINT", "amount": 200, "timestamp": "2024-11-20T06:48:42.000Z", "number_of_sub_transactions": 0, "holding_id": "", "sub_transaction": "false", "description": "" } } ], "encode": "JSON" } }
已修改批發 CBDC 模型的下列 API。
-
createAccount
- 此方法會為指定的使用者和記號建立帳戶。必須為任何需要記號的使用者建立帳戶。科目會追蹤餘額、保留餘額及交易歷史記錄。帳戶 ID 是透過串連資產類型和記號 ID,然後透過組織 ID 和使用者 ID 的串連建立 SHA-256 雜湊來形成。此方法只能由鏈碼的
Token Admin
呼叫。 public async createAccount(org_id: string, user_id: string, token_type: string, application_groups: string[], daily_limits?: DailyLimits)
- 參數:
orgId
– 要建立帳戶之使用者的成員身分服務提供者 (MSP) ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。userId
– 使用者的使用者名稱或電子郵件 ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。tokenType: TokenType
– 記號的類型,必須是fungible
。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。daily_limits: DailyLimits
– 下列類型的 JSON 物件。
在此範例中,{ "max_daily_amount": 100000 "max_daily_transactions": 10000 }
max_daily_amount
值是每日可交易的記號數目上限,而max_daily_transactions
值是每日可完成的交易數目上限。endorsers: string[]
– 必須為交易背書的對等陣列 (例如peer1
、peer2
)。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "453821c7ffd477987ef8ccbd836b893969531ab768098cd4a99e3b89cd38a391", "payload": { "bapAccountVersion": 0, "assetType": "oaccount", "account_id": "oaccount~28ac774001f374064029d51af4fb67e26ea1ea9ef62828b7a72dbf3beb8efd8d", "user_id": "admin_user_cb", "org_id": "CB", "token_type": "fungible", "token_id": "", "token_name": "", "balance": 0, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "System_Admins" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 100, "daily_transactions": 0, "current_date": "2024-12-09T00:00:00.000Z" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 188 } }
批發 CBDC 的執行方式
批發 CBDC 鏈碼包含一般權杖分類架構 NFT 鏈碼中可用的所有方法。以下為批發 CBDC 方案特定的額外方法。-
SetApplicationGroups
- 此方法會在 API 中指定之應用程式群組的帳戶詳細資訊中設定
application_groups
參數。此方法只能由指定組織的Token Admin
或Org Admin
呼叫。 func (t *Controller) SetApplicationGroups(token_id string, org_id string, user_id string, application_groups []string) (interface{}, error)
- 參數:
org_id: string
– 目前組織中使用者的成員身分服務提供者 (MSP) ID。user_id: string
– 使用者的使用者名稱或電子郵件 ID。token_id: string
– 記號的 ID。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "261c3da4bb6f1724bc8f674c7b001a9b986bc9900d0508363039424926b143ed", "payload": { "AssetType": "oaccount", "AccountId": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "UserId": "admin_user_cb", "OrgId": "CB", "TokenType": "fungible", "TokenId": "", "TokenName": "", "Balance": 0, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 0, "ApplicationGroups": [ "System_Admins" ], "MaxDailyAmount": 10000, "DailyAmount": 0, "MaxDailyTransactions": 100, "DailyTransactions": 0, "CurrentDate": "2024-12-09" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 246 } }
-
GetAllActiveAccounts
- 此方法會傳回與指定記號 ID 關聯的所有作用中帳戶。任何使用者都可以呼叫這個方法。
func (t *Controller) GetAllActiveAccounts(token_id string) (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": "[\"token_admin\"]", "RoleName": null, "key": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "valueJson": { "AccountId": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "ApplicationGroups": [ "System_Issuers" ], "AssetType": "oaccount", "Balance": 0, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 0, "CurrentDate": "2024-11-21", "DailyAmount": 0, "DailyTransactions": 0, "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, "OrgId": "CB", "TokenId": "USD", "TokenName": "cbdc", "TokenType": "fungible", "UserId": "admin_user_cb" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": "[\"token_auditor\"]", "RoleName": null, "key": "oaccount~bd6262ffdf582675dd9b2506c1d5488864feef0b9e297a9a3322b7c683ad6214", "valueJson": { "AccountId": "oaccount~bd6262ffdf582675dd9b2506c1d5488864feef0b9e297a9a3322b7c683ad6214", "OrgId": "CB", "TokenId": "USD", "UserId": "auditor_user_cb", "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": "[\"token_admin\"]", "RoleName": null, "key": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "valueJson": { "AccountId": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "OrgId": "CB", "TokenId": "USD", "UserId": "admin_user_cb" } } ], "encode": "JSON" } }
-
GetAllSuspendedAccounts
- 此方法會傳回與指定記號 ID 相關聯的所有暫停帳戶。任何使用者都可以呼叫這個方法。
public async getAllSuspendedAccounts(token_id: string)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": null, "RoleName": "minter", "key": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "valueJson": { "AccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "ApplicationGroups": [ "System_Admins" ], "AssetType": "oaccount", "Balance": 140, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 8, "CurrentDate": "2024-11-21", "DailyAmount": 70, "DailyTransactions": 3, "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, "OrgId": "CB", "TokenId": "USD", "TokenName": "cbdc", "TokenType": "fungible", "UserId": "creator_user_cb" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": null, "RoleName": "minter", "key": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "valueJson": { "AccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "OrgId": "CB", "TokenId": "USD", "UserId": "creator_user_cb", "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": null, "RoleName": "minter", "key": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "valueJson": { "AccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "OrgId": "CB", "TokenId": "USD", "UserId": "creator_user_cb" } } ], "encode": "JSON" } }
-
GetBurnQuantity
- 此方法會傳回指定組織的燒錄記號總數量。此方法只能由
Token Admin
、Token Auditor
或具備 burner 角色的使用者呼叫。 func (t *Controller) GetBurnQuantity(token_id string) (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": { "BurnQuantity": 10 }, "encode": "JSON" } }
-
GetActionHistory
- 此方法會擷取呼叫程式針對 mint、burn 及 transfer (issuance) 作業所進行之核准或拒絕的歷史記錄,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。
func (t *Controller) GetActionHistory(token_id string) (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "FromAccountId": "oaccount~0d7b3f73aea28065017ce8b79c0bb19256dc0cb475a0b2a85192bd110f69535c", "FromOrgId": "CB", "FromUserId": "retirer_user_cb", "HoldingId": "ohold~cbdc~USD~6e1223", "HoldingStatus": "REJECT_BURN", "LastUpdatedTime": "2024-11-21T22:08:26Z", "NotaryAccountId": null, "NotaryOrgId": null, "NotaryUserId": null, "OperationId": null, "Quantity": 5, "TimeToExpiration": null, "ToAccountId": "", "ToOrgId": null, "ToUserId": null, "TokenId": "USD", "TokenName": null }, { "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "FromOrgId": "CB", "FromUserId": "creator_user_cb", "HoldingId": "ohold~cbdc~USD~hold2", "HoldingStatus": "RELEASEHOLD", "LastUpdatedTime": "2024-11-21T21:54:33Z", "NotaryAccountId": null, "NotaryOrgId": null, "NotaryUserId": null, "OperationId": null, "Quantity": 10, "TimeToExpiration": null, "ToAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "ToOrgId": "CB", "ToUserId": "creator_user_cb", "TokenId": "USD", "TokenName": null } ], "encode": "JSON" } }
-
GetPendingIssuance
- 此方法會擷取呼叫者被指派為核准者的所有待處理核發 (轉移) 交易,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。只有鏈碼的
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
或Notary
才能呼叫此方法。 func (t *Controller) GetPendingIssuance(token_id string) (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "AssetType": "ONHOLD", "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "FromOrgId": "CB", "FromUserId": "creator_user_cb", "HoldingId": "ohold~cbdc~USD~h123", "NotaryAccountId": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "NotaryOrgId": "CB", "NotaryUserId": "manager_user_cb", "OperationId": "h123", "Quantity": 10, "TimeToExpiration": "0", "ToAccountId": "oaccount~51e676d7182a02ea7418ef58a6d54ecfe3858ef40b4ffb3d859b320da3921594", "ToOrgId": "CB", "ToUserId": "issuer_user_cb", "TokenId": "USD", "TokenName": "cbdc" } ], "encode": "JSON" } }
-
GetPendingRequest
- 此方法會擷取指定類型的所有擱置中要求,其中呼叫者被指派為核准者。只有鏈碼的
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
或Notary
才能呼叫此方法。 func (t *Controller) GetPendingRequest(token_id string, request_type string) (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。request_type: string
– 交易類型。例如,mint
或burn
。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "valueJson": { "AssetType": "ohold", "Category": "Category value", "Description": "Description value", "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "HoldingId": "ohold~cbdc~USD~8e1232", "NotaryAccountId": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "OperationId": "8e1232", "OperationType": "mint", "Quantity": 100, "Status": "pending", "TimeToExpiration": "0", "ToAccountId": "", "TokenId": "USD", "TokenName": "cbdc" } } ], "encode": "JSON" } }
-
GetTotalBalanceByCallerOrgId
- 此方法會擷取呼叫者組織的總結餘。它可以由
Token Admin
、Token Auditor
、Org Admin
、Org Auditor
或任何帳戶擁有者呼叫。 func (t *Controller) GetTotalBalanceByCallerOrgId() (interface{}, error)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "TotalBalance": 180 } ], "encode": "JSON" } }
-
GetTransactionWithBlockNumber
- 此方法會傳回指定之交易 ID 的交易詳細資訊。
func (t *Controller) GetTransactionWithBlockNumber(token_id string, transaction_id string)
- 參數:
token_id: string
– 記號的 ID。transaction_id: string
– 交易的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "blockNo": 152, "key": "otransaction~eee2de20b4b042884da83e3b7b85d8532ad56f26a546ee25d227acce33375c1c", "metadata": null, "txnNo": 0, "value": null, "valueJson": { "Amount": 10, "AssetType": "otransaction", "Category": "Category value", "Description": "", "FromAccountBalance": 130, "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "FromAccountOnHoldBalance": 10, "HoldingId": "ohold~cbdc~USD~hold1", "NumberOfSubTransactions": 0, "SubTransaction": "false", "SubTransactionType": "", "Timestamp": "2024-11-21T20:43:59Z", "ToAccountBalance": 10, "ToAccountId": "oaccount~51e676d7182a02ea7418ef58a6d54ecfe3858ef40b4ffb3d859b320da3921594", "ToAccountOnHoldBalance": 0, "TokenId": "USD", "TransactionId": "otransaction~eee2de20b4b042884da83e3b7b85d8532ad56f26a546ee25d227acce33375c1c", "TransactionType": "EXECUTEHOLD" } } ], "encode": "JSON" } }
已修改批發 CBDC 模型的下列 API。
-
CreateAccount
- 此方法會為指定的使用者和記號建立帳戶。必須為任何需要記號的使用者建立帳戶。科目會追蹤餘額、保留餘額及交易歷史記錄。帳戶 ID 是透過串連資產類型和記號 ID,然後透過組織 ID 和使用者 ID 的串連建立 SHA-256 雜湊來形成。此方法只能由鏈碼的
Token Admin
呼叫。 func (t *Controller) CreateAccount(org_id string, user_id string, token_type string, application_groups []string, daily_limits ...account.AccountDailyLimits) (interface{}, error)
- 參數:
orgId
– 要建立帳戶之使用者的成員身分服務提供者 (MSP) ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。userId
– 使用者的使用者名稱或電子郵件 ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。tokenType: TokenType
– 記號的類型,必須是fungible
。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。daily_limits: DailyLimits
– 下列類型的 JSON 物件。
在此範例中,{ "max_daily_amount": 100000 "max_daily_transactions": 10000 }
max_daily_amount
值是每日可交易的記號數目上限,而max_daily_transactions
值是每日可完成的交易數目上限。endorsers: string[]
– 必須為交易背書的對等陣列 (例如peer1
、peer2
)。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "261c3da4bb6f1724bc8f674c7b001a9b986bc9900d0508363039424926b143ed", "payload": { "AssetType": "oaccount", "AccountId": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "UserId": "admin_user_cb", "OrgId": "CB", "TokenType": "fungible", "TokenId": "", "TokenName": "", "Balance": 0, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 0, "ApplicationGroups": [ "System_Admins" ], "MaxDailyAmount": 10000, "DailyAmount": 0, "MaxDailyTransactions": 100, "DailyTransactions": 0, "CurrentDate": "2024-12-09" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 246 } }
TypeScript 批發 CBDC 的 SDK 方法
-
setApplicationGroups
- 此方法會在 API 中指定之應用程式群組的帳戶詳細資訊中設定
application_groups
參數。 this.Ctx.Account.setApplicationGroups (account_id, application_groups)
- 參數:
account_id: string
– 帳戶的 ID。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "453821c7ffd477987ef8ccbd836b893969531ab768098cd4a99e3b89cd38a391", "payload": { "bapAccountVersion": 0, "assetType": "oaccount", "account_id": "oaccount~28ac774001f374064029d51af4fb67e26ea1ea9ef62828b7a72dbf3beb8efd8d", "user_id": "admin_user_cb", "org_id": "CB", "token_type": "fungible", "token_id": "", "token_name": "", "balance": 0, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "System_Admins" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 100, "daily_transactions": 0, "current_date": "2024-12-09T00:00:00.000Z" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 188 } }
-
getAllActiveAccounts
- 此方法會傳回與指定記號 ID 關聯的所有作用中帳戶。
this.Ctx.CBDCToken.getAllActiveAccounts(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "non_account_role_name": [ "token_admin" ], "role_name": null, "valueJson": { "bapAccountVersion": 0, "assetType": "oaccount", "account_id": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "user_id": "admin_user_cb", "org_id": "CB", "token_type": "fungible", "token_id": "USD", "token_name": "cbdc", "balance": 0, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "System_Admins" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 1000, "daily_transactions": 0, "current_date": "2024-11-20T00:00:00.000Z" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "non_account_role_name": [ "token_admin" ], "role_name": null, "valueJson": { "account_id": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "org_id": "CB", "user_id": "admin_user_cb", "token_id": "USD", "max_daily_amount": 10000, "max_daily_transactions": 1000 } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "non_account_role_name": [ "token_admin" ], "role_name": null, "valueJson": { "account_id": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "org_id": "CB", "user_id": "admin_user_cb", "token_id": "USD", "max_daily_amount": 10000, "max_daily_transactions": 1000 } } ], "encode": "JSON" } }
-
getAllSuspendedAccounts
- 此方法會傳回與指定記號 ID 相關聯的所有暫停帳戶。
this.Ctx.CBDCToken.getAllSuspendedAccounts(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "non_account_role_name": null, "role_name": null, "valueJson": { "assetType": "oaccount", "bapAccountVersion": 1, "account_id": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "user_id": "user1_fi1", "org_id": "FI1", "token_type": "fungible", "token_id": "USD", "token_name": "cbdc", "balance": 5, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "Org_Users" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 1000, "daily_transactions": 0, "current_date": "2024-11-20T00:00:00.000Z" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "non_account_role_name": null, "role_name": null, "valueJson": { "account_id": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "org_id": "FI1", "user_id": "user1_fi1", "token_id": "USD", "max_daily_amount": 10000, "max_daily_transactions": 1000 } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "key": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "non_account_role_name": null, "role_name": null, "valueJson": { "account_id": "oaccount~802bf8da5579c6103b2dddaa6c4385df8e722d639a18029e0e93d7a5d6f826d6", "org_id": "FI1", "user_id": "user1_fi1", "token_id": "USD" } } ], "encode": "JSON" } }
-
getBurnQuantity
- 此方法會傳回指定組織的燒錄記號總數量。
this.Ctx.CBDCToken.getBurnQuantity(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": { "burnt_quantity": 31 }, "encode": "JSON" } }
-
getActionHistory
- 此方法會擷取呼叫程式針對 mint、burn 及 transfer (issuance) 作業所進行之核准或拒絕的歷史記錄,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。
this.Ctx.CBDCToken.getActionHistory(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "from_account_id": "oaccount~0d7b3f73aea28065017ce8b79c0bb19256dc0cb475a0b2a85192bd110f69535c", "from_org_id": "CB", "from_user_id": "retirer_user_cb", "holding_id": "ohold~cbdc~USD~eaf6", "holding_status": "REJECT_BURN", "last_updated_time": "2024-11-26T21:43:22.000Z", "notary_account_id": null, "notary_org_id": null, "notary_user_id": null, "operation_id": null, "quantity": 3, "timetoexpiration": null, "to_account_id": "", "to_org_id": null, "to_user_id": null, "token_id": "USD", "token_name": null }, { "from_account_id": "oaccount~0d7b3f73aea28065017ce8b79c0bb19256dc0cb475a0b2a85192bd110f69535c", "from_org_id": "CB", "from_user_id": "retirer_user_cb", "holding_id": "ohold~cbdc~USD~0031", "holding_status": "REJECT_BURN", "last_updated_time": "2024-11-26T21:43:15.000Z", "notary_account_id": null, "notary_org_id": null, "notary_user_id": null, "operation_id": null, "quantity": 2, "timetoexpiration": null, "to_account_id": "", "to_org_id": null, "to_user_id": null, "token_id": "USD", "token_name": null } ], "encode": "JSON" } }
-
getPendingIssuance
- 此方法會擷取呼叫者被指派為核准者的所有待處理核發 (轉移) 交易,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。
this.Ctx.CBDCToken.getPendingIssuance(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "asset_type": "ONHOLD", "category": "category value", "from_account_id": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "from_org_id": "CB", "from_user_id": "creator_user_cb", "holding_id": "ohold~cbdc~USD~8e314", "notary_account_id": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "notary_org_id": "CB", "notary_user_id": "manager_user_cb", "operation_id": "8e314", "quantity": 10, "timetoexpiration": "0", "to_account_id": "oaccount~44b844deccc6c314e14b8b9b95b51db5c8de499dbdbd3def2a44ba54c899c142", "to_org_id": "FI1", "to_user_id": "officer_user1_fi1", "token_id": "USD", "token_name": "cbdc" }, { "asset_type": "ONHOLD", "category": "category value", "from_account_id": "oaccount~51e676d7182a02ea7418ef58a6d54ecfe3858ef40b4ffb3d859b320da3921594", "from_org_id": "CB", "from_user_id": "issuer_user_cb", "holding_id": "ohold~cbdc~USD~8e315", "notary_account_id": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "notary_org_id": "CB", "notary_user_id": "manager_user_cb", "operation_id": "8e315", "quantity": 10, "timetoexpiration": "0", "to_account_id": "oaccount~44b844deccc6c314e14b8b9b95b51db5c8de499dbdbd3def2a44ba54c899c142", "to_org_id": "FI1", "to_user_id": "officer_user1_fi1", "token_id": "USD", "token_name": "cbdc" } ], "encode": "JSON" } }
-
getPendingRequest
- 此方法會擷取指定類型的所有擱置中要求,其中呼叫者被指派為核准者。
this.Ctx.CBDCToken.getPendingRequest(token_id, request_type)
- 參數:
token_id: string
– 記號的 ID。request_type: string
– 交易類型。例如,mint
或burn
。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "valueJson": { "assetType": "ohold", "holding_id": "ohold~cbdc~USD~op123", "operation_id": "op123", "token_id": "USD", "token_name": "cbdc", "operation_type": "mint", "status": "pending", "from_account_id": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "to_account_id": "", "notary_account_id": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "quantity": 10, "time_to_expiration": "0", "category": "category value", "description": "description value" } } ], "encode": "JSON" } }
-
getTotalBalanceByCallerOrgId
- 此方法會擷取呼叫者組織的總結餘。
this.Ctx.CBDCToken.getTotalBalanceByCallerOrgId()
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "totalBalance": 704 } ], "encode": "JSON" } }
-
getTransactionWithBlockNumber
- 此方法會傳回指定之交易 ID 的交易詳細資訊。
this.Ctx.CBDCToken.getTransactionWithBlockNumber(token_id, transaction_id)
- 參數:
token_id: string
– 記號的 ID。transaction_id: string
– 交易的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "blockNo": 82, "key": "otransaction~24f391919a8837d654beaa7346148ea8b2b9704624aef482ce68078c485f5b1b", "metadata": null, "txnNo": 0, "value": null, "valueJson": { "assetType": "otransaction", "transaction_id": "otransaction~24f391919a8837d654beaa7346148ea8b2b9704624aef482ce68078c485f5b1b", "token_id": "USD", "from_account_id": "", "from_account_balance": 0, "from_account_onhold_balance": 0, "to_account_id": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "to_account_balance": 100, "to_account_onhold_balance": 0, "transaction_type": "REQUEST_MINT", "amount": 200, "timestamp": "2024-11-20T06:48:42.000Z", "number_of_sub_transactions": 0, "holding_id": "", "sub_transaction": "false", "description": "" } } ], "encode": "JSON" } }
批發 CBDC 模型已修改下列 SDK 方法。
-
createAccount
- 此方法會為指定的使用者和記號建立帳戶。必須為任何需要記號的使用者建立帳戶。科目會追蹤餘額、保留餘額及交易歷史記錄。帳戶 ID 是透過串連資產類型和記號 ID,然後透過組織 ID 和使用者 ID 的串連建立 SHA-256 雜湊來形成。
this.Ctx.Account.createAccount(org_id, user_id, token_type, application_groups, daily_limits)
- 參數:
orgId
– 要建立帳戶之使用者的成員身分服務提供者 (MSP) ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。userId
– 使用者的使用者名稱或電子郵件 ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。tokenType: TokenType
– 記號的類型,必須是fungible
。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。daily_limits: DailyLimits
– 下列類型的 JSON 物件。
在此範例中,{ "max_daily_amount": 100000 "max_daily_transactions": 10000 }
max_daily_amount
值是每日可交易的記號數目上限,而max_daily_transactions
值是每日可完成的交易數目上限。endorsers: string[]
– 必須為交易背書的對等陣列 (例如peer1
、peer2
)。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "453821c7ffd477987ef8ccbd836b893969531ab768098cd4a99e3b89cd38a391", "payload": { "bapAccountVersion": 0, "assetType": "oaccount", "account_id": "oaccount~28ac774001f374064029d51af4fb67e26ea1ea9ef62828b7a72dbf3beb8efd8d", "user_id": "admin_user_cb", "org_id": "CB", "token_type": "fungible", "token_id": "", "token_name": "", "balance": 0, "onhold_balance": 0, "onhold_burn_balance": 0, "application_groups": [ "System_Admins" ], "max_daily_amount": 10000, "daily_amount": 0, "max_daily_transactions": 100, "daily_transactions": 0, "current_date": "2024-12-09T00:00:00.000Z" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 188 } }
前往批發 CBDC 的 SDK 方法
-
SetApplicationGroups
- 此方法會在 API 中指定之應用程式群組的帳戶詳細資訊中設定
application_groups
參數。 t.Ctx.CbdcToken.SetApplicationGroups(account_id, application_groups)
- 參數:
account_id: string
– 帳戶的 ID。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "261c3da4bb6f1724bc8f674c7b001a9b986bc9900d0508363039424926b143ed", "payload": { "AssetType": "oaccount", "AccountId": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "UserId": "admin_user_cb", "OrgId": "CB", "TokenType": "fungible", "TokenId": "", "TokenName": "", "Balance": 0, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 0, "ApplicationGroups": [ "System_Admins" ], "MaxDailyAmount": 10000, "DailyAmount": 0, "MaxDailyTransactions": 100, "DailyTransactions": 0, "CurrentDate": "2024-12-09" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 246 } }
-
GetAllActiveAccounts
- 此方法會傳回與指定記號 ID 關聯的所有作用中帳戶。
t.Ctx.CbdcToken.GetAllActiveAccounts(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": "[\"token_admin\"]", "RoleName": null, "key": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "valueJson": { "AccountId": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "ApplicationGroups": [ "System_Issuers" ], "AssetType": "oaccount", "Balance": 0, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 0, "CurrentDate": "2024-11-21", "DailyAmount": 0, "DailyTransactions": 0, "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, "OrgId": "CB", "TokenId": "USD", "TokenName": "cbdc", "TokenType": "fungible", "UserId": "admin_user_cb" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": "[\"token_auditor\"]", "RoleName": null, "key": "oaccount~bd6262ffdf582675dd9b2506c1d5488864feef0b9e297a9a3322b7c683ad6214", "valueJson": { "AccountId": "oaccount~bd6262ffdf582675dd9b2506c1d5488864feef0b9e297a9a3322b7c683ad6214", "OrgId": "CB", "TokenId": "USD", "UserId": "auditor_user_cb", "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": "[\"token_admin\"]", "RoleName": null, "key": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "valueJson": { "AccountId": "oaccount~8db15b42910eeec401e1bf22c69dfdd11c820ecc26539ea03a3426fa25cb8c28", "OrgId": "CB", "TokenId": "USD", "UserId": "admin_user_cb" } } ], "encode": "JSON" } }
-
GetAllSuspendedAccounts
- 此方法會傳回與指定記號 ID 相關聯的所有暫停帳戶。
t.Ctx.CbdcToken.GetAllSuspendedAccounts(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值:
- 成功時,會出現包含使用者詳細資訊的訊息。輸出會根據使用者的角色而有所不同,如下列範例所示。
- 傳回值範例 (記號管理員、記號稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": null, "RoleName": "minter", "key": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "valueJson": { "AccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "ApplicationGroups": [ "System_Admins" ], "AssetType": "oaccount", "Balance": 140, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 8, "CurrentDate": "2024-11-21", "DailyAmount": 70, "DailyTransactions": 3, "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, "OrgId": "CB", "TokenId": "USD", "TokenName": "cbdc", "TokenType": "fungible", "UserId": "creator_user_cb" } } ], "encode": "JSON" } }
- 傳回值範例 (組織管理、組織稽核者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": null, "RoleName": "minter", "key": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "valueJson": { "AccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "OrgId": "CB", "TokenId": "USD", "UserId": "creator_user_cb", "MaxDailyAmount": 10000, "MaxDailyTransactions": 100, } } ], "encode": "JSON" } }
- 傳回值範例 (所有其他使用者):
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "NonAccountRoleName": null, "RoleName": "minter", "key": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "valueJson": { "AccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "OrgId": "CB", "TokenId": "USD", "UserId": "creator_user_cb" } } ], "encode": "JSON" } }
-
GetBurnQuantity
- 此方法會傳回指定組織的燒錄記號總數量。
t.Ctx.CbdcToken.GetBurnQuantity(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": { "BurnQuantity": 10 }, "encode": "JSON" } }
-
GetActionHistory
- 此方法會擷取呼叫程式針對 mint、burn 及 transfer (issuance) 作業所進行之核准或拒絕的歷史記錄,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。
t.Ctx.CbdcToken.GetActionHistory(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "FromAccountId": "oaccount~0d7b3f73aea28065017ce8b79c0bb19256dc0cb475a0b2a85192bd110f69535c", "FromOrgId": "CB", "FromUserId": "retirer_user_cb", "HoldingId": "ohold~cbdc~USD~6e1223", "HoldingStatus": "REJECT_BURN", "LastUpdatedTime": "2024-11-21T22:08:26Z", "NotaryAccountId": null, "NotaryOrgId": null, "NotaryUserId": null, "OperationId": null, "Quantity": 5, "TimeToExpiration": null, "ToAccountId": "", "ToOrgId": null, "ToUserId": null, "TokenId": "USD", "TokenName": null }, { "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "FromOrgId": "CB", "FromUserId": "creator_user_cb", "HoldingId": "ohold~cbdc~USD~hold2", "HoldingStatus": "RELEASEHOLD", "LastUpdatedTime": "2024-11-21T21:54:33Z", "NotaryAccountId": null, "NotaryOrgId": null, "NotaryUserId": null, "OperationId": null, "Quantity": 10, "TimeToExpiration": null, "ToAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "ToOrgId": "CB", "ToUserId": "creator_user_cb", "TokenId": "USD", "TokenName": null } ], "encode": "JSON" } }
-
GetPendingIssuance
- 此方法會擷取呼叫者被指派為核准者的所有待處理核發 (轉移) 交易,包括組織的詳細資料,以及相關帳戶的使用者 ID (寄件者、收件者及公證人)。
t.Ctx.CbdcToken.GetPendingIssuance(token_id)
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "AssetType": "ONHOLD", "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "FromOrgId": "CB", "FromUserId": "creator_user_cb", "HoldingId": "ohold~cbdc~USD~h123", "NotaryAccountId": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "NotaryOrgId": "CB", "NotaryUserId": "manager_user_cb", "OperationId": "h123", "Quantity": 10, "TimeToExpiration": "0", "ToAccountId": "oaccount~51e676d7182a02ea7418ef58a6d54ecfe3858ef40b4ffb3d859b320da3921594", "ToOrgId": "CB", "ToUserId": "issuer_user_cb", "TokenId": "USD", "TokenName": "cbdc" } ], "encode": "JSON" } }
-
GetPendingRequest
- 此方法會擷取指定類型的所有擱置中要求,其中呼叫者被指派為核准者。
t.Ctx.CbdcToken.GetPendingRequest(token_id, request_type)
- 參數:
token_id: string
– 記號的 ID。request_type: string
– 交易類型。例如,mint
或burn
。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "valueJson": { "AssetType": "ohold", "Category": "Category value", "Description": "Description value", "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "HoldingId": "ohold~cbdc~USD~8e1232", "NotaryAccountId": "oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8", "OperationId": "8e1232", "OperationType": "mint", "Quantity": 100, "Status": "pending", "TimeToExpiration": "0", "ToAccountId": "", "TokenId": "USD", "TokenName": "cbdc" } } ], "encode": "JSON" } }
-
GetTotalBalanceByCallerOrgId
- 此方法會擷取呼叫者組織的總結餘。
t.Ctx.CbdcToken.GetTotalBalanceByCallerOrgId()
- 參數:
token_id: string
– 記號的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "TotalBalance": 180 } ], "encode": "JSON" } }
-
GetTransactionWithBlockNumber
- 此方法會傳回指定之交易 ID 的交易詳細資訊。
t.Ctx.CbdcToken.GetTransactionWithBlockNumber(token_id, transaction_id)
- 參數:
token_id: string
– 記號的 ID。transaction_id: string
– 交易的 ID。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "payload": [ { "blockNo": 152, "key": "otransaction~eee2de20b4b042884da83e3b7b85d8532ad56f26a546ee25d227acce33375c1c", "metadata": null, "txnNo": 0, "value": null, "valueJson": { "Amount": 10, "AssetType": "otransaction", "Category": "Category value", "Description": "", "FromAccountBalance": 130, "FromAccountId": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0", "FromAccountOnHoldBalance": 10, "HoldingId": "ohold~cbdc~USD~hold1", "NumberOfSubTransactions": 0, "SubTransaction": "false", "SubTransactionType": "", "Timestamp": "2024-11-21T20:43:59Z", "ToAccountBalance": 10, "ToAccountId": "oaccount~51e676d7182a02ea7418ef58a6d54ecfe3858ef40b4ffb3d859b320da3921594", "ToAccountOnHoldBalance": 0, "TokenId": "USD", "TransactionId": "otransaction~eee2de20b4b042884da83e3b7b85d8532ad56f26a546ee25d227acce33375c1c", "TransactionType": "EXECUTEHOLD" } } ], "encode": "JSON" } }
批發 CBDC 模型已修改下列 SDK 方法。
-
CreateAccount
- 此方法會為指定的使用者和記號建立帳戶。必須為任何需要記號的使用者建立帳戶。科目會追蹤餘額、保留餘額及交易歷史記錄。帳戶 ID 是透過串連資產類型和記號 ID,然後透過組織 ID 和使用者 ID 的串連建立 SHA-256 雜湊來形成。
t.Ctx.Account.CreateAccount(org_id, user_id, token_type, application_groups, daily_limits...)
- 參數:
orgId
– 要建立帳戶之使用者的成員身分服務提供者 (MSP) ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。userId
– 使用者的使用者名稱或電子郵件 ID。ID 必須以數字或英文字母字元為開頭,而且可以包含英文字母、數字以及特殊字元,例如底線 (_)、句號 (.)、at 符號 (@) 以及連字號 (-)。tokenType: TokenType
– 記號的類型,必須是fungible
。application_groups: string[]
– 使用者 ID 所屬的應用程式群組清單,可定義使用者在 CBDC 應用程式中的關聯。daily_limits: DailyLimits
– 下列類型的 JSON 物件。
在此範例中,{ "max_daily_amount": 100000 "max_daily_transactions": 10000 }
max_daily_amount
值是每日可交易的記號數目上限,而max_daily_transactions
值是每日可完成的交易數目上限。endorsers: string[]
– 必須為交易背書的對等陣列 (例如peer1
、peer2
)。
- 傳回值範例:
{ "returnCode": "Success", "error": "", "result": { "txid": "261c3da4bb6f1724bc8f674c7b001a9b986bc9900d0508363039424926b143ed", "payload": { "AssetType": "oaccount", "AccountId": "oaccount~cdc6fa5e64bc29f700f99da69f980d8cbb768c7e1a11dd17274e75651f6afafe", "UserId": "admin_user_cb", "OrgId": "CB", "TokenType": "fungible", "TokenId": "", "TokenName": "", "Balance": 0, "BalanceOnHold": 0, "OnHoldBurnBalance": 0, "BapAccountVersion": 0, "ApplicationGroups": [ "System_Admins" ], "MaxDailyAmount": 10000, "DailyAmount": 0, "MaxDailyTransactions": 100, "DailyTransactions": 0, "CurrentDate": "2024-12-09" }, "encode": "JSON", "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009", "blockNumber": 246 } }