Skip to main content 정리 좀 해봅시다.

내가 이해한 EIP-1559 정리

Published: 2024-03-20
Updated: 2024-03-20

내가 이해한 EIP-1559

EIP-1559 도입 이전 기존 레거시 tx type의 경우 가스의 예측이 불가능했고 이때문에 실제 필요가스양보다 높은 가스양을 제출하게되고 가스 가격이 낮은 tx는 pending이 계속되는 비효율적인 시스템이었음

EIP-1559 도입: 혼잡도 및 이전블록의 수수료를 기반으로 예측가능하고 완만한 변동폭의 가스모델 제공. 또한 수수료가 소각됨과 함께 검증자에게 인센티브가 주어지게 됨

EIP-1559 이전에는 가스가 어떻게 계산됐나?

  • fee = gasPrice * gasLimit(가스사용량한도)
  • gasLimit = 트랜잭션 종류에 따라 달라짐. 기본 send의 경우 21000. limit이기 때문에 더 적게 사용될 수 있음
  • 예: gasLimit 21000, gasPrice 1Gwei일 때 fee는 21000 * 1 = 21000Gwei
  • 수수료는 검증자에게 주어짐

EIP-1599 도입

  • fee: gasLimit * (baseFeePerGas + priorityFeePerGas)
  • baseFeePerGas = tx의 기본 gasPrice
  • priorityFeePerGas = 검증자에게 제공하는 커미션
  • gasLimit = 트랜잭션의 복잡도에 따라 gas를 사용하는 양이 달라지는데 이의 Max Limit 한도를 정함. send 기본 21000? 정도인거같음

baseFeePerGas(baseFee)는 그럼 어떻게 계산되나?

  • BlockGasLimit이란게 있는데 이는 각 블록의 GasLimit이 얼마나 될지는 검증자들의 합의에 따라 정해진다.(네트워크 혼잡도 등을 고려해 결정)
  • 네트워크 안정화를 위해 이 GasLimit의 50%를 다음 블록의 목표 gas 사용량(TargetGasUsed)으로 결정한다
  • ActualGasUsed = 실제 블록의 가스사용량
  • baseFeePerGas = 이전블록의baseFee + (ActualGasUsed - TargetGasUsed) / TargetGasUsed * 0.125
  • 즉 최대 증감치는 12.5%
  • baseFee는 소각됨

트랜잭션 보낼때 MaxFeePerGas, suggestTipCap은 뭔지?

  • MaxFeePerGas: baseFee와 priorityFee를 합한 내가 지불할 의향이 있는 최대 gas가격
  • suggestTipCap: 딱히 기준을 못찾았는데 네트워크 상태에따라 노드에서 추천되는 값(suggestTipCaP). 일단 사용해보고 나중에 더 확인해봐야겠음

참고: 다음 txType이 보임

const (
	LegacyTxType     = 0x00
	AccessListTxType = 0x01
	DynamicFeeTxType = 0x02
	BlobTxType       = 0x03
)

이제 트랜잭션을 한번 보내봐야겠다

더 알아볼거

  • wallet에서 제공되는 수수료 낮음 / 보통 / 빠름 은 무슨 기준으로 결정되는지? (이더스캔은 어떤기준으로 해당 값을 결정하는지?)