계약 실행
블록체인 앱 빌더를 사용하여 배포된 토큰 또는 계정/ID 프록시를 쿼리하거나 상태 변경 계약 기능을 호출할 수 있습니다.
프로젝트를 컴파일한 후 배치/실행 폼의 실행 탭을 사용하여 함수를 질의하거나 호출할 수 있습니다. 확장은 선택한 계약 ABI를 읽고, 사용 가능한 함수를 표시하고, 매개변수를 인코딩하고, 선택한 환경에 적합한 전송을 통해 요청을 전송합니다. 구성된 프로젝트의 경우 상태 변경 토큰 작업을 시도하기 전에 토큰 및 계정 프록시를 배포하고 활성화합니다.
- 계약 보기를 엽니다.
- Hardhat 프로젝트를 선택한 다음 배포/실행을 엽니다.
- 실행 탭을 선택합니다.
- 양식에 프로젝트 선택기가 포함된 경우 계약을 소유하는 프로젝트와 컴파일된 아티팩트를 선택합니다.
호출을 실행하기 전에 대상 및 함수를 선택하려면 다음 필드를 완료해야 합니다.
- 토큰: ABI를 사용할 컴파일된 토큰 계약입니다.
- 호출 대상: 토큰 프록시를 호출하려면 토큰을 선택하고, 페어링된 계정 프록시를 호출하려면 계정/ID를 선택합니다. 잔액, 민팅, 전송, 구성 및 자산-클래스 작업과 같은 토큰 동작에 대한 호출 대상으로 토큰을 선택합니다. 동반자 계정 계약의 ID, 권한 또는 정책 기능에 대해 계정/ID를 선택합니다.
- 대상 ABI: 함수를 나열하고 인코딩하는 데 사용되는 ABI입니다. 생성된 매니페스트는 쌍 계정 ABI를 잠그고, 그렇지 않으면 수동으로 선택합니다.
- toAddress: 선택한 대상에 대해 배치된 프록시 주소입니다. 도우미 라이브러리 또는 구현 주소를 입력하지 마십시오.
- 환경: 해당 프록시가 배치되는 환경입니다.
- 함수: 질의 또는 호출할 ABI 함수입니다. 목록에는 상속된 기능을 구별하는 데 도움이 되는 함수 원점이 포함되어 있습니다.
실행 경로
확장은 선택한 환경에 따라 사용 가능한 모드를 선택하거나 제한합니다.
| 환경 및 API 모드 | 질의 동작 | 호출 동작 | 필수 서명자 정보 |
|---|---|---|---|
| JSON-RPC를 사용하는 Hardhat Local Node 또는 Other EVM | 선택한 로컬 개인 키를 from로 사용하여 노드를 호출합니다.
|
JSON-RPC를 통해 직접 서명 및 브로드캐스트합니다. | 구성된 호출자 계정 또는 수동으로 입력된 32바이트 개인 키입니다. |
| JSON-RPC API가 포함된 Oracle Blockchain Platform Besu | 선택한 전자 지갑 서비스 계정 주소를 from로 사용하여 Oracle Blockchain Platform JSON-RPC 끝점을 호출합니다.
|
트랜잭션을 빌드하고 전자 지갑 서비스 서명을 요청한 다음 Oracle Blockchain Platform JSON-RPC를 통해 브로드캐스트합니다. | 전자 지갑 서비스 서명 URL, 계정 JSON, 권한 부여 토큰 및 선택된 전자 지갑 계정입니다. |
| REST rpc-proxy API를 통한 Oracle Blockchain Platform Besu | Oracle Blockchain Platform 쿼리 API에 게시합니다. | Oracle Blockchain Platform 트랜잭션 API에 게시합니다. | 보낸 사람 주소, 선택적으로 가스 및 영수증 대기 설정 이 모드에서는 로컬 전용 키 또는 전자 지갑 서비스 서명자가 입력되지 않았습니다. |
REST rpc-proxy 모드는 Oracle Blockchain Platform Besu 환경에서만 사용할 수 있습니다. 환경의 RPC URL 호스트, 인증 토큰 및 TLS 설정이 REST 호출에 사용됩니다. 다른 EVM 및 로컬 Hardhat 환경에서는 로컬 서명과 함께 JSON-RPC를 사용합니다.
함수 질의
읽기 호출에 대해 질의를 사용하거나 현재 체인 상태에 대해 함수를 시뮬레이트합니다.
- 대상, 환경, 함수 및 매개변수를 선택합니다.
- 선택한 실행 경로에 필요한 호출자 또는 전자 지갑 정보를 구성합니다.
- 조회를 선택합니다.
- 출력 필드를 검토합니다. JSON-RPC 출력에는 디코딩 성공 시 원시 호출 결과와 디코딩된 ABI 결과가 포함됩니다. REST 출력에 API 응답이 포함되어 있습니다.
질의는 호출 요청을 사용합니다. 즉, 트랜잭션을 브로드캐스트하거나 상태를 지속하지 않습니다. 선택한 함수의 조건, 호출자 권한 또는 제공된 매개변수가 현재 계약 상태에 적합하지 않은 경우에도 질의를 복원할 수 있습니다.
함수 호출
- 대상, 환경, 함수 및 매개변수를 선택합니다.
- 필요한 서명 방법을 구성합니다.
- 기타 EVM 또는 하드 로컬 노드의 경우 구성된 호출자 계정을 선택하거나 권한이 부여된 개인 키를 입력합니다.
- Oracle Blockchain Platform Wallet Service의 경우 서명 URL, 계정 JSON, 권한 부여 토큰을 제공하고 전자 지갑 계정을 선택합니다.
- REST rpc-proxy의 경우 시작 주소를 입력하고, 필요한 경우 가스 제한 및 입고 대기 설정을 입력합니다.
- 호출을 선택합니다.
- 출력에서 결과를 기다립니다. 성공적인 JSON-RPC 및 Wallet Service 호출에는 트랜잭션 해시, 블록 번호, 사용된 가스, 발신자, 대상 및 수신 상태가 포함됩니다.
매개변수 입력
매개변수 편집기를 열려면 매개변수 옆에 있는 … 단추를 선택합니다. ABI 매개변수 이름, 중첩된 속성, 유형 및 입력 필드가 표시됩니다. 실행 함수에서 사용할 JSON 매개변수 배열을 생성하려면 편집기의 적용 작업을 선택합니다.
매개변수는 선택한 함수의 ABI 입력과 동일한 순서로 하나의 JSON 배열로 전송됩니다.
| ABI 입력 | 붙여넣기 가능 매개변수 JSON |
|---|---|
| 입력 없음 | [] |
balanceOf(address) |
["0x1111111111111111111111111111111111111111"] |
transfer(address,uint256) |
["0x1111111111111111111111111111111111111111", "1000"] |
| 단일 튜플 | [{"fieldA":"value","fieldB":"1000"}] |
독립형 tuple[] 입력
|
[[{"userAddress":"0x1111111111111111111111111111111111111111","approvalSequence":1}]] |
정수 ABI 필드의 경우 JavaScript 숫자 전체 자릿수 손실을 방지하려면 "1000"와 같은 십진수 문자열을 입력합니다. 부울 값에 JSON true 또는 false를 사용합니다. 주소는 적합한 0x 주소여야 합니다.
튜플 및 튜플 어레이 입력의 경우 등록 정보 이름이 ABI 구성 요소 이름과 일치하는 명명된 JSON 객체를 사용합니다. 매개변수 편집기에서 솔리드 위치 튜플 구문을 사용하지 마십시오.
예를 들어, 편집기가 userAddress 및 approvalSequence 구성요소가 있는 approverDetails tuple[] 속성을 표시하는 경우 다음 값을 해당 속성의 JSON 편집기에 붙여 넣습니다.
[
{
"userAddress": "0x1111111111111111111111111111111111111111",
"approvalSequence": 1
}
]파라미터 편집기는 해당 값을 외부 함수 인수 배열 내에 배치합니다. 전체 튜플의 경우 선택한 ABI에 표시된 모든 구성요소를 입력합니다. 정확한 필드는 계약 버전에 따라 달라지므로 다른 토큰 프로젝트에서 튜플 모양을 복사하는 대신 매개변수 편집기에 표시되는 속성을 사용하십시오.
전자 지갑 서비스 입력 형식
Oracle Blockchain Platform JSON-RPC 모드의 경우 전자 지갑 서비스 계정을 JSON 배열로 입력합니다. 각 항목에는 주소가 있어야 하며 다음 예와 같이 전자 지갑 ID를 포함할 수 있습니다.
[
{
"address": "0x1111111111111111111111111111111111111111",
"walletId": "0x1111111111111111111111111111111111111111"
}
]전자 지갑 계정에서 구문 분석된 계정 중 하나를 선택합니다. 질의는 주소를 from로 사용합니다. 호출 시 전자 지갑 서비스에 해당 계정에 서명하도록 요청합니다. 전자 지갑 서비스 권한 부여 토큰이 폼의 저장된 초안에 저장되지 않았습니다.
입력 저장 및 재사용
현재 비비밀 실행 선택사항 및 프로젝트에 대한 매개변수 JSON을 유지하려면 입력 저장을 선택합니다. 저장된 양식 상태를 제거하려면 저장된 입력 지우기를 선택합니다. 호출 전에 프록시 주소, 선택된 함수 및 매개변수를 다시 검사합니다. 저장된 입력은 대상이 현재 선택된 환경에 아직 배치되어 있음을 증명하지 않습니다.
문제 해결
| 조건 | 해결 |
|---|---|
| 업그레이드 후에는 새로 추가된 메소드가 실행 페이지의 ABI 목록에 나열되지 않습니다. | Blockchain App Builder 매니페스트 파일 (generated.manifest.json)을 업데이트하여 새로 업그레이드 된 계약을 가리키도록 contractClassName 및 contractRelativePath를 변경하십시오.
|
| ABI 함수를 찾을 수 없습니다. | 프로젝트를 컴파일하고 선택한 토큰/계정 아티팩트가 존재하는지 확인합니다. 매니페스트가 없는 계정 대상의 경우 올바른 계정 ABI를 수동으로 선택합니다. |
| 대상 주소에 계약 코드가 없습니다. | 선택한 환경을 확인하고 도우미 라이브러리 또는 구현 주소가 아닌 배치된 프록시 주소를 입력합니다. |
| 부적합한 매개변수 JSON | … 편집기를 사용하여 인수 배열을 재생성합니다. 배열 및 객체가 큰 따옴표로 묶인 속성 이름과 함께 적합한 JSON을 사용하는지 확인합니다. |
| 전자 지갑 서비스 계정 선택이 필요합니다. | 적합한 계정 JSON 배열을 입력하고 전자 지갑 계정을 선택합니다. |
| REST rpc-proxy API에는 Oracle Blockchain Platform 환경이 필요합니다. | 호스트 전용 RPC URL을 사용하여 Oracle Blockchain Platform Besu 환경으로 전환하거나 기타 EVM/Hardhat에 JSON-RPC를 사용하십시오. |
| 승인되지 않은 호출자 또는 디코딩된 사용자정의 오류 | 선택한 호출자/전자 지갑 계정, 대상 프록시, 활성 거버넌스 상태, 롤/정책 필요 조건 및 ABI 매개변수를 확인합니다. |
| 질의 또는 호출은 사용할 수 없는 상태로 유지됩니다. | 선택한 API 모드에 대한 필수 대상, 환경, 함수 및 서명자 필드를 완성합니다. |