계약 배치

스마트 계약을 컴파일한 후 Oracle Blockchain Platform Besu 환경에 배포할 수 있습니다.

배포 프로세스는 필요한 도우미 라이브러리 및 UUPS 프록시를 생성하고, 토큰 및 계정 컨텍스트를 연결하고, 거버넌스 컨텍스트를 설정합니다. 토큰 및 계정이 비활성 상태로 배치됩니다. 배포 의도 프로세스를 통해서만 활성화됩니다.

컴파일된 계약을 배포하려면 디지털 자산 토큰 관리자로부터 사전 배포된 거버넌스 계약의 주소 및 해당 정책 UUID를 가져옵니다. 배포 의도를 제출할 수 있는 권한을 가진 계정을 가져오고(해당하는 경우) 배포 의도를 제출합니다. 배포 양식에는 계약, 환경, 배포 ID 및 레지스트리 메타데이터(스마트 계약 ID, 버전, 설명 및 작성자)가 필요합니다. 배치 ID는 재개할 수 있는 배치 상태를 식별합니다. 동일한 배치를 재시도할 때 안정적이고 고유한 값을 사용하십시오.

배치 수명 주기

  1. 프로젝트를 컴파일합니다.
  2. Oracle Blockchain Platform 디지털 자산 스택을 배포합니다.
  3. 계정/토큰 및 거버넌스 컨텍스트 설정 (프록시가 비활성 상태입니다.)
  4. 두 프록시 구성요소에 대한 배포 의도를 검토하고 제출합니다.
    • No-Op Governance: 제안이 성공한 후 구성 요소가 활성화됩니다.
    • Governed: 필요한 정책 승인이 완료된 후 구성요소가 활성화됩니다.

참고:

배포 후 즉시 프록시가 비활성화됩니다. 성공적인 계약 배포는 토큰이 활성 상태임을 의미하지는 않습니다. 활성화는 UUPS 업그레이드가 아닌 배포에 대해 구성된 거버넌스 계약에 의해 제어됩니다.

Oracle Blockchain Platform Besu 환경 생성

Oracle Blockchain Platform Besu 환경은 전체 JSON-RPC 엔드포인트가 아닌 Oracle Blockchain Platform RPC 호스트를 저장합니다. 확장은 이 호스트에서 필요한 Besu 및 거버넌스 경로를 파생시킵니다.

  1. 환경 뷰를 열고 환경 추가를 선택합니다.
  2. 설명이 포함된 환경 이름을 입력합니다. 예를 들어, obp-test를 입력합니다.
  3. 환경 유형에 대해 Oracle Blockchain Platform Besu를 선택합니다.
  4. RPC URL Host를 입력합니다. 예를 들어, https://rpcproxy.example.com:443를 입력합니다.

    RPC URL 호스트는 끝점 경로, 질의 문자열, 부분, 사용자 이름 또는 비밀번호가 아닌 http 또는 https 원본만이어야 합니다. 예를 들어, https://rpcproxy.example.com:443/v1/besu/proxy가 아닌 https://rpcproxy.example.com:443를 입력합니다.

  5. 네트워크 체인 ID를 입력합니다.
  6. RPC 프록시에 필요한 권한 부여 토큰을 입력합니다.
  7. 선택적으로 개인 인증 기관에 대해 가스 가격 정책, 자체 서명 허용 및 CA 인증서 경로를 설정합니다. 배포 모델에 특별히 비보안 서명이 필요하지 않은 경우 BESU 계정을 비워 둡니다. Oracle Blockchain Platform 전자 지갑 서비스 배치는 배치별로 서명 세부정보를 수집합니다.
  8. 생성을 선택합니다.

저장된 Oracle Blockchain Platform 호스트의 경우 확장은 Besu 프록시 엔드포인트를 파생시키고 Oracle Blockchain Platform 거버넌스 의도 엔드포인트를 사용합니다. 이렇게 하면 배포, 실행 및 거버넌스 작업 간에 환경을 이식할 수 있습니다.

내장된 Hardhat Local Node 환경은 로컬 개발에 사용할 수 있으며 저장할 필요가 없습니다. Oracle Blockchain Platform 환경이 아닙니다.

Oracle Blockchain Platform Besu 환경에 배포

  1. 계약 창에서 프로젝트의 배포/실행 양식을 열고 배포 탭을 선택합니다.
  2. 계약 패키지 및 Besu 환경을 선택합니다.
  3. 배포 ID를 입력하거나 표시된 배포 ID를 유지합니다.
  4. 필요한 레지스트리 메타데이터를 완료합니다. 배치 시 토큰 이름, 기호, 설명, URI 및 관리자 ID는 선택사항입니다. 빈 값은 배치 스크립트 기본값을 사용합니다.
  5. Oracle Blockchain Platform 환경에 대해 표시된 전자 지갑 서비스 서명 정보를 입력합니다.
    • 전자 지갑 서비스 서명 URL
    • 전자 지갑 서비스 계정 - 주소/전자 지갑 ID 객체의 JSON 배열
    • 전자 지갑 서비스 인증 토큰
  6. 다음을 선택합니다.
  7. 배포 옵션에서 거버넌스 계약 주소 및 정책 UUID를 입력한 다음 배포를 선택합니다.

