Smart contract function gas limit

안녕하세요

Caver 예전 버전에서는 Smart Contract에서 사용 되고 있는 function의 gas limit을 아래와 같이 알수 있었는데요 1.5.2 버전에서는 DefaultGasProvider 클래스가 deprecated되었는데 1.5.2버전에서 gas limit을 알수 있는 방법이 있을까요?
BigInteger gasLimit = new DefaultGasProvider().getGasLimit(“Smart Contract Function Name”);

안녕하세요. 클레이튼 포럼에 질문을 남겨주셔서 감사드립니다. :slight_smile:

caver-java가 1.5버전으로 업데이트되면서 그 이전버전은 deprecated가 되었지만 하위호환성을 위해 코드를 그대로 남겨두었고 사용하시는데 문제 없습니다.

DefaultGasProvider 코드를 보시면 gasLimit은 contract의 함수 이름과 관계없이 DefaultGasProvider에 정의되어있는 값을 그대로 가져와서 사용합니다.

1.5 버전에서 Contract function의 gas limit을 알고싶으시다면, ContractMethod 클래스의 estimateGas()를 사용하시면 됩니다. 이 estimateGas는 내부적으로 Klaytn JSON/RPC API의 klay_estimateGas를 호출하여 값을 가지고 옵니다.

klay_estimateGas에 대해서 자세한 설명이 궁금하시다면 아래링크를 참고부탁드립니다.

사용법은, 예를 들어 Contract function에 contract의 상태를 변경시키는 store라는 함수가 있다는 가정하에

function store(uint256 value) {
 .....
}

아래와 같이 코드를 작성하고 실행하시면 됩니다.

Caver caver = new Caver(Caver.DEFAULT_URL);
Contract contract = new Contract(caver, ABIstr, contractAddr);
CallObject callObject = CallObject.createCallObject("contract's function executor address");
String gas = contract.getMethod("store).estimeateGas(Arrays.asList(123), callObject);

추가적인 질문이 있으시면 편안하게 다시 문의 부탁드리겠습니다. :slight_smile:

1 Like

답변 감사드립니다 :slight_smile:

2 Likes