-
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- 用户的成员资格服务提供商 (membership service provider,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- 用户的成员资格服务提供商 (membership service provider,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- 用户的成员资格服务提供商 (membership service provider,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- 用户的成员资格服务提供商 (membership service provider,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- 用户的成员资格服务提供商 (membership service provider,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"
}
]
}