❶ Gas Gas란 이더리움에서 수수료에 사용되는 값을 의미합니다. Smart Contract 상 코드가 Compile되고 나오는 Byte Code를 OP_CODE 테이블상에 지정된 Gas값으로 변환하여 수수료를 계산합니다. ❷ Gas Limit(Used) Gas Limit은 Block Gas Limit과 Transaction Gas Used으로 구분됩니다. Block Gas Limit은 해당 Block에 들어간 전체 Transaction Gas Used의 합을 의미하고, Transaction Gas Used은 해당 Transaction 실행에 들어간 Gas 양의 총합니다.
❸ Gas Price Gas Price는 해당 트랜잭션을 얼마나 빠르게 실행할지를 결정하기 위한 값입니다. 네트워크 상태에 따라 최소 Gas Price값은 유동적으로 변합니다.
❶ 거래 수수료
거래 수수료 = Gas Limit * Gas Price 입니다. Gas Limit은 최초 Transaction에는 예상 Limit이 들어가고 Transaction 실행 후에 실제 사용된 Gas Limit으로 수수료를 지급합니다.
❷ Block 보상 Bitcoin 과 달리 Coinbase(채굴 보상)은 거래 형태가 아닌 블록 내 beneficiary로 블록 채굴 보상(2ETH) + 거래 수수료 총합으로 지급됩니다.
❸ Uncle 보상 Ethereum 상에서는 Fork를 일부 허용하는 방식을 사용하고 있기 때문에 Uncle Bloc에 대해서 특정 계산에 따라 보상을 제공합니다.
❶ Run Smart Contract
EOA가 Smart Contract를 호출하게 되면 예상되는 가스 금액을 먼저 계산하여 지출 한 뒤, 실제 사용되는 양을 제외하고 남은 금액을 Refund 합니다. ❷ Out of Gas Smart Contract 실행도중 Gas가 부족한 경우 revert가 실행되고, 변경된 state가 모두 되돌려지고, 사용자에게 Gas 금액을 환불하게 됩니다. ❸ Selfdestruct Smart Contract를 Self Desturct로 사용불가능 상태로 바꾸게 되면, 일정 Gas를 사용자에게 환불을 해준다. 21년 비탈릭은 이를 악용하는 사용자를 막기위해 Refund가 불가능하게 하는 eip-3298을 제안하였다.
Source Code를 Compile 하면 각 함수별로 사용되는 OPCODE를 알 수 있다. 그럼 EVM은 해당 함수의 OPCODE와 사용된 데이터의 크기에 따라 Transaction Gas Limit을 하나씩 계산한다.
만약 실행 중 사용자의 Gas Limit을 초과하는 경우 잔액 부족 에러를 실행하고 모든 실행을 되돌린다.
EIP – 1559란 Gas Price값의 변동성이 너무 커 일반 사용자들이 사용하기 어려울 때 지불 할 수 있는 수수료의 범위를 지정하고 최소값으로 지불 할 수 있는 방안이다. 이를 통해 일정량의 거래 수수료를 소각하고 채굴자에게 기본 거래 수수료를 보장하는 방식이다.
Ethereum은 Bitcoin과 달리 코인 발행량의 제한이 없어서 자산 가치의 한계점으로 인정받고 있었다. 하지만 EIP-1559 도입 후 신규로 생성되는 ETH 만큼 소각되는 ETH의 양도 많아 지면서 Inflation을 억제하는 기능을 하고 있다.