部署並測試穩定的合約

您可以使用 CLI 或使用適用於 Blockchain App Builder 的 Microsoft Visual Studio Code 擴充功能來部署合約。

從 Visual Studio 程式碼部署

若要使用區塊鏈 App 產生器的 Visual Studio 程式碼擴充功能部署合約,請完成下列步驟。

  1. 擷取 Stablecoin.zip 封存檔案。
  2. 將 Stablecoin 合約匯入 Visual Studio Code 中的 Blockchain App Builder 擴充功能。
  3. 選取匯入的專案,然後選取部署頁籤。

如需詳細資訊,請參閱使用 Visual Studio 程式碼的區塊鏈 App 產生器擴充功能。

從命令行部署

若要從命令行部署合約,請完成下列步驟。

  1. 擷取 Stablecoin.zip 封存檔案。
  2. 執行下列命令來安裝相依性。
    npm install
  3. 執行下列命令來編譯合約。
    npx hardhat clean
    npx hardhat compile
  4. 設定下列網路變數。
    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}"
    
    下列文字顯示變數組態的範例。
    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. 部署合約。每個部署都需要下列變數:DEPLOYMENT_ID、GOVERNANCE_ADDRESS 和 GOVERNANCE_UUID。
    • 如果部署失敗,請使用相同的 DEPLOYMENT_ID 值再次執行以繼續。建置成功後,便會刪除繼續快取。如果您使用相同的 DEPLOYMENT_ID 值再次執行成功部署,則會將它視為新的部署。
    • GOVERNANCE_ADDRESS 值是執行處理的預先建置治理合約位址。
    • 請聯絡 GOVERNANCE_UUID 值的 DA_ADMIN 角色。
    您可以在部署時,以環境變數傳送憑證代理中繼資料。部署僅會將中繼資料寫入權杖代理的 .obp-da/.erc7201 登錄項目中。執行下列命令以部署合約。
    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
    
    CONTRACT_METADATA_* 變數會套用至命令檔所部署的記號代理主機。標記必須是含有字串值的 JSON 物件。

    此命令會以 INACTIVE 模式部署合約。送出建置意圖並依據附加至 GOVERNANCE_UUID 值的原則核准意圖之後,就會自動將建置標示為 ACTIVE。

  6. 提出受管理代理主機的部署意向。若為升級,治理核准會繫結至現有的代理主機,以及經過複查的確切新實行。在必要的核准後,代理可以移至已核准的版本,同時保留其地址和累計的業務狀態。不同的導入、到期目的或被拒絕的提案需要新的治理決策。

    部署設定治理相關資訊環境之後,請為每個受管理的代理主機送出一個意圖。執行下列命令以提議部署目的。

    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
    

    使用 GOVERNANCE_INTENT_MODE = json-rpc 來直接提交合約。如果您使用 GOVERNANCE_INTENT_MODE = obp-besu,提案會透過 RPC 代理主機提交至 UWaaS 端點。

    拆卸完成後,您可以使用提供的 Postman 集合,透過 RPC 代理主機呼叫合約方法。