caver.contract
caver.contract
객체는 Klaytn 블록체인과 스마트 컨트랙트 간의 상호작용을 쉽게 만들어 줍니다. 새 컨트랙트 객체를 생성할 때 해당 스마트 컨트랙트를 위해 JSON 인터페이스를 제공해야 하는데, 이때 caver-js가 자바스크립트로 작성된 컨트랙트 객체와의 모든 호출을 RPC를 통해 하위 수준의 ABI 호출로 자동 변환시켜줍니다.이를 통해 스마트 컨트랙트가 마치 자바스크립트 객체인 것처럼 스마트 컨트랙트와 상호작용할 수 있습니다.
caver.contract.create(jsonInterface [, address] [, options])
JSON 인터페이스 오브젝트에 정의된 모든 메소드 및 이벤트로 새 컨트랙트 인스턴스를 생성합니다. This function works the same as new caver.contract.
파라미터
리턴값
예시
const contract = caver.contract.create([
{
constant: true,
inputs: [{ name: 'interfaceId', type: 'bytes4' }],
name: 'supportsInterface',
outputs: [{ name: '', type: 'bool' }],
payable: false,
stateMutability: 'view',
type: 'function',
},
...
], '0x{address in hex}')
new caver.contract(jsonInterface [, address] [, options])
JSON 인터페이스 오브젝트에 정의된 모든 메소드 및 이벤트로 새 컨트랙트 인스턴스를 생성합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
jsonInterface | 객체 | 컨트랙트를 인스턴스화하기 위한 JSON 인터페이스 |
address | string | (선택 사항) 호출할 스마트 컨트랙트의 주소. myContract.options.address = '0x1234..' 를 사용하여 나중에 추가할 수 있습니다. |
options | 객체 | (선택 사항) 컨트랙트 옵션. 자세한 내용은 아래 표를 참조하세요. |
옵션 개체에는 다음이 포함됩니다:
이름 | 타입 | 설명 |
---|---|---|
from | string | (선택 사항) 트랜잭션이 만들어진 송신자 주소. |
가스 가격 | string | (선택 사항) 트랜잭션에 사용할 peb 단위의 가스 가격. |
gas | number | (선택 사항) 트랜잭션에 규정된 최대 가스 (가스 제한). |
데이터 | string | (선택 사항) 컨트랙트의 바이트 코드. 컨트랙트가 배포될 때 사용됩니다. |
feeDelegation | boolean | (선택 사항) 수수료 위임 트랜잭션 사용 여부를 나타냅니다. |
feePayer | string | (선택 사항) 트랜잭션 수수료를 부담하는 수수료 납부자의 주소입니다. feeDelegation 이 true 일 때, 값은 트랜잭션의 feePayer 필드에 설정됩니다. |
feeRatio | string | (optional) Fee payer가 부담하게될 트랜잭션 수수료의 비율입니다. feeDelegation 이 true 이며, feeRatio 가 유효한 값으로 설정되었을 경우, 부분 수수료 위임 트랜잭션이 사용됩니다. 유효한 범위는 1에서 99 사이입니다. 0이나 100 이상의 값은 허용되지 않습니다. |
리턴값
타입 | 설명 |
---|---|
객체 | 모든 메소드와 이벤트가 있는 컨트랙트 인스턴스. |
예시
const myContract = new caver.contract([...], '0x{address in hex}', { gasPrice: '25000000000' })
myContract.options
컨트랙트 인스턴스에 대한
options
객체. from
, gas
, gasPrice
, feePayer
그리고 feeRatio
는 트랜잭션 전송시 대체값으로 사용됩니다.속성
이름 | 타입 | 설명 |
---|---|---|
address | string | 컨트랙트가 배포된 주소. |
jsonInterface | Array | 컨트랙트의 JSON 인터페이스. |
from | string | 컨트랙트 배포/실행 트랜잭션을 전송하는 기본 주소입니다. 트랜잭션 생성시 from 주소가 정의되어 있지 않다면, 트랜잭션 생성시 항상 myContract.options.from 가 사용됩니다. |
가스 가격 | string | 트랜잭션에 사용할 peb 단위의 가스 가격. |
gas | number | 트랜잭션에 제공된 최대 가스 (가스 제한). |
데이터 | string | 컨트랙트의 바이트 코드. 컨트랙트가 배포될 때 사용됩니다. |
feeDelegation | boolean | (선택 사항) 수수료 위임 트랜잭션 사용 여부를 나타냅니다. |
feePayer | string | (선택 사항) 트랜잭션 수수료를 부담하는 수수료 납부자의 주소입니다. feeDelegation 이 true 일 때, 값은 트랜잭션의 feePayer 필드에 설정됩니다. |
feeRatio | string | (optional) Fee payer가 부담하게될 트랜잭션 수수료의 비율입니다. feeDelegation 이 true 이며, feeRatio 가 유효한 값으로 설정되었을 경우, 부분 수수료 위임 트랜잭션이 사용됩니다. 유효한 범위는 1에서 99 사이입니다. 0이나 100 이상의 값은 허용되지 않습니다. |
예시
> myContract.options
{
address: [Getter/Setter],
jsonInterface: [Getter/Setter],
from: [Getter/Setter],
feePayer: [Getter/Setter],
feeDelegation: [Getter/Setter],
feeRatio: [Getter/Setter],
gasPrice: [Getter/Setter],
gas: [Getter/Setter],
data: [Getter/Setter]
}
> myContract.options.from = '0x1234567890123456789012345678901234567891' // default from address
> myContract.options.gasPrice = '25000000000000' // default gas price in peb
> myContract.options.gas = 5000000 // provide as fallback always 5M gas
> myContract.options.feeDelegation = true // use fee delegation transaction
> myContract.options.feePayer = '0x1234567890123456789012345678901234567891' // default fee payer address
> myContract.options.feeRatio = 20 // default fee ratio when send partial fee delegation transaction
myContract.options.address
이 컨트랙트 인스턴스
myContract
에 사용된 주소. 해당 컨트랙트에서 caver-js에 의해 생성된 모든 트랜잭션에 이 주소가 to