コマンドラインを使用した登録への契約マニフェストのアップロード

コマンドラインを使用して、選択したHardhatプロジェクトから契約レジストリ・サービスへのデプロイメント・メタデータを検証および公開できます。

upload-contract-manifest Hardhatタスクは、プロジェクトのアップグレード可能または不変の契約マニフェストを構成済レジストリ・サービスに公開します。

デプロイメントが成功した後に、パッケージ化された契約プロジェクトのルート・ディレクトリからタスクを実行します。タスクは、デプロイメント・マニフェスト・ファイルをプロジェクトから読み取ります。次のファイルが標準の場所です。
  • OpenZeppelinマニフェスト: .openzeppelin/unknown-<chain-id>.json
  • ERC-7201マニフェスト: .obp-da/.erc7201/deployedContracts-<chain-id>.json
  • 不変/ソリッドマニフェスト: .obp-da/.solc/deployedContracts-<chain-id>.json
<chain-id>のかわりにターゲット環境のチェーンIDを使用します。OpenZeppelinマニフェストが他の場所に格納されている場合は、OZ_MANIFEST_PATH変数をそのプロジェクト・ローカル・パスに設定します。
  1. レジストリ・エンドポイントを構成します。アップロードする予定のマニフェスト・タイプのレジストリ・エンドポイント変数を設定します。シェルのセキュアな環境変数メカニズムまたはプロジェクトの構成済みのHardhat変数メカニズムを使用します。ソース制御に資格情報やプライベートエンドポイントをコミットしないでください。たとえば、次の例に示すように、1回かぎりのシェル呼び出しでタスクに値を指定できます。
    ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \
    SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \
    npx hardhat upload-contract-manifest --mode all
    Oracle Blockchain Platform環境では、プロジェクト構成に必要なターゲット・チェーン情報およびRPCプロキシ認可トークンも提供します。
    BESU_CHAIN_ID="<chain-id>" \
    BESU_RPX_PROXY_AUTH_TOKEN="<rpc-proxy-token>" \
    ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \
    SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \
    npx hardhat upload-contract-manifest --mode all
    エンドポイント値は明示的な構成です。レジストリURLをOracle Blockchain Platformホスト名から導出できるとは想定しないでください。
  2. 次のいずれかのモードを選択して、アップロードする内容を選択します。
    # Upload both applicable manifest types.
    npx hardhat upload-contract-manifest --mode all
    
    # Upload the OpenZeppelin and ERC-7201 manifest content.
    npx hardhat upload-contract-manifest --mode erc7201
    
    # Upload immutable/Solidity contract manifest content only.
    npx hardhat upload-contract-manifest --mode immutable
    allおよびerc7201モードでは、ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT変数が必要です。allおよびimmutableモードでは、SOLC_UPLOAD_REGISTRY_ENDPOINT変数が必要です。ブロックチェーン・アプリケーション・ビルダーによって生成されたパッケージ化されたインポート済プロジェクトまたはデジタル資産契約の場合、ERC-7201モードで十分です。
  3. --dry-runオプションを使用して、選択したマニフェスト・ファイルを検証し、公開せずに構成をアップロードします。
    npx hardhat upload-contract-manifest --mode all --dry-run
  4. 予行演習が成功したら、--dry-runオプションを指定せずに同じコマンドを実行して公開します。プロジェクトがサポートする場合は、UPLOAD_CONTRACT_MANIFEST_TIMEOUT_MS変数を設定してアップロード・タイムアウトを増やし、追加の診断出力にUPLOAD_CONTRACT_MANIFEST_VERBOSE=trueを設定します。詳細ログまたは共有端末出力にシークレットを含めないでください。

トラブルシューティング

条件 解決策
タスクが見つかりませんでした マニフェスト・アップロード・プラグインがインストールされ、hardhat.config.tsファイルによってインポートされ、アップロード・タスクで構成されていることを確認します。
必要なマニフェストがありません 最初に選択した環境にデプロイし、チェーンIDを確認して、予想されるマニフェストの場所を確認します。標準以外のOpenZeppelinマニフェストの場合は、OZ_MANIFEST_PATH変数を正しいプロジェクト・ローカル・ファイルに設定します。
レジストリエンドポイントがないか、無効です 選択したモードのhttpまたはhttpsエンドポイントを指定します。erc7201モードとimmutableモードは、異なるエンドポイント変数を使用します。
Oracle Blockchain Platformのアップロードは認可されていません 選択したOracle Blockchain Platform環境とBESU_CHAIN_ID変数およびBESU_RPX_PROXY_AUTH_TOKEN変数がすべて同じターゲット環境用であることを確認します。