caver.contract
caver.contract
객체를 사용하면 Klaytn 블록체인 플랫폼에서 스마트 컨트랙트와 쉽게 상호작용할 수 있습니다. 새로운 컨트랙트 객체를 생성할 때 해당 스마트 컨트랙트에 대한 JSON 인터페이스를 제공해야 하며, caver-js는 JavaScript로 된 컨트랙트 객체와의 모든 호출을 RPC를 통해 저수준 ABI 호출로 자동 변환해줍니다.
이를 통해 마치 JavaScript 객체처럼 스마트 컨트랙트와 상호작용할 수 있습니다.
caver.contract.create
caver.contract.create(jsonInterface [, address] [, options])
JSON 인터페이스 객체에 정의된 모든 메서드와 이벤트가 포함된 새 컨트랙트 인스턴스를 생성합니다. 이 함수는 new caver.contract와 동일하게 작동합니다.
참고 caver.contract.create
는 caver-js v1.6.1 부터 지원됩니다.
매개변수
new caver.contract을 참조하세요.
리턴 값
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}')
caver.contract
new caver.contract(jsonInterface [, address] [, options])
JSON 인터페이스 객체에 정의된 모든 메서드와 이벤트가 포함된 새 컨트랙트 인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
jsonInterface | Object | 컨트랙트를 인스턴스화할 JSON 인터페이스 |
address | string | (선택 사항) 호출할 스마트 컨트랙트의 주소입니다. 나중에 myContract.options.address = '0x1234..' 를 사용하여 추가할 수 있습니다. |
options | Object | (선택 사항) 컨트랙트의 옵션입니다. 자세한 내용은 아래 표를 참조하세요. |
옵션 개체에는 다음이 포함됩니다:
이름 | 유형 | 설명 |
---|---|---|
from | string | (선택 사항) 트랜잭션이 이루어져야 하는 주소입니다. |
gasPrice | string | (선택 사항) 트랜잭션에 사용할 peb 단위의 가스 가격입니다. |
gas | number | (선택 사항) 트랜잭션에 제공되는 최대 가스(가스 한도)입니다. |
data | string | (선택 사항) 컨트랙트의 바이트 코드입니다. 컨트랙트가 배포될 때 사용됩니다. |
feeDelegation | boolean | (선택 사항) 수수료 위임 트랜잭션을 사용할지 여부입니다. |
feePayer | string | (선택 사항) 트랜잭션 수수료를 지불하는 수수료 납부자의 주소입니다. feeDelegation 이 true 인 경우, 이 값은 트랜잭션의 feePayer 필드로 설정됩 니다. |
feeRatio | string | (선택 사항) 수수료 납부자가 부담하게 될 트랜잭션 수수료의 비율입니다. feeDelegation 이 true 이고 feeRatio 가 유효한 값으로 설정되어 있으면 부분 수수료 위임 트랜잭션이 사용됩니다. 유효한 범위는 1에서 99 사이입니다. 유효한 범위는 1에서 99 사이이며, 0 또는 100 이상의 비율은 허용되지 않습니다. |
리턴 값
유형 | 설명 |
---|---|
object | 모든 메서드와 이벤트가 있는 컨트랙트 인스턴스입니다. |
예시
const myContract = new caver.contract([...], '0x{address in hex}', { gasPrice: '25000000000' })
myContract.options
myContract.options
컨트랙트 인스턴스에 대한 options
객체입니다. 트랜잭션을 전송할 때 from
, gas
, gasPrice
, feePayer
및 feeRatio
가 대체 값으로 사용됩니다.
속성
이름 | 유형 | 설명 |
---|---|---|
address | string | 컨트랙트가 배포된 주소입니다. |
jsonInterface | Array | 컨트랙트의 JSON 인터페이스입니다. |
from | string | 컨트랙트 배포/실행 트랜잭션이 전송되는 기본 주소입니다. 트랜잭션을 생성할 때 from 주소가 정의되지 않은 경우, 이 myContract.options.from 이 항상 트랜잭션을 생성하는 데 사용됩니다. |
gasPrice | string | 트랜잭션에 사용할 peb 단위의 가스 가격입니다. |
gas | number | 트랜잭션에 제공되는 최대 가스(가스 한도)입니다. |
data | string | 컨트랙트의 바이트 코드입니다. 컨트랙트가 배포될 때 사용됩니다. |
feeDelegation | boolean | (선택 사항) 수수료 위임 트랜잭션을 사용할지 여부입니다. |
feePayer | string | (선택 사항) 트랜잭션 수수료를 지불하는 수수료 납부자의 주소입니다. feeDelegation 이 true 인 경우, 이 값은 트랜잭션의 feePayer 필드로 설정됩니다. |
feeRatio | string | (선택 사항) 수수료 납부자가 부담하게 될 트랜잭션 수수료의 비율입니다. feeDelegation 이 true 이고 feeRatio 가 유효한 값으로 설정되어 있으면 부분 수수료 위임 트랜잭션이 사용됩니다. 유효한 범위는 1에서 99 사이입니다. 유효한 범위는 1에서 99 사이이며, 0 또는 100 이상의 비율은 허용되지 않습니다. |
참고 feeDelegation
, feePayer
및 feeRatio
는 caver-js v1.6.1 부터 지원됩니다.
예시
> 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.options.address
이 컨트랙트 인스턴스 myContract
에 사용되는 주소입니다. 이 컨트랙트에서 caver-js에 의해 생성된 모든 트랜잭션은 이 주소를 트랜잭션의 to
로 포함합니다.
속성
Number | 유형 | 설명 |
---|---|---|
address | string | null | 이 컨트랙트의 주소 또는 아직 설정되지 않은 경우 null 입니다. |
예)
> myContract.options.address'0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae'// set a contract address> myContract.options.address = '0x1234FFDD...'
myContract.options.jsonInterface
myContract.options.jsonInterface
이 컨트랙트 myContract
의 ABI에서 파생된 JSON 인터페이스 객체입니다.
속성
이름 | 유형 | 설명 |
---|---|---|
jsonInterface | Array | 이 컨트랙트의 JSON 인터페이스입니다. 이를 다시 설정하면 컨트랙트 인스턴스의 메서드와 이벤트가 다시 생성됩니다. |
예시
> myContract.options.jsonInterface[ { constant: true, inputs: [ { name: 'interfaceId', type: 'bytes4' } ], name: 'supportsInterface', outputs: [ { name: '', type: 'bool' } ], payable: false, stateMutability: 'view', type: 'function', signature: '0x01ffc9a7', }, ... { anonymous: false, inputs: [ { indexed: true, name: 'owner', type: 'address' }, { indexed: true, name: 'spender', type: 'address' }, { indexed: false, name: 'value', type: 'uint256' } ], name: 'Approval', type: 'event', signature: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925', },]// set a new jsonInterface> myContract.options.jsonInterface = [...]
myContract.clone
myContract.clone([contractAddress])
현재 컨트랙트 인스턴스를 복제합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
contractAddress | String | (선택 사항) 새 컨트랙트의 주소입니다. 생략하면 원래 인스턴스의 주소로 설정됩니다(예: myContract.options.address ). |