EIP-1559
EIP-1559은 이더리움의 가스 요금 모델을 개선하기 위해 도입된 제안으로 크게 세 가지의 핵심 변화가 있다.
1. 블록 크기 동적 조정
거래 요청이 많을 경우 블록의 사이즈를 키우거나 거래 요청이 적을 경우 블록의 사이즈를 줄여 거래를 안정적으로 처리하게 되었음.
2. 고정 네트워크 비용
1559 이전에는 'first-price auction' 모델이 사용되었다.
많은 사용자가 블록에 포함되기 위해 가스비를 경쟁적으로 입찰함으로써 가스비가 불안정했고, 이는 네트워크의 효율성을 저하시키며, 필요 이상으로 높은 가격을 지불하게 되었다. 또한 정확한 가스비를 예측하기 위해서는 현재 대기 중인 트랜잭션의 대기열 상태, 마이너의 선호 평균 가스비 등 여러 변수를 고려해야만 했었고 이는 복잡하고 어려운 작업이였다. 그렇게 예측된 가스비도 100% 정확하지 않았다. EIP-1559는 이런 문제점에 대응하여 수수료의 범위를 어느정도 안정적으로 관리할 수 있는 방안을 제시하였다.
1559에서는 base fee와 priority fee가 도입되었고 이로인해 가스비 예측이 용이하게 되었다.
- Base Fee: 블록마다 동적으로 조정되며, 이는 네트워크의 혼잡도에 따라 달라진다.
이로 인해 사용자와 개발자 모두 가스 비용을 더 예측 가능하다.
- Base Fee 계산 로직
- 이전 블럭이 50~100%(1500~3000만 가스) 정도가 사용될 경우 Base Fee는 고정
- 이전 블럭이 100%(3000만 가스) 이상이 사용될 경우 이전 블록의 Base Fee에 +12.5%가 증가
- 이전 블럭이 50%(1500만 가스) 미만으로 사용될 경우 Base Fee는 고정 -12.5%가 감소
- Priority Fee: 마이너에게 지불되는 수수료로, 빠르게 트랜잭션을 처리하고 싶을 때 추가로 지불
3. 수수료 소각
- 일정량의 거래 수수료를 소각하고 채굴자에게 기본 거래 수수료를 보장한다.
- 소각 수수료는 네트워크에서 사라지며 이는 인플레이션을 억제하는 기능도 겸하게된다.
- 소각 수수료가 생기게 되면서 채굴자들의 수익이 줄어드는 부분은 Base Fee를 통해 일정 부분의 수수료를 보장
EIP-1559 수수료 계산
Base Fee
- 기본으로 채굴자에게 제공할 수수료
- 이전 블록에 얼만큼의 거래가 채워졌냐에 따라 Base Fee가 계산됨
- 최대 12.5%씩 증감
Max Priority Fee
- 채굴자에게 Base Fee 이외에 추가로 제공할 Fee의 금액
- 블록에 담기게될 가능성을 높임
- 너무 낮으면 트랜잭션이 늦게 처리될 수 있음
Max Fee Per Gas
- 사용자가 트랜잭션에 대해 지불할 수 있는 최대 가스 비용을 설정
- Max Fee Per Gas = Base Fee + Priority Fee.
실제 사용되는 Gas Price 계산
- min(MaxFeePerGas - BaseFee, MaxPriorityFee)
수수료 폭탄
수수료는 기본적으로 gwei 단위를 사용한다.
이더리움 네트워크를 활용한 서비스 개발시 특히 주의해야할 부분은 단위이다.
1ETH = 10^18 wei 이고 1ETH = 10^9 gwei이다.
이더리움에서는 가스 프라이스의 비정상적인 사이즈를 검사하지 않으므로 단위를 실수로 잘못 사용할 경우 수수료 폭탄을 겪을 수 있다.
실제로 2020년 국내 다단계 업체에서 수수료 폭탄으로 60억 상당의 피해가 발생하였다.
이와 같은 문제가 발생하는 경우 해당 블록 채굴자와 협의하여 되돌려 받을 가능성이 조금은 있다고 한다.