複合トークン・フレームワーク契約のデプロイおよびテスト

CLIを使用するか、ブロックチェーン・アプリケーション・ビルダーのMicrosoft Visual Studio Code拡張機能を使用して、契約をデプロイできます。

Visual Studio Codeからのデプロイ

ブロックチェーン・アプリケーション・ビルダーのVisual Studio Code拡張機能を使用して契約をデプロイするには、次のステップを実行します。

  1. art-collection-loyalty-point.zipアーカイブ・ファイルを抽出します。
  2. Art-Collection契約をVisual Studio CodeのBlockchain App Builder拡張にインポートします。
  3. インポートしたプロジェクトを選択し、「デプロイ」タブを選択します。

詳細は、Visual Studio Code用のブロックチェーン・アプリケーション・ビルダー拡張機能の使用を参照してください。

コマンドラインからの配置

コマンドラインから契約をデプロイするには、次のステップを実行します。

  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. 管理されたプロキシのデプロイメント・インテントを提案します。デプロイメントでガバナンス・コンテキストが設定されたら、ガバナンス対象の各プロキシに対して1つのインテントを発行します。次のコマンドを実行して、デプロイメント・インテントを提案します。
    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エンドポイントに送信されます。

    Depoymentが完了した後、提供されたPostmanコレクションを使用して、RPCプロキシを介してcontractメソッドを呼び出すことができます。