2.6 가스(Gas), 가스 가격(Gas Price), 가스 한도(Gas Limit)

가스(Gas), 가스 가격, 가스 한도

가스(Gas)

이더리움 블록체인에 스마트 계약을 배포하고 트랜잭션을 실행하기 위해서는 각 상호 작용과 관련된 비용이 소모됩니다. 블록체인에서 트랜잭션을 실행하려면 네트워크의 채굴자에게 이더를 지불해야 합니다.

그럼 트랜잭션을 위해 지불하는 이더의 양은 누가 결정할까요? 이는 이더리움에 익숙하지 않은 많은 개발자들이 혼란스러워하는 부분이기도 합니다. 여기에 대한 답은 이더리움 황서에 기재되어 있는데, 트랜잭션에 얼마나 많은 '단위 연산'이 포함되는지에 따라 달라집니다. 예를 들어 트랜잭션이 단순히 두 개의 숫자를 더하는 작업이라면 이는 3개의 단위 연산에 해당합니다. 곱셈이라면 5개의 단위 연산에 해당합니다. 이러한 연산의 단위를 가스(Gas)라고 합니다.

가스 가격(Gas Price)

각 트랜잭션이 얼마나 많은 가스를 필요로 하는지 알아도, 실제로 채굴자에게 지불해야 하는 이더의 양은 아직 알 수 없습니다. 이것을 결정하는 요소가 가스 가격(Gas price)입니다. 재미있는 점은, 트랜잭션 생성자가 원하는 가스 가격을 설정할 수 있다는 점입니다. 예를 들어, '가스당 3Gwei를 지불할 용의가 있습니다' 라고 설정하는 식입니다. 당신의 트랜잭션이 100000가스를 소비하고 가스 가격을 3Gwei로 설정하면, 해당 트랜잭션에 대한 수수료로 3000000Gwei를 지불하게 됩니다.

설정한 가스 가격이 높을수록 트랜잭션이 더 빨리 처리됩니다. 이는 대부분의 채굴자들이 가스 가격의 내림차순으로 트랜잭션을 분류하고 가스 가격이 높은 트랜잭션을 선택하여 블록에 포함시키기 때문입니다. 가격을 낮게 책정해도 결국 트랜잭션이 블록에 포함되기는 하겠지만, 그 대기 시간이 상당히 길어질 수 있습니다.

가스 한도(Gas Limit)

트랜잭션이 소모하는 가스의 양을 정확하게 파악하는 것은 매우 어렵습니다. 사용자 입장에서는 아무 생각 없이 트랜잭션을 전송했다가 수백 달러 어치의 이더를 수수료로 소모하고 싶지는 않을 겁니다. 사용자는 이 상황을 피하기 위해, 트랜잭션을 실행하기 위해 사용할 가스의 최대 금액을 나타내는 가스 한도(Gas Limit)를 지정할 수 있습니다.

주의!

가스 한도를 블록 가스 한도(Block Gas Limit)과 혼동하면 안 됩니다. 블록 가스 한도는 이더리움의 각 블록에 적용되는 최대 캡입니다. 현재 이더리움의 블록은 가스 총액이 800만 이내의 범위에서만 트랜잭션을 포함할 수 있습니다. 각 블록에 대해 가스 제한이 있는 이유는, 누군가가 무한 루프를 실행할 수 없도록 하기 위함입니다. 무한 루프가 발생하면 트랜잭션 실행이 완료되지 않아 블록 채굴이 발생하지 않기 때문입니다.