-
postToken
- 權杖建立者只能呼叫此方法。此方法會送出在市集中列出的連結記號。建立記號時,其狀態一開始會設為
created。此方法會將狀態更新為 posted。使用者可以執行 getAllTokensWithFilter 方法來擷取所有狀態為 posted 的 NFT。
public async postToken(tokenId: number)
- 參數:
tokenId: number – 要張貼之記號的 ID。
- 傳回值範例:
{
"isValid":true,
"payload":{
"tokenMetadata":{
"ISIN":"ISIN value",
"Segment":"Segment value",
"Issuer":"Issuer value",
"FaceValue":10,
"IssueSize":999,
"CouponRate":10,
"InterestPaymentType":"simple",
"InterestFrequency":"monthly",
"IssueDate":"2023-03-28T15:16:36.000Z",
"MaturityDate":"2023-03-28T15:16:36.000Z"
},
"assetType":"otoken",
"events":true,
"tokenId":"1",
"tokenName":"bond",
"tokenDesc":"tokenDesc value",
"tokenStandard":"erc1155+",
"tokenType":"nonfungible",
"tokenUnit":"fractional",
"behaviors":[
"divisible",
"mintable",
"transferable",
"burnable",
"roles"
],
"roles":{
"minter_role_name":"minter",
"burner_role_name":"burner"
},
"mintable":{
"max_mint_quantity":0
},
"quantity":100,
"createdBy":"oaccount~276bcf1324b1ad1e493e22432db3b39f7a4b9bb17b8525c0391ea3ba36138e00",
"creationDate":"2024-12-02T12:42:09.000Z",
"divisible":{
"decimal":0
},
"isBurned":false,
"isLocked":false,
"tokenUri":"tokenUri value",
"status":"created"
},
"message":"Successfully updated asset with ID bond1"
}
-
purchaseToken
- 任何帳戶持有人皆可呼叫此方法,以購買列出的債券 NFT。購買會將債券 NFT 從建立者的帳戶轉移至呼叫者的帳戶,並將 CBDC 權杖從呼叫者的帳戶轉移至建立者的帳戶。因此,必須在單元交易的相關資訊環境中執行方法。該方法還會驗證轉移程序,確保使用正確的
orgId 和 userId 呼叫適當的 CBDC 鏈碼進行轉移。orgId 和 userId 必須對應權杖建立者,且 CBDC 權杖傳輸值必須等於債券權杖的面值乘以購買的數量。
public async purchaseToken(tokenId: number, quantity: number, orderId: string, additionalFees: number)
- 參數:
tokenId: number – 要購買之記號的 ID。
quantity: number – 要購買的權杖數量。
orderId: string – 採購作業的訂單 ID。
additionalFees: number – 要新增至購買價格的額外費用。
- 傳回值範例:
{
"returnCode":"Success",
"error":"",
"result":{
"transactions":[
{
"channel":"test",
"chaincode":"BondMarketplace",
"txstatus":"Committed",
"prepare":{
"txid":"e969f962df5efda2ea6287380e308cc974efd79dfff3567840ed3844bf936160"
},
"commit":{
"txid":"5544e928d3242291fb39189e8329679a9c81d61d6f72db60ca89135cd20fffef"
},
"rollback":{
}
},
{
"channel":"cbdctest",
"chaincode":"cbdc",
"txstatus":"Committed",
"prepare":{
"txid":"1245885b1a0c7f12c41fa2f2905549b8a5f37ab3a5e094b9dca122cb0611a117"
},
"commit":{
"txid":"3c83e20c7d470cdc9c1b0e2e0ea8d9962d58ada8d1b8f0d2606c8aa1f0ae7741"
},
"rollback":{
}
}
],
"lrc":{
},
"globalStatus":"Success",
"globalTxid":"761bb7cc-1d66-4645-aeb2-50e4dbd23d83",
"txStartTime":"2024-12-05T12:01:21.881988035Z"
}
}
-
payInterest
- 只有權杖建立者或管理員可以呼叫此方法,以支付債券權杖所賺取的利息。權杖的利息頻率為每月、每季或每年時,才能呼叫此方法。如果利息頻率為到期,則無法支付利息。利息由鏈碼根據權杖的息票利率計算。採購作業會將 CBDC 權杖從來電者帳戶轉移至債券擁有者的帳戶。因此,此方法必須在單元交易的相關資訊環境中執行。此方法還會驗證轉移程序,確保使用正確的
orgId 和 userId 來呼叫適當的 CBDC 鏈碼以進行轉移。orgId 和 userId 必須對應記號擁有者,且 CBDC 記號傳輸值必須等於債券鏈碼所計算的利息。
public async payInterest(orgId: string, userId: string, tokenId: number, orderId: string)
- 參數:
orgId: string – 使用者的成員服務提供者 (MSP) ID。
userId: string – 使用者的使用者名稱或電子郵件 ID。
tokenId: number – 記號的 ID。
orderId: string – 採購作業的訂單 ID。
- 傳回值範例:
{
"returnCode":"Success",
"error":"",
"result":{
"transactions":[
{
"channel":"test",
"chaincode":"BondMarketplace",
"txstatus":"Committed",
"prepare":{
"txid":"e969f962df5efda2ea6287380e308cc974efd79dfff3567840ed3844bf936160"
},
"commit":{
"txid":"5544e928d3242291fb39189e8329679a9c81d61d6f72db60ca89135cd20fffef"
},
"rollback":{
}
},
{
"channel":"cbdctest",
"chaincode":"cbdc",
"txstatus":"Committed",
"prepare":{
"txid":"1245885b1a0c7f12c41fa2f2905549b8a5f37ab3a5e094b9dca122cb0611a117"
},
"commit":{
"txid":"3c83e20c7d470cdc9c1b0e2e0ea8d9962d58ada8d1b8f0d2606c8aa1f0ae7741"
},
"rollback":{
}
}
],
"lrc":{
},
"globalStatus":"Success",
"globalTxid":"761bb7cc-1d66-4645-aeb2-50e4dbd23d83",
"txStartTime":"2024-12-05T12:01:21.881988035Z"
}
}
-
requestTokenRedemption
- 只有權杖擁有者才能呼叫此方法,以提出在到期後贖回債券權杖的要求。此方法也涉及依鏈碼計算贖回價格。兌換要求只能針對使用者所擁有之連結權杖的全部數量提出。使用者可以根據不同的結算 ID 提出多個兌換要求,但單詞建立者只能核准一個。
public async requestTokenRedemption(settlementId: string, tokenId: number, orderId: string, additionalFees: number)
- 參數:
settlementId: string – 兌換作業的結算 ID。
tokenId: number – 記號的 ID。
orderId: string – 採購作業的訂單 ID。
additionalFees: number – 要新增至兌換價格的額外費用。
- 傳回值範例:
{
"tokenName":"bond",
"assetType":"otokenApproval",
"id":"otokenApproval~9e006057ac96ae997e3964531b1a08ad2316555701c7fe9ec7b88e38e20892bf",
"settlementId":"op4",
"userBondDetailsId":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op4",
"fromAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"toAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"tokenId":"1",
"quantity":1,
"status":"PENDING",
"orderId":"op4",
"redeemPrice":11
}
-
approveTokenRedemption
- 只有權杖建立者可以呼叫此方法,以核准贖回債券權杖的要求。核准作業會將債券 NFT 從擁有者的帳戶 (提出要求的使用者) 轉移至建立者的帳戶,並將債券建立者的 CBDC 權杖轉移至擁有者的帳戶。因此,必須在單元交易的相關資訊環境中執行此方法。此方法還會驗證轉移程序,確保使用正確的
orgId 和 userId 來呼叫適當的 CBDC 鏈碼以進行轉移。orgId 與 userId 必須對應提出贖回要求的權杖擁有者的帳戶,且 CBDC 權杖移轉值必須等於在提出贖回要求時由鏈碼計算的兌換價格。
public async approveRedemption(fromOrgId: string, fromUserId: string, settlementId: string, tokenId: number)
- 參數:
fromOrgId: string – 使用者的成員服務提供者 (MSP) ID。
fromUserId: string – 使用者的使用者名稱或電子郵件 ID。
settlementId: string – 兌換作業的結算 ID。
tokenId: number – 記號的 ID。
- 傳回值範例:
{
"returnCode":"Success",
"error":"",
"result":{
"transactions":[
{
"channel":"test",
"chaincode":"BondMarketplace",
"txstatus":"Committed",
"prepare":{
"txid":"e969f962df5efda2ea6287380e308cc974efd79dfff3567840ed3844bf936160"
},
"commit":{
"txid":"5544e928d3242291fb39189e8329679a9c81d61d6f72db60ca89135cd20fffef"
},
"rollback":{
}
},
{
"channel":"cbdctest",
"chaincode":"cbdc",
"txstatus":"Committed",
"prepare":{
"txid":"1245885b1a0c7f12c41fa2f2905549b8a5f37ab3a5e094b9dca122cb0611a117"
},
"commit":{
"txid":"3c83e20c7d470cdc9c1b0e2e0ea8d9962d58ada8d1b8f0d2606c8aa1f0ae7741"
},
"rollback":{
}
}
],
"lrc":{
},
"globalStatus":"Success",
"globalTxid":"761bb7cc-1d66-4645-aeb2-50e4dbd23d83",
"txStartTime":"2024-12-05T12:01:21.881988035Z"
}
}
-
rejectRedemption
- 權杖建立者可以呼叫此方法來拒絕兌換要求。權杖擁有者可以使用不同的結算 ID 再次提出贖回要求。
public async rejectRedemption(fromOrgId: string, fromUserId: string, settlementId: string, tokenId: number)
- 參數:
fromOrgId: string – 使用者的成員服務提供者 (MSP) ID。
fromUserId: string – 使用者的使用者名稱或電子郵件 ID。
settlementId: string – 兌換作業的結算 ID。
tokenId: number – 記號的 ID。
- 傳回值範例:
{
"status":"success",
"msg":"Successfully rejected the token approval request"
}
-
getAllTokensWithFilters
- 管理員可以呼叫此 get 方法,擷取依狀態篩選的所有記號 (
CREATED 或 POSTED)。
public async getAllTokensWithFilters(status: string, pageSize: number, bookmark: string)
- 參數:
status: string – 記號的狀態,可以是 CREATED 或 POSTED。
pageSize: number – 傳回之結果的頁面大小。
bookmark: string – 傳回之結果的書籤。
- 傳回值範例:
[{
"tokenMetadata":{
"ISIN":"ISIN value",
"Segment":"Segment value",
"Issuer":"Issuer value",
"FaceValue":10,
"IssueSize":999,
"CouponRate":10,
"InterestPaymentType":"simple",
"InterestFrequency":"monthly",
"IssueDate":"2023-03-28T15:16:36.000Z",
"MaturityDate":"2023-03-28T15:16:36.000Z"
},
"assetType":"otoken",
"events":true,
"tokenId":"1",
"tokenName":"bond",
"tokenDesc":"tokenDesc value",
"tokenStandard":"erc1155+",
"tokenType":"nonfungible",
"tokenUnit":"fractional",
"behaviors":[
"divisible",
"mintable",
"transferable",
"burnable",
"roles"
],
"roles":{
"minter_role_name":"minter",
"burner_role_name":"burner"
},
"mintable":{
"max_mint_quantity":0
},
"quantity":100,
"createdBy":"oaccount~276bcf1324b1ad1e493e22432db3b39f7a4b9bb17b8525c0391ea3ba36138e00",
"creationDate":"2024-12-02T12:42:09.000Z",
"divisible":{
"decimal":0
},
"isBurned":false,
"isLocked":false,
"tokenUri":"tokenUri value",
"status":"posted"
}
]
-
getTokenApprovalRequestByUser
- 任何帳戶持有人都可以呼叫此 get 方法,以取得他們提出的所有權杖核准要求 (兌換要求) 的詳細資料。
public async getTokenApprovalRequestByUser(status: string)
- 參數:
status: string – 要求的狀態,可以是 PENDING、REJECTED 或 APPROVED。
- 傳回值範例:
[
{
"tokenName":"bond",
"assetType":"otokenApproval",
"id":"otokenApproval~5b2a94283ae95e3d6e5b76ffd6f75b7bff231e4df270a82cdc1f6badd17dea4b",
"settlementId":"op1",
"userBondDetailsId":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op1",
"fromAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"toAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"tokenId":"1",
"quantity":2,
"status":"APPROVED",
"orderId":"op1",
"redeemPrice":1,
"purchasedPrice":11,
"interestEarned":0
},
{
"tokenName":"bond",
"assetType":"otokenApproval",
"id":"otokenApproval~fdf28b2d271ac9c0fbd94a2dedbf365728c77795f3e931e5a4a2dcf48039a989",
"settlementId":"op3",
"userBondDetailsId":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op3",
"fromAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"toAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"tokenId":"1",
"quantity":1,
"status":"APPROVED",
"orderId":"op3",
"redeemPrice":11,
"purchasedPrice":11,
"interestEarned":0
}
]
-
getTokenApprovalRequestForUserByStatus
- 任何帳戶持有人都可以呼叫此 get 方法,以取得他們提出的所有權杖核准要求 (兌換要求) 的詳細資料。
public async getTokenApprovalRequestForUserByStatus(status: string)
- 參數:
status: string – 要求的狀態,可以是 PENDING、REJECTED 或 APPROVED。
- 傳回值範例:
[
{
"tokenName":"bond",
"assetType":"otokenApproval",
"id":"otokenApproval~5b2a94283ae95e3d6e5b76ffd6f75b7bff231e4df270a82cdc1f6badd17dea4b",
"settlementId":"op1",
"userBondDetailsId":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op1",
"fromAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"toAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"tokenId":"1",
"quantity":2,
"status":"APPROVED",
"orderId":"op1",
"redeemPrice":1,
"purchasedPrice":11,
"interestEarned":0
},
{
"tokenName":"bond",
"assetType":"otokenApproval",
"id":"otokenApproval~fdf28b2d271ac9c0fbd94a2dedbf365728c77795f3e931e5a4a2dcf48039a989",
"settlementId":"op3",
"userBondDetailsId":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op3",
"fromAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"toAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"tokenId":"1",
"quantity":1,
"status":"APPROVED",
"orderId":"op3",
"redeemPrice":11,
"purchasedPrice":11,
"interestEarned":0
}
]
-
getAccountBondSummary
- 任何帳戶持有人皆可呼叫此取得方法以取得帳戶摘要,其中包含已購買或已兌換權杖的明細,以及購買價格與兌換價格。
public async getAccountBondSummary(orgId: string, userId: string)
- 參數:
orgId: string – 使用者的成員服務提供者 (MSP) ID。
userId: string – 使用者的使用者名稱或電子郵件 ID。
- 傳回值範例:
{
"userAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"orgId":"BondMPTest",
"userId":"u10",
"accountSummary":[
{
"purchasedQuantity":1,
"assetType":"oUserBondDetails",
"id":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op1",
"tokenId":"1",
"status":"Redeemed",
"purchasedAmount":11,
"purchasedDate":"2024-12-02T00:00:00.000Z",
"purchasedFromAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"orderId":"op1"
"redeemPrice":11,
"quantityRedeem":1,
"redeemStatus":"REJECTED"
},
{
"purchasedQuantity":1,
"assetType":"oUserBondDetails",
"id":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op2",
"tokenId":"1",
"status":"Purchased",
"purchasedAmount":11,
"purchasedDate":"2024-12-02T00:00:00.000Z",
"purchasedFromAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"orderId":"op2",
"redeemPrice":11,
"quantityRedeem":1,
"redeemStatus":"APPROVED"
}
]
}
-
getAccountBondSummaryWithPagination
- 任何帳戶持有人皆可呼叫此取得方法,以取得帳戶摘要,其中包含已購買或已兌換權杖的明細,以及購買價格與兌換價格。此方法可以根據分頁大小和書籤值傳回結果,也可以依開始時間和結束時間篩選。
public async getAccountBondSummaryWithPagination(orgId: string, userId: string, pageSize: number, bookmark?: string)
- 參數:
orgId: string – 使用者的成員服務提供者 (MSP) ID。
userId: string – 使用者的使用者名稱或電子郵件 ID。
pageSize: number – 傳回之結果的頁面大小。
bookmark: string – 傳回之結果的書籤。
- 傳回值範例:
{
"userAccountId":"ouaccount~df36ebaeb728c7768c0d5a3ecab435985c506ff57fd582212029b6f3c9cabf14",
"orgId":"BondMPTest",
"userId":"u10",
"accountSummary":[
{
"purchasedQuantity":1,
"assetType":"oUserBondDetails",
"id":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op1",
"tokenId":"1",
"status":"Redeemed",
"purchasedAmount":11,
"purchasedDate":"2024-12-02T00:00:00.000Z",
"purchasedFromAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"orderId":"op1"
"redeemPrice":11,
"quantityRedeem":1,
"redeemStatus":"REJECTED"
},
{
"purchasedQuantity":1,
"assetType":"oUserBondDetails",
"id":"ouserbonddetails~ed3aaa9979bfe6302dcc83b1b903bd383fda60ff17747ca25af3369e26289747~bond1~op2",
"tokenId":"1",
"status":"Purchased",
"purchasedAmount":11,
"purchasedDate":"2024-12-02T00:00:00.000Z",
"purchasedFromAccountId":"ouaccount~e76f696c0d6c626b24d35b3ac21de377a6da24c1bfdab1411f6702a507003a15",
"orderId":"op2",
"redeemPrice":11,
"quantityRedeem":1,
"redeemStatus":"APPROVED"
}
]
}