Contract deploy 시 gas 값 설정 관련 문의

안녕하세요? 평소 포럼을 통해 많은 도움을 받고 있습니다.

오늘 문의 드릴 사항은 contract deploy 시 gas 량 설정에 대한 질문입니다.

ethereum의 경우, estimateGas를 통해 얻어진 gas값을 그대로 설정해주어도 contract deploy하는데 문제가 없는데,
klaytn에서는 실제 ide.klay.com을 통해 contract 배포될 때 사용된 gas 값으로 설정할 경우, "txError: 0x5"가 반환됩니다.

혹시 gas값 세팅할 때 설정 rule 이 있는지 궁금합니다.

(측정된 gas값의 * 1.5 를 한다거나 하는…)

감사합니다.

안녕하세요.
어떠한 판단을 하기 전에, 몇가지 질문을 드리고자 합니다.

  1. 혹시 상황을 좀더 자세히 알기 위해, cypress나 baobab에 deploy를 날리신 트랜잭션의 해쉬값을 알 수 있을까요?
  2. 질문주신 내용이 애매하게 해석됩니다.
    2-1. ide.klaytn.com을 통해 잘 배포되던 컨트랙트와 gas limit 값으로 다른 방식으로 배포하려니 안됨
    2-2. ide.klaytn.com을 통해 배포하려니 안됨
    2번 질문 내용은 어떤 부분에 해당됩니까? 다소 질문이 중의적으로 들리는 것 같습니다.

감사합니다.

  1. 자체 구축한 service chain에서 확인한 사항입니다.

  2. 2.1에 해당합니다.

실제 transaction에 소모된 gas (:2500912) 를 sendRawTransaction에서 그대로 설정했을 때 아래와 같이 gas 부족 에러가 뜹니다.

에러 내용은 0x5 입니다.
0x5: 컨트랙트 생성 코드의 스토리지의 가스가 부족합니다.

도움주시면 감사하겠습니다.

안녕하세요.

클레이튼에서 각 트랜잭션 타입별로 계산되는 Gas의 양이 다른데요.

estimateGas는 말 그대로 근사치이기 때문에 나온 값보다 조금 더 충분하게 Gas를 입력하셔서 트랜잭션을 전송해보시기 바랍니다.

감사합니다.

그럼 약 1.5배 정도로 설정하면 될까요?

이더리움 wallet app들도 보통 gas * 1.5를 설정하는 wallet들이 많던데

혹시 "조금 더 충분한 값"의 예시가 있을까요?

감사합니다.

caver-java의 kct package의 KIP7, 17, 37 contract class를 기준으로 말씀드리면 estimateGas()를 통해 나온 값의 1.5 ~1.7을 곱한 값을 설정해서 사용하고 있습니다.

1 Like