명령행을 사용하여 레지스트리에 계약 적하목록 업로드

명령행을 사용하여 선택한 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 변수 방식을 사용합니다. 인증서 또는 프라이빗 끝점을 소스 제어에 커밋하지 마십시오. 예를 들어, 일회성 셸 호출은 다음 예에 표시된 대로 작업에 값을 제공할 수 있습니다.
    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 변수가 필요합니다. Blockchain App Builder에 의해 생성 된 패키지 수입 프로젝트 또는 디지털 자산 계약의 경우 ERC-7201 모드로 충분합니다.
  3. --dry-run 옵션을 사용하여 선택한 매니페스트 파일을 검증하고 게시하지 않고 구성을 업로드합니다.
    npx hardhat upload-contract-manifest --mode all --dry-run
  4. Dry Run이 성공한 후 게시하려면 --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 변수가 모두 동일한 대상 환경에 대한 것인지 확인합니다.