部署並測試合併的權杖架構合約

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

從 Visual Studio 程式碼部署

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

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

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

從命令行部署

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

  1. 擷取 art-collection-loyalty-point.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":"0xfba9bd4554d3cf731c85316b5b5cf38fcd2fc72b","walletId":"0xfba9bd4554d3cf731c85316b5b5cf38fcd2fc72b"}]'
    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=<governance-contract-address> \
    GOVERNANCE_UUID=<governance-uuid> \
    TOKEN_NAME="ArtCollectionLoyaltyToken" \
    TOKEN_DESCRIPTION="Art collection loyalty point token proxy contract" \
    TOKEN_URI="https://token-cdn-domain/{id}.json" \
    ADMIN_USER_ID="platformadmin1" \
    ADMIN_ORG_ID="org1" \
    CONTRACT_METADATA_SMART_CONTRACT_ID="artCollectionLoyaltyToken" \
    CONTRACT_METADATA_VERSION="1.0.0" \
    CONTRACT_METADATA_DESCRIPTION="Art collection loyalty point token proxy contract" \
    CONTRACT_METADATA_AUTHOR="Oracle" \
    CONTRACT_METADATA_TAGS='{"assetType":"art-loyalty token"}' \
    npx hardhat run scripts/deploy/art-loyalty/deploy-art-loyalty.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='["<artloyalty-proxy>"]' \
    DEPLOY_INTENT_MANIFEST=.obp-da/governance/deploy-intent.json \
    npx hardhat run scripts/deploy/art-loyalty/governance/propose-deploy-intent.ts --network obp-besu
    

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

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