Métodos Go para Bond Marketplace

O chaincode do mercado de títulos inclui todos os métodos Go disponíveis no chaincode NFT ERC-1155 genérico. Os seguintes métodos adicionais que são específicos para o cenário de mercado de títulos também estão disponíveis.

Para obter mais informações sobre os métodos ERC-1155 genéricos, consulte Projeto de Token de Go do Andaime para ERC-1155 no Blockchain App Builder para Oracle Blockchain Platform.

Métodos Go para Bond Marketplace

PostToken
Este método pode ser chamado apenas por um criador de token. O método envia o token de título para listagem no marketplace. Quando um token é criado, seu status é inicialmente definido como created. Este método atualiza o status para posted. Os usuários podem executar o método getAllTokensWithFilter para recuperar todos os NFTs com um status posted.
func (t *Controller) PostToken(tokenId float64) (interface{}, error)
Parâmetros:
  • tokenId: float64 – O ID do token a ser publicado.
Exemplo de Valor de Retorno:
{
         "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
Este método pode ser chamado por qualquer titular da conta para comprar um título listado NFT. A compra transfere a NFT do título da conta do criador para a conta do chamador e transfere tokens CBDC da conta do chamador para a conta do criador. Por isso, o método deve ser executado no contexto de uma transação atômica. O método também verifica o processo de transferência, garantindo que o chaincode CBDC apropriado seja chamado com os orgId e userId corretos para a transferência. O orgId e o userId devem corresponder ao criador do token e o valor de transferência do token CBDC deve ser igual ao valor facial do token de título multiplicado pela quantidade que está sendo comprada.
func (t *Controller) PurchaseToken(tokenId float64, quantity float64, orderId string, additionalFees float64) (interface{}, error)
Parâmetros:
  • tokenId: float64 – O ID do token a ser comprado.
  • quantity: number – A quantidade de tokens a serem comprados.
  • orderId: string – O ID do pedido para a operação de compra.
  • additionalFees: number – As remunerações adicionais a serem adicionadas ao preço de compra.
Exemplo de Valor de Retorno:
{
   "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
Este método pode ser chamado apenas pelo criador ou administrador do token para pagar os juros ganhos no token de título. Esse método só pode ser chamado se a frequência de juros do token for mensal, trimestral ou anual. Os juros não podem ser pagos se a frequência dos juros estiver no vencimento. Os juros são calculados pelo chaincode com base na taxa de cupom do token. A operação de compra transfere tokens CBDC da conta do chamador para a conta do proprietário do título. Por isso, este método deve ser executado no contexto de uma transação atômica. O método também verifica o processo de transferência, garantindo que o chaincode CBDC apropriado seja chamado com os orgId e userId corretos para a transferência. O orgId e o userId devem corresponder ao proprietário do token, e o valor de transferência do token CBDC deve ser igual aos juros calculados pelo chaincode do título.
func (t *Controller) PayInterestEarned(orgId string, userId string, tokenId float64, orderId string, additionalFees float64) (interface{}, error)
Parâmetros:
  • orgId: string – O ID do provedor de serviços de associação (MSP) do usuário.
  • userId: string – O nome de usuário ou ID de e-mail do usuário.
  • tokenId: float64 – O ID do token.
  • orderId: string – O ID do pedido para a operação de compra.
Exemplo de Valor de Retorno:
{
   "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
Este método pode ser chamado apenas pelo proprietário do token para levantar uma solicitação para o resgate de tokens de títulos após o vencimento. Este método também envolve o cálculo do preço de resgate pelo chaincode. As solicitações de resgate só podem ser geradas na quantidade inteira do token de título que o usuário possui. Os usuários podem gerar várias solicitações de resgate com base em diferentes IDs de liquidação, mas apenas uma pode ser aprovada pelo criador do token.
func (t *Controller) RequestTokenRedemption(settlementId string, tokenId float64, orderId string, additionalFees float64) (interface{}, error)
Parâmetros:
  • settlementId: string – O ID da liquidação para a operação de resgate.
  • tokenId: float64 – O ID do token.
  • orderId: string – O ID do pedido para a operação de compra.
  • additionalFees: number – As remunerações adicionais a serem adicionadas ao preço de resgate.
Exemplo de Valor de Retorno:
{
         "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
Este método pode ser chamado apenas pelo criador do token para aprovar uma solicitação para o resgate de tokens de títulos. A operação de aprovação transfere a NFT do título da conta do proprietário (o usuário que emitiu a solicitação) para a conta do criador e transfere tokens CBDC do criador do título para a conta do proprietário. Por isso, este método deve ser executado no contexto de uma transação atômica. O método também verifica o processo de transferência, garantindo que o chaincode CBDC apropriado seja chamado com os orgId e userId corretos para a transferência. O orgId e o userId devem corresponder à conta do proprietário do token que gerou a solicitação de resgate, e o valor de transferência do token CBDC deve ser igual ao preço de resgate calculado que foi calculado pelo chaincode durante a geração da solicitação de resgate.
func (t *Controller) ApproveRedemption(fromOrgId string, fromUserId string, settlementId string, tokenId float64) (interface{}, error)
Parâmetros:
  • fromOrgId: string – O ID do provedor de serviços de associação (MSP) do usuário.
  • fromUserId: string – O nome de usuário ou ID de e-mail do usuário.
  • settlementId: string – O ID da liquidação para a operação de resgate.
  • tokenId: float64 – O ID do token.
Exemplo de Valor de Retorno:
{
   "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
O criador do token pode chamar esse método para rejeitar a solicitação de resgate. Os proprietários de token podem gerar uma solicitação de resgate novamente usando um ID de liquidação diferente.
func (t *Controller) RejectRedemption(fromOrgId string, fromUserId string, settlementId string, tokenId float64) (interface{}, error)
Parâmetros:
  • fromOrgId: string – O ID do provedor de serviços de associação (MSP) do usuário.
  • fromUserId: string – O nome de usuário ou ID de e-mail do usuário.
  • settlementId: string – O ID da liquidação para a operação de resgate.
  • tokenId: float64 – O ID do token.
Exemplo de Valor de Retorno:
{
   "status":"success",
   "msg":"Successfully rejected the token approval request"
}
GetAllTokensWithFilter
O administrador pode chamar esse método get para extrair todos os tokens filtrados por status, CREATED ou POSTED.
func (t *Controller) GetAllTokensWithFilters(status string, pageSize int32, bookmark string)
Parâmetros:
  • status: string – O status do token, que pode ser CREATED ou POSTED.
  • pageSize: number – O tamanho da página do resultado retornado.
  • bookmark: string – O marcador do resultado retornado.
Exemplo de Valor de Retorno:
[ {

               "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
Qualquer titular de conta pode chamar esse método get para obter os detalhes de todas as solicitações de aprovação de token (solicitações de resgate) que eles fizeram.
func (t *Controller) GetTokenApprovalRequestByUser(status string) (interface{}, error)
Parâmetros:
  • status: string – O status da solicitação, que pode ser PENDING, REJECTED ou APPROVED.
Exemplo de Valor de Retorno:
[
   {
      "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
Qualquer titular de conta pode chamar esse método get para obter os detalhes de todas as solicitações de aprovação de token (solicitações de resgate) que eles fizeram.
func (t *Controller) GetTokenApprovalRequestForUserByStatus(status string) (interface{}, error)
Parâmetros:
  • status: string – O status da solicitação, que pode ser PENDING, REJECTED ou APPROVED.
Exemplo de Valor de Retorno:
[
   {
      "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
Qualquer titular de conta pode chamar esse método de obtenção para obter um resumo da conta que inclui os detalhes dos tokens comprados ou resgatados e o preço de compra e o preço de resgate.
func (t *Controller) GetAccountBondSummary(orgId string, userId string) (interface{}, error)
Parâmetros:
  • orgId: string – O ID do provedor de serviços de associação (MSP) do usuário.
  • userId: string – O nome de usuário ou ID de e-mail do usuário.
Exemplo de Valor de Retorno:
{

   "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
Qualquer titular de conta pode chamar esse método get para obter um resumo da conta que inclui detalhes de tokens comprados ou resgatados e o preço de compra e o preço de resgate. Esse método pode retornar resultados com paginação baseada em valores de tamanho de página e marcador, e também filtrada por hora de início e hora de término.
func (t *Controller) GetAccountBondSummaryWithPagination(orgId string, userId string, pageSize int32, bookmark string) (interface{}, error)
Parâmetros:
  • orgId: string – O ID do provedor de serviços de associação (MSP) do usuário.
  • userId: string – O nome de usuário ou ID de e-mail do usuário.
  • pageSize: number – O tamanho da página do resultado retornado.
  • bookmark: string – O marcador do resultado retornado.
Exemplo de Valor de Retorno:
{

   "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"
      }
   ]
}

Métodos do Go SDK para o Bond Marketplace

PayInterest
O criador ou administrador do token pode chamar esse método para pagar os juros ganhos em um token de título. Esse método só pode ser chamado se a frequência de juros do token for mensal, trimestral ou anual. Os juros não podem ser pagos se a frequência dos juros estiver no vencimento. Os juros são calculados pelo próprio chaincode com base na taxa de cupom do token. A operação de compra transfere tokens CBDC da conta do chamador para a conta do proprietário do título. Por isso, este método deve ser executado no contexto de uma transação atômica. O método também verifica o processo de transferência, garantindo que o chaincode CBDC apropriado seja chamado com os orgId e userId corretos para a transferência. O orgId e o userId devem corresponder ao proprietário do token, e o valor de transferência do token CBDC deve ser igual aos juros calculados pelo chaincode do título.
t.Ctx.ERC1155AccountBondSummary.PayInterestEarned(userAccountId, tokenId, orderId, additionalFees)
Parâmetros:
  • userAccountId: string – O ID da conta do usuário.
  • tokenId: string – O ID do token.
  • orderId: string – O ID do pedido para a operação de compra.
Exemplo de Valor de Retorno:
{
         "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"
         "InterestEarned": 11,
         "InterestEarnedDate": "2024-12-02T00:00:00.000Z"

}
RequestTokenRedemption
Este método pode ser chamado apenas pelo proprietário do token para levantar uma solicitação para o resgate de tokens de títulos após o vencimento. Este método também envolve o cálculo do preço de resgate pelo chaincode. As solicitações de resgate só podem ser geradas na quantidade inteira do token de título que o usuário possui. Os usuários podem gerar várias solicitações de resgate com base em diferentes IDs de liquidação, mas apenas uma pode ser aprovada pelo criador do token.
t.Ctx.ERC1155TokenApproval.RequestTokenRedemption(callerUserAccountId, settlementId, tokenId, orderId, quantity, additionalFees)
Parâmetros:
  • callerUserAccountId: string – O ID da conta do usuário.
  • settlementId: string – O ID da liquidação para a operação de resgate.
  • tokenId: string – O ID do token.
  • orderId: string – O ID do pedido para a operação de compra.
  • additionalFees: number – As remunerações adicionais a serem adicionadas ao preço de resgate.
Exemplo de Valor de Retorno:
{
         "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
Este método pode ser chamado apenas pelo criador do token para aprovar uma solicitação para o resgate de tokens de títulos. A operação de aprovação transfere a NFT do título da conta do proprietário (o usuário que emitiu a solicitação) para a conta do criador e transfere tokens CBDC do criador do título para a conta do proprietário. Por isso, este método deve ser executado no contexto de uma transação atômica. O método também verifica o processo de transferência, garantindo que o chaincode CBDC apropriado seja chamado com os orgId e userId corretos para a transferência. O orgId e o userId devem corresponder à conta do proprietário do token que gerou a solicitação de resgate, e o valor de transferência do token CBDC deve ser igual ao preço de resgate calculado que foi calculado pelo chaincode durante a geração da solicitação de resgate.
t.Ctx.ERC1155TokenApproval.ApproveTokenApprovalRequest(fromUserAccountId, settlementId, tokenId)
Parâmetros:
  • fromUserAccountId: string – O ID da conta do usuário.
  • settlementId: string – O ID da liquidação para a operação de resgate.
  • tokenId: string – O ID do token.
Exemplo de Valor de Retorno:
{
   "status":"success",
   "msg":"Successfully approved the token approval request"
}
RejectRedemption
O criador do token pode chamar esse método para rejeitar a solicitação de resgate. Os proprietários de token podem gerar uma solicitação de resgate novamente usando um ID de liquidação diferente.
t.Ctx.ERC1155TokenApproval.RejectTokenApprovalRequest(fromUserAccountId, settlementId, tokenId)
Parâmetros:
  • fromOrgId: string – O ID do provedor de serviços de associação (MSP) do usuário.
  • fromUserId: string – O nome de usuário ou ID de e-mail do usuário.
  • settlementId: string – O ID da liquidação para a operação de resgate.
  • tokenId: string – O ID do token.
Exemplo de Valor de Retorno:
{
   "status":"success",
   "msg":"Successfully rejected the token approval request"
}
GetAllTokensWithFilter
O administrador pode chamar esse método get para extrair todos os tokens filtrados por status, CREATED ou POSTED.
t.Ctx.ERC1155Token.GetAllTokensWithFilters(status, pageSize, bookmark)
Parâmetros:
  • status: string – O status do token, que pode ser CREATED ou POSTED.
  • pageSize: number – O tamanho da página do resultado retornado.
  • bookmark: string – O marcador do resultado retornado.
Exemplo de Valor de Retorno:
[ {

               "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
Qualquer titular de conta pode chamar esse método get para obter os detalhes de todas as solicitações de aprovação de token (solicitações de resgate) que eles fizeram.
t.Ctx.ERC1155TokenApproval.GetAllTokenApprovalRequestByUserByStatus(status)
Parâmetros:
  • status: string – O status da solicitação, que pode ser PENDING, REJECTED ou APPROVED.
Exemplo de Valor de Retorno:
[
   {
      "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
Qualquer titular de conta pode chamar esse método get para obter os detalhes de todas as solicitações de aprovação de token (solicitações de resgate) que eles fizeram.
t.Ctx.ERC1155TokenApproval.GetAllTokenApprovalRequestForUserByStatus(status)
Parâmetros:
  • status: string – O status da solicitação, que pode ser PENDING, REJECTED ou APPROVED.
Exemplo de Valor de Retorno:
[
   {
      "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
Qualquer titular de conta pode chamar esse método de obtenção para obter um resumo da conta que inclui os detalhes dos tokens comprados ou resgatados e o preço de compra e o preço de resgate.
t.Ctx.ERC1155AccountBondSummary.GetAllAccountBondSummary(userAccountId)
Parâmetros:
  • userAccountId: string – O ID da conta do usuário.
Exemplo de Valor de Retorno:
{

   "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
Qualquer titular de conta pode chamar esse método get para obter um resumo da conta que inclui detalhes de tokens comprados ou resgatados e o preço de compra e o preço de resgate. Esse método pode retornar resultados com paginação baseada em valores de tamanho de página e marcador, e também filtrada por hora de início e hora de término.
t.Ctx.ERC1155AccountBondSummary.GetAllAccountBondSummaryWithPagination(userAccountId, pageSize, bookmark)
Parâmetros:
  • userAccountId: string – O ID da conta do usuário.
  • pageSize: number – O tamanho da página do resultado retornado.
  • bookmark: string – O marcador do resultado retornado.
Exemplo de Valor de Retorno:
{

   "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"
      }
   ]
}