레지스트리에 계약 적하목록 업로드
Blockchain App Builder를 사용하여 선택한 Hardhat 프로젝트에서 계약 레지스트리 서비스로 배포 메타데이터를 검증하고 게시할 수 있습니다.
계약 적하목록 업로드 도구는 프로젝트 소유의 hardhat-upload-contract-artefacts 플러그인을 실행하고 레지스트리 끝점을 런타임 값으로 전달합니다. 프로젝트의 Hardhat 변수는 수정하지 않습니다.
매니페스트 업로드는 저장된 Oracle Blockchain Platform Besu 환경에 대해서만 사용할 수 있습니다.
전제 조건
- 성공적으로 배포된 임포트되거나 구성된 Hardhat 프로젝트를 선택합니다.
- 프로젝트에
package.json파일에hardhat-upload-contract-artefacts패키지가 포함되어 있는지 확인하고,hardhat.config.ts또는hardhat.config.js에 플러그인을 임포트하고,uploadContractManifest구성을 정의합니다. - 올바른 체인 ID 및 RPC 프록시 인증을 사용하여 Oracle Blockchain Platform Besu 환경을 생성하거나 선택하십시오.
- 선택한 업로드 모드에 대해 필요한 로컬 배포 레코드가 있는지 확인합니다.
다음 업로드 모드가 지원됩니다.
| 업로드 모드 | 필요한 로컬 레코드 | 레지스트리 대상 |
|---|---|---|
| 둘 다 | OpenZeppelin 매니페스트, ERC-7201 배포 계약 JSON 및 SOLC 배포 계약 JSON | 두 레지스트리 끝점 |
| ERC-7201 / 업그레이드 가능 | OpenZeppelin 매니페스트 및 ERC-7201 배포-계약 JSON | ERC-7201 레지스트리 끝점 |
| 변경 불가능/SOLC | SOLC 배포 계약 JSON | SOLC 레지스트리 끝점 |
Blockchain App Builder에서 생성 된 사전 패키지 된 수입 프로젝트 또는 디지털 자산 계약의 경우 일반적으로 ERC-7201 모드로 충분합니다.
체인 ID 1500의 경우 기본 경로는 다음과 같습니다.
./.openzeppelin/unknown-1500.json
./.obp-da/.erc7201/deployedContracts-1500.json
./.obp-da/.solc/deployedContracts-1500.json프로젝트가 배포 레코드를 다른 곳에 저장하는 경우 경로를 조정합니다.- 개발자 도구를 열고 계약 적하목록 업로드를 선택합니다.
- Hardhat 프로젝트 및 Oracle Blockchain Platform Besu 환경을 선택합니다.
- 업로드 모드를 선택합니다.
- 필요한 레지스트리 끝점 URL 또는 URL 입력:
- 업그레이드 가능한 레코드의 경우 ERC-7201 매니페스트 업로드 레지스트리 끝점
- 변경할 수 없는 레코드의 경우 SOLC 매니페스트 업로드 레지스트리 끝점
- OpenZeppelin 및 배치된 계약 파일 경로를 확인합니다. 선택적으로 시간 초과 및 상세 정보 표시 출력을 설정합니다.
- 검증을 선택합니다. 플러그인이 실행되고 레지스트리 데이터를 게시하지 않습니다.
- 검증이 성공하면 검증을 지우고 업로드를 선택합니다.
문제 해결
| 조건 | 해결 |
|---|---|
| 사용 가능한 환경이 없습니다. | 저장된 Oracle Blockchain Platform Besu 환경을 생성합니다. EVM 및 Hardhat 로컬 노드는 매니페스트 업로드에 적합한 환경이 아닙니다. |
| 레지스트리 끝점이 부적합합니다. | 선택한 모드에 필요한 모든 끝점에 대해 전체 HTTP 또는 HTTPS 레지스트리 URL을 입력합니다. |
| 필수 파일을 찾을 수 없음 | 관련 계약을 컴파일 및 배포하거나 배포된 계약의 프로젝트 상대 적하목록 및 파일 경로를 수정합니다. |
| 플러그인 또는 구성이 누락되었습니다. | hardhat-upload-contract-artefacts를 설치 또는 임포트하고 도구의 프리플라이트 지침에 표시된 uploadContractManifest 구성을 추가합니다.
|
| dry run 성공 후 업로드 실패 | 레지스트리 서비스 인증, 가용성, 끝점 정책 및 전체 플러그인 출력을 검토합니다. dry run은 로컬 입력을 검증하지만 레지스트리 수락을 보장하지 않습니다. |