Distribuire e sottoporre a test il contratto Stablecoin

È possibile distribuire il contratto utilizzando l'interfaccia CLI o utilizzando l'estensione Microsoft Visual Studio Code per Blockchain App Builder.

Distribuisci da Visual Studio Code

Per distribuire il contratto utilizzando l'estensione Visual Studio Code per Blockchain App Builder, effettuare le operazioni riportate di seguito.

  1. Estrarre il file dell'archivio Stablecoin.zip.
  2. Importare il contratto Stablecoin nell'estensione Blockchain App Builder in Visual Studio Code.
  3. Selezionare il progetto importato, quindi selezionare la scheda Distribuisci.

Per ulteriori informazioni, vedere Uso dell'estensione App Builder Blockchain per Visual Studio Code.

Distribuisci dalla riga di comando

Per distribuire il contratto dalla riga di comando, effettuare le operazioni riportate di seguito.

  1. Estrarre il file dell'archivio Stablecoin.zip.
  2. Eseguire il comando seguente per installare le dipendenze.
    npm install
  3. Eseguire i comandi seguenti per compilare il contratto.
    npx hardhat clean
    npx hardhat compile
  4. Configurare le variabili di rete indicate di seguito.
    npx hardhat vars set BESU_CHAIN_ID <chain-id>
    npx hardhat vars set BESU_RPC_URL <rpc-url>
    npx hardhat vars set BESU_RPX_PROXY_AUTH_TOKEN "Bearer {auth-token}"
    npx hardhat vars set WALLET_SERVICE_BASE_URL <wallet-svc-url>
    npx hardhat vars set WALLET_SERVICE_ENABLED true
    npx hardhat vars set WALLET_SERVICE_ACCOUNTS <wallet-svc-accounts>
    npx hardhat vars set WALLET_SERVICE_AUTH_TOKEN "Bearer {auth-token}"
    
    Il testo seguente mostra un esempio di configurazione delle variabili.
    npx hardhat vars set BESU_CHAIN_ID 1500
    npx hardhat vars set BESU_RPC_URL https://rpcproxy.example.com/v1/besu/proxy
    npx hardhat vars set BESU_RPX_PROXY_AUTH_TOKEN "Bearer ej1q..."
    npx hardhat vars set WALLET_SERVICE_BASE_URL https://rpcproxy.example.com/v1/besu/transaction
    npx hardhat vars set WALLET_SERVICE_ENABLED true
    npx hardhat vars set WALLET_SERVICE_ACCOUNTS '[{"address":"0xFf93749DEFa27077d055581642E077E94426A89C","walletId":"031cab07-ca25-422f-84a0-4a78d89982cc"}]'
    npx hardhat vars set WALLET_SERVICE_AUTH_TOKEN "Bearer ej1q..."
    
  5. Distribuire il contratto. Ogni distribuzione richiede le seguenti variabili: DEPLOYMENT_ID, GOVERNANCE_ADDRESS e GOVERNANCE_UUID.
    • Se una distribuzione non riesce, eseguirla di nuovo con lo stesso valore DEPLOYMENT_ID da riprendere. Una volta completata la distribuzione, la cache di ripresa viene eliminata. Se si esegue di nuovo una distribuzione riuscita con lo stesso valore DEPLOYMENT_ID, questa viene considerata come una nuova distribuzione.
    • Il valore GOVERNANCE_ADDRESS è l'indirizzo del contratto di governance predistribuito per l'istanza.
    • Contattare il ruolo DA_ADMIN per il valore GOVERNANCE_UUID.
    È possibile passare metadati proxy token con variabili di ambiente durante la distribuzione. La distribuzione scrive i metadati nella voce di registro .obp-da/.erc7201 solo per il proxy token. Eseguire i comandi seguenti per distribuire il contratto.
    DEPLOYMENT_ID=<deployment-id> \
    GOVERNANCE_ADDRESS=<ida-contract-governance-address> \
    GOVERNANCE_UUID=<customer-governance-uuid> \
    TOKEN_NAME="Stablecoin" \
    TOKEN_SYMBOL="STBL" \
    TOKEN_DESCRIPTION="Stablecoin token proxy contract" \
    ADMIN_USER_ID="platformadmin1" \
    ADMIN_ORG_ID="org1" \
    CONTRACT_METADATA_SMART_CONTRACT_ID="stablecoin" \
    CONTRACT_METADATA_VERSION="1.0.0" \
    CONTRACT_METADATA_DESCRIPTION="Stablecoin token proxy contract" \
    CONTRACT_METADATA_AUTHOR="Oracle" \
    CONTRACT_METADATA_TAGS='{"assetType":"stablecoin token"}' \
    npx hardhat run scripts/deploy/stablecoin/deploy-stablecoin-erc-5982.ts --network obp-besu
    
    Le variabili CONTRACT_METADATA_* si applicano al proxy del token distribuito dallo script. Le tag devono essere un oggetto JSON con valori di stringa.

    Questo comando distribuisce il contratto in modalità INACTIVE. Dopo aver sottomesso l'intento di distribuzione e l'intento viene approvato in base al criterio associato al valore GOVERNANCE_UUID, la distribuzione viene contrassegnata automaticamente come ACTIVE.

  6. Proporre un intento di distribuzione per proxy governati. Per gli aggiornamenti, l'approvazione della governance è legata al proxy esistente e alla nuova implementazione rivista. Dopo le approvazioni richieste, il proxy può passare alla versione approvata conservando l'indirizzo e lo stato aziendale accumulato. Un'implementazione diversa, un intento scaduto o una proposta rifiutata richiedono una nuova decisione di governance.

    Dopo che la distribuzione ha impostato il contesto di governance, sottomettere un intento per ogni proxy disciplinato. Eseguire il comando seguente per proporre l'intento di distribuzione.

    GOVERNANCE_INTENT_MODE=obp-besu \
    GOVERNANCE_ADDRESS=<governance-address> \
    GOVERNANCE_UUID=<customer-uuid> \
    DEPLOY_TARGETS_JSON='["<stablecoin-proxy>"]' \
    DEPLOY_INTENT_MANIFEST=.obp-da/governance/deploy-intent.json \
    npx hardhat run scripts/deploy/governance/propose-deploy-intent.ts --network obp-besu
    

    Utilizzare GOVERNANCE_INTENT_MODE = json-rpc per la sottomissione diretta del contratto. Se si utilizza GOVERNANCE_INTENT_MODE = obp-besu, la proposta viene inviata all'endpoint UWaaS tramite il proxy RPC.

    Al termine dell'eliminazione, è possibile utilizzare la raccolta Postman fornita per richiamare i metodi di contratto tramite il proxy RPC.