使用指令行將合約資訊清單上傳至登錄

您可以使用命令行來驗證部署中繼資料,並將其從選取的 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
使用目標環境的鏈 ID 代替 <chain-id>。如果您的 OpenZeppelin 清單儲存在其他地方,請將 OZ_MANIFEST_PATH 變數設定為其專案本端路徑。
  1. 設定登錄端點。設定您計畫上傳之資訊清單類型的登錄端點變數。使用 Shell 的安全環境變數機制或專案設定的 Hardhat 變數機制;請勿將證明資料或專用端點確認至來源控制。例如,一次性 Shell 呼叫可提供作業的值,如下列範例所示。
    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
    端點值為明確的組態。請勿假設可從 Oracle Blockchain Platform 主機名稱衍生登錄 URL。
  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 變數。對於 Blockchain App Builder 產生的封裝匯入專案或數位資產合約,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 設為其他診斷輸出。請勿在詳細日誌或共用終端機輸出中包含加密密碼。

疑難排解

條件 解決方式
找不到工作 確認已安裝 manifest-upload Plug-in、由 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 變數都適用於相同的目標環境。