EIP-1559: Fee market change for ETH 1.0 chain
이더리움 가스 수수료 모델을 개선하는 EIP입니다.
EIP-2718 트랜잭션 유형인 0x02
을 추가합니다.
블록당 기본 수수료(base fee)를 도입합니다.
London
포크와 함께 적용되었습니다.
적용일시: Aug 5, 2021, 12:33:42 PM +UTC
초록
0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s])
형식의 새로운 EIP-2718 트랜잭션 유형을 도입합니다.
프로토콜에는 가스당 기본 수수료(base fee)가 포함되며 이는 블록마다 공식에 의해 오르거나 내릴 수 있습니다. 이때, 공식은 부모 블록에서 사용된 가스와 부모 블록의 가스 타겟(블록 가스 리미트를 탄성 계수로 나눈 값)에 의해 결정됩니다. 이 알고리즘은 부모 가스 타겟보다 높을 때 기본 수수료가 증가하고, 낮을 때 기본 수수료가 감소하도록 합니다. 기본 수수료는 소각됩니다. 트랜잭션은 채굴자가 트랜잭션을 포함시키도록 채굴자에게 제공하는 가스당 최대 수수료(우선 순위 수수료)를 지정합니다. 또한 총 수수료(최대 수수료)를 지정합니다. 이는 우선 순위 수수료와 블록의 네트워크 수수료(기본 수수료)를 모두 포함합니다. 발신자는 트랜잭션이 포함된 블록의 가스당 기본 수수료를 항상 지불하며, 트랜잭션에 설정된 우선 순위 수수료를 지불합니다. 이 때, 두 수수료의 합은 트랜잭션의 최대 수수료를 초과하지 않아야 합니다.
등장 배경
이더리움은 과거에 간단한 경매 메커니즘을 사용하여 트랜잭션 수수료를 책정했습니다. 사용자는 입찰(가스 가격)을 지정하여 트랜잭션을 전송하고, 채굴자는 가장 높은 입찰가를 포함한 트랜잭션을 선택하며, 블록에 포함된 트랜잭션은 지정한 입찰금을 지불합니다. 이는 여러 가지 큰 비효율성을 야기합니다.
트랜잭션 수수료 수준의 변동성과 트랜잭션의 사회적 비용 사이의 불일치
성숙한 공개형 블록체인(많은 사용량으로 인해 블록이 가득 차는)에서 트랜잭션을 포함하기 위한 입찰은 극단적으로 변동성이 높습니다. 네트워크에서 제시하는 가스당 비용이 1 nanoeth일 때보다 10 nanoeth일 때 실제로 10배 더 많은 비용을 지불해야 한다는 것은 터무니 없는 주장입니다. 8백만 가스와 8백만 2천 가스 정도의 차이일 뿐입니다.
사용자에게 불필요한 지연 시간
고정된 블록당 가스 제한과 트랜잭션량의 자연스러운 변동성으로 인해 트랜잭션은 종종 몇 블록 동안 포함되기를 기다려야 하지만 이는 사회적으로 비생산적입니다. 블록별 수요의 차이를 충족하기 위해 한 블록이 더 커지고 다음 블록이 더 작아질 수 있는 "slack" 메커니즘이 없기 때문에 누구에게도 이득이 없습니다.
최초 가격 경매의 비효율성
현재 접근 방식은 거래 송신자가 입찰 및 최대 수수료를 포함하는 거래를 게시하고, 채굴자가 가장 높은 가격의 거래를 선택하면 송신자가 입찰한 가격을 지불하는 것입니다. 이는 메커니즘 디자인 문헌에서 매우 비효율적으로 알려져 있으며 따라서 복잡한 수수료 추정 알고리즘이 필요합니다. 그러나 이러한 알고리즘도 종종 잘 작동하지 않아 자주 수수료 과다 지불을 야기합니다.
블록 채굴 보상이 존재하지 않는 블록체인의 불안정성
장기적으로, 채굴 보상의 발행이 없는 블록체인(비트코인 및 Zcash 포함)은 현재로써는 채굴자에게 전적으로 거래 수수료로 보상을 지급할 계획이지만, 이는 많은 불안정성을 유발할 가능성이 있습니다. 거래 수수료를 훔치는 "자매 블록" 채굴을 장려하거나 더 강력한 이기적 채굴 공격 벡터(selfish mining attack vectors)를 여는 등의 문제가 발생할 수 있지만, 현재로써는 이를 완화할 수 있는 좋은 방법이 없습니다.
이 EIP의 제안은 네트워크가 혼잡함에 따라 프로토콜에 의해 조정되는 기본 수수료를 시작점으로 삼는 것입니다. 네트워크가 블록당 가스 사용량 목표를 초과하면 기본 수수료가 약간 증가하고, 용량이 목표보다 낮으면 약간 감소합니다. 이러한 기본 수수료 변경은 제한되어 있으므로 블록마다 기본 수수료의 최대 차이가 예측 가능합니다. 이를 통해 지갑은 사용자의 가스 수수료를 매우 신뢰할 수 있는 방식으로 자동으로 설정할 수 있습니다. 대부분의 사용자는 네트워크 활동이 많은 기간에도 가스 수수료를 수동으로 조정할 필요가 없을 것으로 예상됩니다. 대부분의 사용자는 지갑에 의해 기본 수수료가 추정되고, 고아 위험에 처한 채굴자에 대한 보상을 지불하는 작은 우선 순위 수수료가 자동으로 설정됩니다. 사용자는 또한 총 비용을 제한하기 위해 트랜잭션 최대 수수료를 수동으로 설정할 수 있습니다. 이 요금 시스템의 중요한 측면은 채굴자가 우선 순위 수수료만 받을 수 있다는 것입니다. 기본 수수료는 항상 소각됩니다(즉, 프로토콜에 의해 제거됩니다). 이는 이더리움에서 트랜잭션을 지불하는 데 ETH만 사용할 수 있으며, 이더리움 플랫폼 내에서 ETH의 경제적 가치를 확립하고 채굴자가 추출할 수 있는 가치(MEV)와 관련된 위험을 줄입니다. 또한 기본 수수료의 소각은 이더리움 인플레이션을 상쇄시키면서도 채굴자에게 블록 보상과 우선 순위 수수료를 제공합니다. 마지막으로, 블록의 채굴자가 기본 수수료를 받지 못하도록 하는 것은 채굴자가 수수료를 조작하여 사용자로부터 더 많은 수수료를 추출하는 동기를 제거하는 데 중요합니다.
세부 사항
정의
TransactionType
:0x02
(EIP-2718)
파라미터
Constant | Value |
---|---|
FORK_BLOCK | 12965000 |
설명
GASPRICE
opcode는 MUSTeffective_gas_price
를 반환합니다.FORK_BLOCK
을 기준으로, 새로운 EIP-2718 트랜잭션 유형이 적용됩니다. 이 트랜잭션의TransactionType
은0x02
입니다.- The intrinsic cost of the new transaction is inherited from EIP-2930, specifically 21000 + 16 * non-zero calldata bytes + 4 * zero calldata bytes + 1900 * access list storage key count + 2400 * access list address count.
- 새로운 트랜잭션의 고정 비용은 EIP-2930에서 상속됩니다. 구체적으로
21000 + 16 * 0이 아닌 calldata 바이트 + 4 * 0 calldata 바이트 + 1900 * access list storage key 개수 + 2400 * access list address
입니다. - 이 유형의 EIP-2718
TransactionPayload
는rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s])
입니다. signature_y_parity, signature_r, signature_s
는keccak256(0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list]))
에 secp256k1 서명을 적용한 결과를 나타냅니다.- 이 유형의 EIP-2718
ReceiptPayload
는rlp([status, cumulative_transaction_gas_used, logs_bloom, logs])
형식입니다.
코드는 생략
하위 호환성
기존 이더리움 트랜잭션은 여전히 작동하며 블록에 포함될 수 있지만 새로운 요금 체계에서 직접적인 혜택을 받지는 못할 것입니다. 이는 기존 트랜잭션에서 새 트랜잭션으로 업그레이드하면 기존 트랜잭션의 gas_price
가 base_fee_per_gas
또는 priority_fee_per_gas
에 의해 완전히 소모되기 때문입니다.
블록 해시 변경
블록 해시를 계산하기 위해 keccak256에 전달되는 데이터 구조가 변경되고, 블록을 유효성 검사하거나 블록 내용을 확인하기 위해 블록 해시를 사용하는 모든 애플리케이션은 새로운 데이터 구조를 지원하도록 변경사항을 적용해야 합니다. 블록 헤더 바이트만 가져와 해시하는 경우 여전히 올바른 해시를 얻을 것입니다. 그러나 블록 헤더를 구성 요소로부터 직접 구성하는 경우 새로운 구성 요소를 결국에는 추가해야 합니다.
GASPRICE
이 변경 이전에 GASPRICE
는 트랜잭션에서 가스당 서명자가 지불하는 ETH와 채굴자가 가스당 받는 ETH를 모두 나타냈습니다. 이 변경 이후로 GASPRICE
는 이제 서명자가 가스당 지불하는 ETH만 나타내며, 채굴자가 트랜잭션으로 받는 금액은 더 이상 EVM에서 직접 접근할 수 없습니다.
보안 고려사항
최대 블록 크기 및 복잡성 증가
이 EIP는 최대 블록 크기를 증가시킬 것이며, 이로 인해 채굴자가 블록을 충분히 빠르게 처리할 수 없는 경우 빈 블록을 채굴하도록 강제될 수 있습니다. 시간이 지남에 따라 평균 블록 크기는 이 EIP 없을 때와 거의 동일하게 유지해야 하므로 이는 단기간의 크기 폭증에 대한 문제일 뿐입니다. 일부 클라이언트가 단기간의 크기 폭증을 처리하지 못하고 오류(메모리 부족 등)를 발생시킬 수 있으므로 클라이언트 구현은 개별 블록이 최대 크기까지 적절히 처리할 수 있도록 보장해야 합니다.
트랜잭션 정렬
대부분의 사람들이 우선 순위 수수료 경쟁없이 기본 수수료를 사용할 것이므로, 트랜잭션의 정렬은 이제 클라이언트 내부 구현 세부 사항에 따라 달라집니다. 동일한 우선 순위 수수료를 가진 트랜잭션은 트랜잭션이 수신된 시간에 따라 정렬되는 것이 좋으며, 이는 공격자가 여러 트랜잭션을 대기 중인 풀에 던져서 적어도 하나가 유리한 위치에 도착하도록 하는 스팸 공격으로부터 네트워크를 보호하는 데 도움이 됩니다. 채굴자는 순수하게 이기적인 채굴 관점에서 가스 프리미엄이 더 높은 트랜잭션을 선호해야 합니다.
빈 블록 채굴
채굴자들이 기본 수수료가 매우 낮아질 때까지 빈 블록을 채굴하고 그 후 반만 찬 블록을 채굴한 다음 트랜잭션을 우선 순위 수수료로 정렬하는 방식으로 되돌아갈 수 있습니다. 이러한 공격은 가능하지만 채굴이 탈중앙화된어있는 한 안정적인 방식은 아닙니다. 이 공격이 계속되는 한 공격을 포기하고 (기본 수수료 방식으로) 귀순한 채굴자들은 공격을 계속하는 채굴자보다 더 많은 이익을 얻을 것입니다. (기본 수수료가 0이 되었을 때도) 카르텔에서 누구든 익명으로 귀순할 수 있고, 특정 채굴자가 귀순했다는 것을 증명할 방법이 없기 때문에, 이 공격을 실행할 수 있는 유일한 방법은 50% 이상의 해시파워를 통제하는 것입니다. 만약 공격자가 정확히 50%의 해시파워를 가지고 있다면, 공격자는 우선 순위 수수료로부터 이더를 얻지 못할 것이고, 귀순한 채굴자들은 우선 순위 수수료로부터 이더를 2배로 얻을 것입니다. 공격자가 이득을 보려면 50%를 초과하는 해시파워를 보유해야 하며, 이쯤 되면 공격자는 이중 지불 공격을 실행하거나 다른 채굴자들을 무시함으로써 훨씬 더 큰 이익을 얻을 수 있습니다. (이 방법으로 공격하는 것은 의미가 없다는 뜻)
채굴자가 기어코 공격을 해야만 한다면, 우리는 탄성 계수(현재 2배)를 증가시켜 공격자가 공격을 실행하기 전에 더 많은 해시파워를 사용하도록 할 수 있습니다.
ETH 소각으로 인한 고정 공급 방지
기본 수수료를 소각함으로써 이제 더 이상 고정된 이더 공급을 보장할 수 없게 되었습니다. 이는 장기적으로 ETH의 공급이 더 이상 시간이 지남에 따라 일정하지 않을 수 있음을 의미합니다. 이는 우려할만한 부분이지만, 이러한 영향이 얼마나 큰지 정량화하기가 어렵습니다. 만약 기본 수수료로 소각되는 양이 채굴 보상으로 생성되는 양보다 많다면 ETH는 화폐희소성(deflationary)을 가질 것이며, 반대로 채굴 보상으로 생성되는 양이 소각되는 양보다 많다면 ETH는 화폐팽창성(inflationary)을 가질 것입니다. 블록 공간에 대한 사용자 수요를 통제할 수 없기 때문에 현재로서는 ETH가 화폐팽창성이나 화폐희소성을 가져갈지 단언할 수 없습니다. 따라서 이러한 변경으로 인해 핵심 개발자들은 이더의 장기적인 수량에 대한 일부 통제력을 상실하게 됩니다.