가스와 수수료
가스는 이더리움 네트워크에 필수적입니다. 자동차가 달리기 위해 휘발유가 필요한 것과 마찬가지로, 이더리움이 작동할 수 있게 해주는 연료입니다.
전제 조건
이 페이지를 더 잘 이해하려면 먼저 트랜잭션과 EVM에 대해 읽어보시기를 권장합니다.
가스란 무엇인가요?
가스는 이더리움 네트워크에서 특정 작업을 실행하는 데 필요한 컴퓨팅 노력의 양을 측정하는 단위를 의미합니다.
각 이더리움 트랜잭션을 실행하려면 컴퓨팅 리소스가 필요하므로, 이더리움이 스팸에 취약해지거나 무한 컴퓨팅 루프에 빠지지 않도록 해당 리소스에 대한 비용을 지불해야 합니다. 컴퓨팅에 대한 지불은 가스비 형태로 이루어집니다.
가스비는 어떤 작업을 수행하는 데 사용된 가스의 양에 단위 가스당 비용을 곱한 값입니다. 이 수수료는 트랜잭션의 성공 여부와 관계없이 지불됩니다.
Ethereum EVM illustrated (opens in a new tab)에서 발췌한 다이어그램
가스비는 이더리움의 기본 암호화폐인 이더(ETH)로 지불해야 합니다. 가스 가격은 일반적으로 ETH의 단위 중 하나인 Gwei로 표시됩니다. 1 Gwei는 10억 분의 1 ETH(0.000000001 ETH 또는 10-9 ETH)와 같습니다.
예를 들어, 가스 비용이 0.000000001 이더라고 말하는 대신 가스 비용이 1 Gwei라고 말할 수 있습니다.
'Gwei'라는 단어는 '10억 Wei'를 의미하는 'giga-wei'의 축약어입니다. 1 Gwei는 10억 Wei와 같습니다. Wei 자체(b-money (opens in a new tab)의 창시자인 웨이 다이 (opens in a new tab)의 이름을 땀)는 ETH의 가장 작은 단위입니다.
가스비는 어떻게 계산되나요?
트랜잭션을 제출할 때 지불할 의향이 있는 가스의 양을 설정할 수 있습니다. 특정 양의 가스를 제안함으로써, 다음 블록에 트랜잭션이 포함되도록 입찰하는 것입니다. 너무 적게 제안하면 검증자가 트랜잭션을 포함할 가능성이 낮아져 트랜잭션이 늦게 실행되거나 아예 실행되지 않을 수 있습니다. 너무 많이 제안하면 ETH를 낭비할 수 있습니다. 그렇다면 얼마를 지불해야 할지 어떻게 알 수 있을까요?
지불하는 총 가스는 base fee(기본 수수료)와 priority fee(우선순위 수수료, 팁)의 두 가지 구성 요소로 나뉩니다.
base fee는 프로토콜에 의해 설정되며, 트랜잭션이 유효한 것으로 간주되려면 최소한 이 금액을 지불해야 합니다. priority fee는 검증자가 다음 블록에 포함할 트랜잭션을 선택할 때 매력적으로 보이도록 기본 수수료에 추가하는 팁입니다.
base fee만 지불하는 트랜잭션은 기술적으로 유효하지만, 검증자가 다른 트랜잭션 대신 이를 선택할 인센티브를 제공하지 않기 때문에 포함될 가능성이 낮습니다. '올바른' priority는 트랜잭션을 보낼 당시의 네트워크 사용량에 따라 결정됩니다. 수요가 많으면 priority를 더 높게 설정해야 할 수 있지만, 수요가 적을 때는 더 적게 지불할 수 있습니다.
예를 들어, Jordan이 Taylor에게 1 ETH를 지불해야 한다고 가정해 보겠습니다. ETH 전송에는 21,000 단위의 가스가 필요하며 기본 수수료는 10 Gwei입니다. Jordan은 2 Gwei의 팁을 포함합니다.
이제 총 수수료는 다음과 같습니다.
units of gas used * (base fee + priority fee)
여기서 base fee는 프로토콜에 의해 설정된 값이고 priority fee는 사용자가 검증자에게 주는 팁으로 설정한 값입니다.
예: 21,000 * (10 + 2) = 252,000 gwei (0.000252 ETH).
Jordan이 돈을 보내면 Jordan의 계정에서 1.000252 ETH가 차감됩니다. Taylor의 계정에는 1.0000 ETH가 입금됩니다. 검증자는 0.000042 ETH의 팁을 받습니다. 0.00021 ETH의 base fee는 소각됩니다.
기본 수수료
모든 블록에는 예약 가격 역할을 하는 기본 수수료가 있습니다. 블록에 포함될 자격을 얻으려면 제안된 가스당 가격이 최소한 기본 수수료와 같아야 합니다. 기본 수수료는 현재 블록과 독립적으로 계산되며 이전 블록들에 의해 결정되므로 사용자가 트랜잭션 수수료를 더 쉽게 예측할 수 있습니다. 블록이 생성되면 이 기본 수수료는 "소각"되어 유통에서 제거됩니다.
기본 수수료는 이전 블록의 크기(모든 트랜잭션에 사용된 가스의 양)를 목표 크기(가스 한도의 절반)와 비교하는 공식에 의해 계산됩니다. 목표 블록 크기가 목표치를 초과하거나 미달하는 경우 기본 수수료는 블록당 최대 12.5%까지 증가하거나 감소합니다. 이러한 기하급수적인 증가는 블록 크기가 무기한으로 높게 유지되는 것을 경제적으로 불가능하게 만듭니다.
| 블록 번호 | 포함된 가스 | 수수료 증가율 | 현재 기본 수수료 |
|---|---|---|---|
| 1 | 18M | 0% | 100 Gwei |
| 2 | 36M | 0% | 100 Gwei |
| 3 | 36M | 12.5% | 112.5 Gwei |
| 4 | 36M | 12.5% | 126.6 Gwei |
| 5 | 36M | 12.5% | 142.4 Gwei |
| 6 | 36M | 12.5% | 160.2 Gwei |
| 7 | 36M | 12.5% | 180.2 Gwei |
| 8 | 36M | 12.5% | 202.7 Gwei |
위 표에서는 가스 한도를 3,600만으로 사용한 예를 보여줍니다. 이 예에 따라 블록 번호 9에서 트랜잭션을 생성할 때, 지갑은 다음 블록에 추가될 최대 기본 수수료가 current base fee * 112.5% 또는 202.7 gwei * 112.5% = 228.1 gwei임을 사용자에게 확실하게 알려줍니다.
또한 가득 찬 블록이 생성되기 전 기본 수수료가 증가하는 속도 때문에 가득 찬 블록이 장기간 지속되는 현상을 볼 가능성은 낮다는 점에 유의해야 합니다.
| 블록 번호 | 포함된 가스 | 수수료 증가율 | 현재 기본 수수료 |
|---|---|---|---|
| 30 | 36M | 12.5% | 2705.6 Gwei |
| ... | ... | 12.5% | ... |
| 50 | 36M | 12.5% | 28531.3 Gwei |
| ... | ... | 12.5% | ... |
| 100 | 36M | 12.5% | 10302608.6 Gwei |
우선순위 수수료(팁)
우선순위 수수료(팁)는 검증자가 블록 가스 한도 내에서 블록 내 트랜잭션 수를 최대화하도록 장려합니다. 팁이 없다면, 합리적인 검증자는 스테이킹 보상이 블록 내 트랜잭션 수와 무관하기 때문에 실행 계층이나 합의 레이어의 직접적인 페널티 없이 더 적은 수의 트랜잭션을 포함하거나 아예 포함하지 않을 수도 있습니다. 또한 팁을 통해 사용자는 동일한 블록 내에서 우선순위를 얻기 위해 다른 사용자보다 더 높은 입찰가를 제시할 수 있으며, 이는 긴급성을 효과적으로 나타냅니다.
최대 수수료
네트워크에서 트랜잭션을 실행하기 위해 사용자는 트랜잭션 실행을 위해 지불할 의향이 있는 최대 한도를 지정할 수 있습니다. 이 선택적 매개변수를 maxFeePerGas라고 합니다. 트랜잭션이 실행되려면 최대 수수료가 기본 수수료와 팁의 합을 초과해야 합니다. 트랜잭션 발신자는 최대 수수료와 기본 수수료 및 팁의 합계 간의 차액을 환불받습니다.
블록 크기
각 블록의 목표 크기는 현재 가스 한도의 절반이지만, 블록 크기는 네트워크 수요에 따라 블록 한도(목표 블록 크기의 2배)에 도달할 때까지 증가하거나 감소합니다. 프로토콜은 모색(tâtonnement) 과정을 통해 목표치에서 균형 잡힌 평균 블록 크기를 달성합니다. 즉, 블록 크기가 목표 블록 크기보다 크면 프로토콜은 다음 블록의 기본 수수료를 인상합니다. 마찬가지로 블록 크기가 목표 블록 크기보다 작으면 프로토콜은 기본 수수료를 인하합니다.
기본 수수료가 조정되는 양은 현재 블록 크기가 목표치에서 얼마나 벗어났는지에 비례합니다. 이는 빈 블록의 경우 -12.5%, 목표 크기일 때 0%, 가스 한도에 도달한 블록의 경우 최대 +12.5%까지 선형적으로 계산됩니다. 가스 한도는 검증자의 신호 및 네트워크 업그레이드를 통해 시간이 지남에 따라 변동될 수 있습니다. 여기에서 시간에 따른 가스 한도 변화를 확인 (opens in a new tab)할 수 있습니다.
실제 가스비 계산
트랜잭션을 실행하기 위해 지불할 의향이 있는 금액을 명시적으로 지정할 수 있습니다. 그러나 대부분의 지갑 제공업체는 사용자에게 부담되는 복잡성을 줄이기 위해 권장 트랜잭션 수수료(기본 수수료 + 권장 우선순위 수수료)를 자동으로 설정합니다.
가스비는 왜 존재하나요?
요약하자면, 가스비는 이더리움 네트워크를 안전하게 유지하는 데 도움이 됩니다. 네트워크에서 실행되는 모든 컴퓨팅에 수수료를 요구함으로써 악의적인 행위자가 네트워크에 스팸을 보내는 것을 방지합니다. 코드에서 우발적이거나 악의적인 무한 루프 또는 기타 컴퓨팅 낭비를 방지하기 위해 각 트랜잭션은 사용할 수 있는 코드 실행의 컴퓨팅 단계 수에 한도를 설정해야 합니다. 컴퓨팅의 기본 단위는 "가스"입니다.
트랜잭션에는 한도가 포함되어 있지만, 트랜잭션에서 사용되지 않은 가스는 사용자에게 반환됩니다(예: max fee - (base fee + tip) 반환됨).
Ethereum EVM illustrated (opens in a new tab)에서 발췌한 다이어그램
가스 한도란 무엇인가요?
가스 한도는 트랜잭션에서 소비할 의향이 있는 최대 가스 양을 의미합니다. 스마트 컨트랙트가 포함된 더 복잡한 트랜잭션은 더 많은 컴퓨팅 작업이 필요하므로 단순한 결제보다 더 높은 가스 한도가 필요합니다. 표준 ETH 전송에는 21,000 단위의 가스 한도가 필요합니다.
예를 들어, 단순한 ETH 전송에 50,000의 가스 한도를 설정하면 EVM은 21,000을 소비하고 나머지 29,000을 돌려받게 됩니다. 그러나 가스를 너무 적게 지정하면(예: 단순한 ETH 전송에 20,000의 가스 한도 설정) 검증 단계에서 트랜잭션이 실패합니다. 블록에 포함되기 전에 거부되며 가스는 소비되지 않습니다. 반면, 실행 중에 트랜잭션의 가스가 부족해지면(예: 스마트 컨트랙트가 중간에 모든 가스를 소진함) EVM은 모든 변경 사항을 되돌리지만, 제공된 모든 가스는 수행된 작업에 대해 여전히 소비됩니다.
가스비가 왜 그렇게 높아질 수 있나요?
높은 가스비는 이더리움의 인기 때문입니다. 수요가 너무 많으면 사용자는 다른 사용자의 트랜잭션보다 높은 입찰가를 제시하기 위해 더 높은 팁 금액을 제안해야 합니다. 팁이 높을수록 트랜잭션이 다음 블록에 포함될 가능성이 높아집니다. 또한 더 복잡한 스마트 컨트랙트 앱은 기능을 지원하기 위해 많은 작업을 수행할 수 있으므로 많은 가스를 소비하게 됩니다.
가스 비용 절감을 위한 이니셔티브
이더리움 확장성 업그레이드는 궁극적으로 가스비 문제의 일부를 해결해야 하며, 이를 통해 플랫폼은 초당 수천 건의 트랜잭션을 처리하고 전 세계적으로 확장할 수 있게 될 것입니다.
레이어 2 (l2) 확장은 가스 비용, 사용자 경험 및 확장성을 크게 개선하기 위한 주요 이니셔티브입니다.
가스비 모니터링
가스 가격을 모니터링하여 더 적은 비용으로 ETH를 전송하려면 다음과 같은 다양한 도구를 사용할 수 있습니다.
- Etherscan (opens in a new tab) 트랜잭션 가스 가격 추정기
- Blockscout (opens in a new tab) 오픈 소스 트랜잭션 가스 가격 추정기
- ETH Gas Tracker (opens in a new tab) 이더리움 및 L2 가스 가격을 모니터링하고 추적하여 트랜잭션 수수료를 줄이고 비용 절감
- Blocknative ETH Gas Estimator (opens in a new tab) 유형 0 레거시 트랜잭션과 유형 2 EIP-1559 트랜잭션을 모두 지원하는 가스 추정 크롬 확장 프로그램.
- Cryptoneur Gas Fees Calculator (opens in a new tab) 메인넷, 아비트럼 및 폴리곤의 다양한 트랜잭션 유형에 대한 가스비를 현지 통화로 계산.
관련 도구
- Blocknative's Gas Platform (opens in a new tab) Blocknative의 글로벌 멤풀 데이터 플랫폼으로 구동되는 가스 추정 API
- Gas Network (opens in a new tab) 온체인 가스 오라클. 35개 이상의 체인 지원.