Metodi di contratto Marketplace obbligazioni

Il contratto di mercato obbligazionario include tutti i metodi disponibili nel contratto NFT ERC-1155 esteso e metodi aggiuntivi specifici per lo scenario di mercato obbligazionario.

Solidità - Metodi generati automaticamente

L'asset del mercato obbligazionario si basa sullo standard ERC-1155 esteso e supporta tutti i metodi generici per tale standard. Per ulteriori informazioni sui metodi generici ERC-1155, vedere API per gli asset digitali.
postToken
Questo metodo sottomette un token obbligazionario per l'inserimento nell'elenco nel marketplace. Questo metodo può essere chiamato solo da un creatore di token. Quando viene creato un token, il relativo stato viene inizialmente impostato su created. Questo metodo aggiorna lo stato in posted.
function postToken(uint256 tokenId) public
Parametri:
  • tokenId: uint256: l'ID del token da inviare.
purchaseToken
Questo metodo acquista un'obbligazione quotata NFT, trasferendola dal conto del creatore al conto del chiamante e trasferendo i token CBDC dall'account del chiamante all'account del creatore. Questo metodo può essere chiamato da qualsiasi titolare di conto.
Questo metodo deve essere eseguito nel contesto di una transazione atomica. Nella versione corrente, l'atomicità deve essere gestita in una singola rete Besu di Oracle Blockchain Platform. In altre parole, i contratti CBDC e obbligazioni devono far parte della stessa rete Besu di Oracle Blockchain Platform. L'indirizzo del contratto del token CBDC deve essere impostato chiamando il metodo setTokenContract. Il metodo purchaseToken calcola automaticamente il valore di trasferimento del token CBDC, che è uguale al valore nominale del token obbligazionario moltiplicato per la quantità acquistata.
function purchaseToken(
        address from,
        address to,
        uint256 tokenId,
        uint256 quantity,
        uint256 additionalFees,
        string calldata orderId
    ) public
Parametri:
  • from: address: l'indirizzo wallet del proprietario del token.
  • to: address: l'indirizzo del wallet del destinatario.
  • tokenId: uint256 – L'ID del token da acquistare.
  • quantity: uint256 – La quantità di token da acquistare.
  • additionalFees: uint256 – I corrispettivi aggiuntivi da aggiungere al prezzo di acquisto.
  • orderId: string – L'ID dell'ordine per l'operazione di acquisto.
payInterest
Questo metodo paga gli interessi maturati su un token obbligazionario. Può essere chiamato solo dal creatore del token. La frequenza di interesse del token deve essere mensile, trimestrale o annuale. Gli interessi non possono essere pagati se la frequenza degli interessi è alla scadenza. L'interesse viene calcolato dal contratto in base al tasso coupon del token.
Poiché l'operazione di acquisto trasferisce i token CBDC dal conto del chiamante al conto del proprietario dell'obbligazione, questo metodo deve essere eseguito nel contesto di una transazione atomica. Nella versione corrente, l'atomicità deve essere gestita in una singola rete Besu di Oracle Blockchain Platform. In altre parole, i contratti CBDC e obbligazioni devono far parte della stessa rete Besu di Oracle Blockchain Platform. L'indirizzo del contratto del token CBDC deve essere impostato chiamando il metodo setTokenContract.
function payInterest(address userAddress, uint256 tokenId) public
Parametri:
  • userAddress: address: l'indirizzo wallet dell'utente.
  • tokenId: uint256: l'ID del token.
requestTokenRedemption
Questo metodo solleva una richiesta di riscatto dei token obbligazionari dopo la scadenza. Può essere chiamato solo dal proprietario del token. Questo metodo viene utilizzato anche per calcolare il prezzo di rimborso in base al contratto. Le richieste di riscatto possono essere generate solo sull'intera quantità del token obbligazionario di proprietà dell'utente. Gli utenti possono generare più richieste di riscatto in base a ID liquidazione diversi, ma solo una può essere approvata dall'autore del token.
function requestTokenRedemption(
        string calldata settlementId,
        uint256 tokenId,
        string calldata orderId,
        uint256 additionalFees
    ) public
Parametri:
  • settlementId: string - L'ID liquidazione dell'operazione di rimborso.
  • tokenId: uint256: l'ID del token.
  • additionalFees: uint256 – I costi aggiuntivi da aggiungere al prezzo di rimborso.
  • orderId: string – L'ID dell'ordine per l'operazione di acquisto.
approveTokenRedemption
Questo metodo approva una richiesta di riscatto dei token obbligazionari. Può essere chiamato solo dal creatore del token.
Poiché l'operazione di riscatto trasferisce l'NFT dell'obbligazione dal conto del proprietario (l'utente che ha generato la richiesta) al conto del creatore, questo metodo deve essere eseguito nel contesto di una transazione atomica. Nella versione corrente, l'atomicità deve essere gestita in una singola rete Besu di Oracle Blockchain Platform. In altre parole, i contratti CBDC e obbligazioni devono far parte della stessa rete Besu di Oracle Blockchain Platform. L'indirizzo del contratto del token CBDC deve essere impostato chiamando il metodo setTokenContract.
function approveTokenRedemption(
        address fromAddress,
        string calldata settlementId,
        uint256 tokenId
    ) public
Parametri:
  • fromAddress: address: l'indirizzo wallet dell'utente.
  • settlementId: string: l'ID liquidazione dell'operazione di rimborso.
  • tokenId: uint256: l'ID del token.
rejectTokenRedemption
Questo metodo rifiuta una richiesta di riscatto dei token obbligazionari. Può essere chiamato solo dal creatore del token. I proprietari di token possono generare di nuovo una richiesta di riscatto utilizzando un ID liquidazione diverso.
function rejectTokenRedemption(
        address fromAddress,
        string calldata settlementId,
        uint256 tokenId
    ) public
Parametri:
  • userAddress: address: l'indirizzo wallet dell'utente.
  • settlementId: string: l'ID liquidazione dell'operazione di rimborso.
  • tokenId: uint256: l'ID del token.
getTokenRedemptionRequests
Questo metodo recupera i dettagli delle richieste di riscatto dei token. Può essere chiamato da qualsiasi titolare del conto.
function getTokenRedemptionRequests(
        address userAddress,
        uint256 tokenId,
        string calldata settlementId
    ) public view
Parametri:
  • userAddress: address: l'indirizzo wallet dell'utente.
  • tokenId: uint256: l'ID del token.
  • settlementId: string: l'ID liquidazione dell'operazione di rimborso.
getUserBondDetails
Questo metodo ottiene un riepilogo dell'account che include i dettagli dei token acquistati o riscattati e il prezzo di acquisto e il prezzo di riscatto. Può essere chiamato da qualsiasi titolare del conto.
function getUserBondDetails(
        address userAddress,
        uint256 tokenId
    ) public view
Parametri:
  • userAddress: address: l'indirizzo wallet dell'utente.
  • tokenId: uint256: l'ID del token.