brunch

You can make anything
by writing

C.S.Lewis

by 오진미 Aug 27. 2022

EIP-1559에 따른 이더리움 수수료 계산법

런던 하드포크 이후 달라진 수수료 산정 방식에 대해 알아보자.

이더리움의 최대 단점으로는 (1) 느린 트랜잭션 처리 속도, (2) 높은 수수료, (3) 예측하기 어려운 수수료 등이 있다. 이더리움은 이와 같은 한계를 개선하기 위해 런던 하드포크(21. 08. 04)에서 EIP-1559를 채택한 바 있다. 본 글에서는 런던 하드포크 이후 달라진 수수료 산정 방식에 대해 알아보고자 한다.




기존의 수수료 산정 방식 (Legacy)

Fee = gasLimit x gasPrice

EIP-1559 이전에는 Legacy 모델에 따라 수수료를 산정했다. 트랜잭션이 사용한 gasLimit과 가스 단가인 gasPrice를 곱한 값이 곧 수수료가 되었다.


트랜잭션이 증가하여 네트워크가 혼잡해지면 채굴자는 더 높은 수수료를 제시한 트랜잭션을 먼저 블록에 담는다. 결국 수요와 공급에 따라 수수료가 결정되는 셈이며, 네트워크 혼잡도에 따라 수수료가 크게 변동할 수밖에 없는 구조였다.


그렇기 때문에 수수료를 예측하는 것이 매우 어려웠다. 트랜잭션을 빨리 처리하려는 유저들은 더 높은 수수료를 제시해야 했으며, 그렇지 않을 경우 트랜잭션이 실패하거나 계속 pending 상태에 빠져있곤 했다.





EIP-1559에 따른 수수료 산정 방식

Fee = Usage by Txn x (baseFeePerGas + priorityFeePerGas)

EIP-1559 역시 사용한 가스의 양과 가스 단가를 곱한 값을 수수료로 산정된다. 다만 레거시 모델과는 달리, 가스 단가(gasPrice)가스 당 가격(baseFeePerGas)채굴자에게 제공하는 팁(priorityFeePerGas)으로 세분화되었다. 각 항목은 다음과 같다.


1) Usage by Txn

트랜잭션이 블록에 포함되기 위해 사용한 가스 양


2) baseFeePerGas

트랜잭션이 블록에 포함되기 위해 사용한 가스비 (단위 : Gwei)


3) priorityFeePerGas

채굴자에게 제공하는 수수료 (단위 : Gwei)




크게 변경된 부분을 정리해보면 다음과 같다.   


1) 알고리즘으로 결정되는 기본 수수료

레거시 모델에는 gasPrice 개념이 존재했다. 반면 EIP-1559에서는 baseFee 개념이 새롭게 등장했다. 이는 기본 수수료로, 수요와 공급에 의해 가격이 결정되었던 이전과는 달리, 네트워크 혼잡도에 따라 알고리즘에 의해 가격이 결정된다. 직전 블록에 비해 가스를 많이 소모했다면 baseFee가 증가하고, 적게 소모했다면 감소한다. 이를 통해 수수료가 갑자기 치솟는 상황을 방지하고, 수수료를 예측하기 어려웠던 문제를 개선하고자 시도했다.   


2) 채굴자에게 제공하는 팁

EIP-1559에서는 priorityFee가 새로 도입되었다. 이는 채굴자에게 제공하는 팁이다. 채굴자는 팁을 더 많이 지불한 트랜잭션을 우선적으로 블록에 포함시킨다. 일반적으로 아주 큰 값을 지불하지는 않고, 1~3 Gwei 정도의 팁을 지불한다.   


3) 채굴자에겐 팁만, 기본 수수료는 소각

gasPrice를 모두 채굴자가 가져갔던 기존과는 달리, 변경된 수수료 체계에서 채굴자는 priorityFee만 지급받으며, baseFee는 소각된다. 채굴자 입장에서는 채굴을 통해 얻는 수수료 수익이 줄어들게 된 셈이다. 하지만 이더 희소성을 높임으로써 가격이 상승할 수 있고, 채굴자에게 돌아가는 보상을 네트워크 전체로 넓힌다는 지점에서 의미가 있다.   


4) 가변적으로 늘어나는 블록 크기

기존 이더리움 네트워크에서 blockLimit는 1500만 gas로 제한되어 있었다. 그래서 트랜잭션이 몰려 네트워크가 혼잡해지면 수수료 경쟁이 치열해질 수밖에 없었다. EIP-1559에서는 네트워크 혼잡도에 따라 블록 크기를 최대 2배까지 늘릴 수 있도록 변경되었다. 이에 따라 네트워크 병목 현상과 수수료 급등을 개선하고자 했다.





예상 수수료 계산하기

예상 수수료 = gasLimit x (maxFeePerGas + maxPriorityFeePerGas)

트랜잭션을 생성하여 네트워크에 전파할 때 사용자는 수수료 지불의 제한을 설정할 수 있다. 


1) gasLimit

gasLimit은 사용하고자 하는 최대 가스 사용량으로, 실제 가스 사용량은 이와 같거나 적을 수 있다. 수수료는 실제 가스 사용량만큼만 차감된다.


2) maxFeePerGas

maxFeePerGas는 지불할 의사가 있는 최대 가스 당 수수료이다. 실시간 블록의 baseFee보다 낮은 값을 설정할 경우 트랜잭션이 블록에 담기지 못하고 pending 상태에 머무르게 된다. 실제 발생한 baseFee보다 큰 값을 설정하더라도, 실제 사용한 만큼을 제외하고는 다시 반환되기 때문에 실시간 baseFee보다 넉넉한 값을 설정하는 것이 좋다. 일반적으로 실시간 baseFee의 2배를 설정하여 트랜잭션을 전파한다.


3) maxPriorityFeePerGas

maxPriorityFeePerGas는 채굴자에게 제공할 의사가 있는 최대 팁이다. 네트워크가 혼잡할 경우, 이 값이 높을수록 더 빨리 블록에 포함될 수 있다. 그렇다고 매우 높은 값을 입력할 필요는 없다. 일반적으로 1~3 Gwei를 입력한다.






EIP-1559를 통한 수수료 체계 변화에도 불구하고, 1년 간 이더리움은 여전히 다른 메인넷에 비해 수수료가 높게 체감된다. 이더리움 2.0을 향한 더머지 업그레이드가 한 달도 채 남지 않은 상황인데, 추후 수수료 체계에 또 어떤 변화가 생길지 지켜볼 필요가 있겠다.






작가의 이전글 알고 보니 기획이 체질
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari