Gas는 트랜잭션 코드에 있는 모든 Opcode를 실행하는데 필요한 수수료를 측정하는데 사용하는 단위이다.
1 이더 = 10^18 wei
1 Gwei = 10^9wei

EOA에 Gas Limit을 지불하고도 남을 충분한 이더가 들어있다면 트랜잭션은 문제없이 실행될 것이다.
반대로 충분한 가스를 제공하지 않은 경우 트랜잭션은 OOG 상태가 되며, 실행이 중지된다. 상태가 변경되었다면, 트랜잭션이 실행되기 이전의 상태로 돌아간다. 실패한 트랜잭션에 대한 기록이 남으며, 이 기록에서 어떤 트랜잭션이 시도되었고 어디에서 실패했는지 남게 된다. 단, 연산에 사용된 가스는 환불되지 않는다.
환불되지 않은 가스는 채굴자 주소로 송금되며, 채굴자가 연산 수행에 자원을 소모했기 때문에 보상으로 가스 수수료를 받는 것이다.
일반적으로 송신자가 지불하고자 하는 가격이 높을 수록, 또는 실제 연산에 드는 가스의 양이 많을 수록 채굴자는 더 많은 수수료를 받을 수 있기 때문에 해당 트랜잭션을 우선 선택하려 하며, 채굴자들은 트랜잭션 송신자가 Gas Price를 어느정도로 설정해야 할지 알려주기 위해 트랜잭션을 실행하거나 검증하는데 드는 Gas Price의 최솟값을 광고하기도 한다.
스토리지 수수료
⇒ 연산 분만 아니라, 스토리지를 사용할 때도 수수료를 내야한다. 최송 수수료는 32바이트 단위에 비례한다.
스토리지가 증가하면 모든 노드에서 이더리움 상태 데이터베이스의 크기가 커지기 때문엥 저장되는 데이터의 양을 최대한 적게 유지할 수록 인센티브를 부여한다.
트랜잭션이 스토리지에 있는 특정 요소를 지우는 연산을 수행하면, 수수료를 면제하고, 저장공간을 확보했기 때문에 기존 요소를 스토리지에 추가했을 때 지불했던 가스를 환불받는다.
(즉, 스토리지에 특정 데이터를 저장하였다가 지울경우, 결과적으로는 저장하는 연산에 대한 수수료만 지불하게 된다는 뜻이다! 예를 들면 아래와 같다)
저장 연산(1가스) + 스토리지 수수료(1가스) + 지우기 연산(0가스) + 스토리지 수수료(-1가스) = 1가스
수수료를 지불하는 이유
: 이더리움 네트워크 위에서 동작하는 스마트 컨트랙트 작업들이 전체 노드에 영향을 미치기 때문에 부과한다.
이더리움은 튜링 완전 언어이기 때문에 반복문을 지원하는데, 이 반복문은 무한루프가 일어날 수 있다. 무한루프로 인해 엄청난 자원을 소모하게 되어 이더리움 네트워크 전체가 멈출 수도 있다.
수수료는 이러한 악의적인 공격으로부터 네트워크를 보호한다. gas가 소모되어 실행을 멈출 수 있기 때문이다.