Stablecoin契約のデプロイおよびテスト

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

Visual Studio Codeからのデプロイ

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

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

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

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

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

  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. 管理されたプロキシのデプロイメント・インテントを提案します。アップグレードの場合、ガバナンス承認は既存のプロキシと、レビューされた正確な新しい実装に関連付けられます。必要な承認が終わると、代理人は、住所および累積されたビジネス状態を保持しながら、承認済バージョンに移動できます。別の実装、失効したインテントまたは却下された提案には、新しいガバナンス決定が必要です。

    デプロイメントでガバナンス・コンテキストが設定されたら、ガバナンス対象の各プロキシに対して1つのインテントを発行します。次のコマンドを実行して、デプロイメント・インテントを提案します。

    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プロキシ経由でcontractメソッドを呼び出すことができます。