작성
·
227
0
이더리움 GAS 계산 강의에서, Truffle console로 bet 함수의 가스비를 계산해보았습니다.
첫번째 실행과 두번째 실행시의 가스비가 15000 정도 차이가 나는데, 그 이유가 첫번째 실행에서는 tail 변수를 초기화해야해서 20000 gas가 소모되고 두번째 실행에서는 _tail 변수의 값만 업데이트하기 때문에 5000 gas가 소모되기 때문이라고 하셨습니다.
그런데 본 컨트렉트 코드에서는 tail을 초기화해주는 코드는 보이지 않고 오로지 _tail++; 코드만 존재하는데, 첫번째 실행에서도 업데이트를 해주는 것 아닐까요?
강사님의 답변을 기다리겠습니다!
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. gas 계산 강의에서 첫 번째 실행과 두 번째 실행의 가스비 차이에 대해 질문하셨습니다.
코드를 보면서 수동으로 계산하시는 것 같아, 말씀드리는 것이 어려운 것 같아요. 하지만 이전 코드에 대한 블록 데이터가 남아 있을 수 있기 때문에, 가스 비용이 첫 번째 실행과 두 번째 실행에서 차이가 날 수 있습니다.
또한, tail 변수 관련 코드는 함수 내부에 숨겨져 있을 수 있습니다. 강사님이 말씀하신 것처럼 이더리움에서는 오버헤드 문제를 막기 위해 코드 압축을 하기 때문에, 강사님께서 말씀하신 것처럼 코드를 실행하는 데에는 불필요한 가스를 사용하지 않습니다.
코드 내부에 작성된 gas 양도 참고하셔서 첫 번째 실행과 두 번째 실행의 gas 양도 비교해보시면 더욱 명확하게 이해하실 수 있을 거예요. 계속 궁금한 점이 있으시면 언제든지 댓글로 질문해주세요. 감사합니다.