Blockchain App Builder는 Oracle Blockchain Platform Besu 네트워크를 통해 생성된 Hardhat 배포 스크립트를 실행하며, 해당 배포에 대해서만 전자 지갑 서비스 값을 사용합니다. 필요한 구성 요소를 배치 또는 재사용하고, 컨텍스트를 설정하고, 토큰 및 계정 프록시 주소를 반환합니다. 두 프록시가 모두 비활성 상태입니다.

배포 의향서 제출

비활성 배포가 완료되면 거버넌스 섹션이 배포된 토큰 대상 및 계정 대상 값으로 채워집니다. 두 대상을 의도대로 유지합니다. 각각은 EIP-1967 프록시이며, 거버넌스는 해결된 구현 주소 및 런타임 코드 해시를 기준으로 프록시를 활성화합니다.

  1. 토큰 및 계정 대상을 확인합니다. 기존 프록시 쌍을 의도적으로 제안하는 경우에만 대체합니다.
  2. 미래 제안 기한을 입력합니다.
  3. Oracle Blockchain Platform Besu의 경우 선택한 정책으로 승인된 보낸 사람 주소를 입력합니다. 선택한 환경에는 RPC URL 호스트 및 권한 부여 토큰이 있어야 합니다.
  4. 다른 EVM 환경의 경우 발신자 계정을 선택하거나 발신자의 개인 키를 입력합니다. 응용 프로그램이 해당 키에서 발신자 주소를 파생시킵니다.
  5. 검토를 선택합니다. 확장은 각 프록시의 구현 및 구현 코드 해시를 확인한 다음 제안된 의도를 표시합니다.
  6. UUID, 마감일, 프록시 대상, 구현 주소 및 코드 해시를 확인합니다.
  7. 제출을 선택합니다.

Oracle Blockchain Platform 환경의 경우 확장은 Oracle Blockchain Platform 전자 지갑 서비스 거버넌스 엔드포인트를 통해 검토된 의도를 제출합니다. 다른 EVM 환경의 경우 서명된 proposeDeployIntent 트랜잭션을 JSON-RPC를 통해 거버넌스 계약으로 직접 전송합니다.

검토 후 거버넌스 주소, UUID, 프록시 대상 또는 기한을 변경하면 미리보기가 무효화됩니다. 제안을 제출하기 전에 다시 검토하십시오.

거버넌스 활성화

두 거버넌스 유형에 동일한 의도 워크플로우가 사용됩니다. 차이점은 거버넌스 계약이 제안을 수락한 후 발생하는 것입니다.

  • No-Op: 성공한 proposeDeployIntent 호출은 포함된 구성 요소를 즉시 활성화합니다. 트랜잭션 또는 Oracle Blockchain Platform 응답을 확인한 다음 토큰의 활성 상태를 확인합니다.
  • Governed: 제출된 의도는 구성된 정책의 적용을 받습니다. 마감일 전에 필요한 승인을 받은 후에만 토큰 및 계정이 활성화됩니다.

확장은 의도를 제출하며 거버넌스 승인자를 가장하거나 우회하지 않습니다. 거버넌스 정책의 경우 조직의 승인 프로세스를 사용하고 거버넌스 계약이 활성화될 때까지 기다립니다. 정책이 의도를 거부하거나 만료하는 경우 원인을 정정한 다음 적합한 새 의도를 제출하십시오. 배포만으로는 프록시가 활성화되지 않습니다.

참고:

계약을 배포하면 프로젝트 루트 아래의 .openzeppelin 폴더에 매니페스트 파일이 생성됩니다. 운용 네트워크(개발 네트워크 아님)의 경우 이러한 파일을 소스 제어에 커밋합니다. 자세한 내용은 OpenZeppelin 설명서의 Network Files을 참조하십시오.

배치 오류 문제 해결

조건 해결
Oracle Blockchain Platform 환경을 저장할 수 없습니다. 끝점 경로 없이 HTTP 또는 HTTPS 원점을 입력합니다. Oracle Blockchain Platform 필드에는 호스트만 필요합니다.
거버넌스 검토에 따르면 Oracle Blockchain Platform 환경에는 RPC URL 호스트 및 권한 부여 토큰이 필요합니다. 저장된 Oracle Blockchain Platform 환경을 두 값으로 업데이트한 후 다시 열거나 선택하십시오.
거버넌스 검토 보고서에 런타임 바이트 코드가 누락되었습니다. 선택한 네트워크 및 프록시/구현 주소를 확인합니다. 배포되지 않은 대상에 대해 의도를 제출하지 마십시오.
배치를 성공했지만 토큰이 비활성 상태입니다. 배포 의도를 제출합니다. 거버넌스의 경우 모든 정책 승인을 기다립니다. no-op 거버넌스의 경우 제안 트랜잭션이 성공했는지 확인하십시오.
필드를 변경한 후에는 제안을 제출할 수 없습니다. 검토를 다시 선택합니다. 응용 프로그램이 오래된 미리보기를 의도적으로 무효화합니다.