이더리움

23.03.12 EIP-1559 가스비 메커니즘

슈팅스타제제 2023. 3. 13. 01:18

트랜잭션 날릴 때, 제일 머리가 아픈게 fee 이다. 

이더리움의 경우, 단순히 gasPrice * gasLimit 계산해서 넣어주는 것으로 생각하고 있었는데

런던 하드포크 12,965,000 블록부터 EIP-1559 가 반영되었다... 그걸 이제야 공부하다니 반성해야겠다.

 

EIP-1559 는 왜 도입되었는가? 

1. 가스비 변동에 대한 불확실성 감소

estimate 를 통해 평균 가스비를 알 수는 있었지만 시장 원리에 의해 마이너는

더 큰 금액의 가스비를 지불하는 트랜잭션을 우선적으로 블록에 포함시킨다.

이때문에 트랜잭션의 블록 포함 여부는 불확실성이 컸는데 이 문제를 해결하기 위해 기본 fee 개념인 baseFee 를 포함하였다. 

 

2. 블록 사이즈 (단위 블록에 포함되는 가스 수량) 를 통한 트랜잭션 수요 확인

블록 사이즈는 트랜잭션 수요에 대한 지표가 되는데 이전 블록 사이즈와 비교하여 수요가 증가했는지 감소했는지 확인할 수 있다. 

블록 사이즈 범위 공식 참조*

 

어떤 점이 달라졌는가? 

기존 트랜잭션은 논스값, gasPrice, gasLimit, 전송 주소, 전송 금액, 트랜잭션 데이터, 서명값을

RLP 인코딩한 데이터로 이루어져있는 구조이다.

그리고 이 트랜잭션 타입은 EIP-1559 에서 LegacyTransaction 타입으로 분류되었다. 

rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])

 

바뀐 TransactionType || TransactionPayload 타입은 다음과 같다.

기존 트랜잭션과 달라진 점은 체인 아이디, maxPriorityFeePerGas, maxFeePerGas, destination, (value -> amount) 이다. 

(해당 트랜잭션 타입은 트랜잭션 전송의 경우이고 블록에 올라간 트랜잭션 타입은 따로 있고 gasUsed 가 쵸큼 바뀜. )

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])

가스비 측면에서 개념적으로 바뀐 부분은 다음과 같다. 

baseFee
maxPriorityFeePerGas: gasPrice - baseFee
maxFeePerGas: baseFee * 2 + maxPriorityFeePerGas

따라서 maxPriorityFeePerGas 또는 maxFeePerGas 중에 하나만 설정해주면 된다. 

 

그로 인한 효과는?

유저는 사실 gasPrice -> {baseFee 와 tip(maxPriorityFeePerGas)} 으로 세분화된 것으로 생각하면 되지만, 

마이너(PoS 에서는 밸리데이터) 의 입장에서는 baseFee 는 burn 되고,

남은 maxFee 에서 tip 을 제외한 양은 유저에게 돌아가며 유저가 지불한 tip 만 보상으로 받는다.. 

기존 트랜잭션에 대한 minorFee
EIP-1559 이후 트랜잭션에 대한 validatorFee

하지만 참고문서에서 가스비가 올라가면서 마이너 fee 가 증가할 수도 있다는 점을 확인할 수 있었다~!

앞으로는 miner fee / validator fee 로 용어를 구분해야겠다~!

 

메타마스크 고-급 가스 제어 기능

메타마스크에서는 설정에서 해당 기능 토글 온하면

다음과 같이 유저가 tip 값을 설정할 수 있도록 제공하고 있다~!~!

가스비 설정 단계에서 위 [시장] 선택
가스 옵션 [고급] 선택
[우선 요금] tip 값 설정

 

참고문서링크 

https://medium.com/@mrclo0116/eip-1559%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-29e9da06fff2 [정독할 것]

 

EIP-1559란 무엇인가

EIP-1559는 고정 수수료와 블록 사이즈의 유동성을 도입한 새로운 트랜잭션 수수료 가격 매커니즘으로, 이더리움의 이코노미 구조에 커다란 영향을 준 업데이트이다.

medium.com

 

https://www.alchemy.com//blog/eip-1559 [정독할 것 22]

 

The Developer EIP-1559 Prep Kit

 

www.alchemy.com

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md

 

GitHub - ethereum/EIPs: The Ethereum Improvement Proposal repository

The Ethereum Improvement Proposal repository. Contribute to ethereum/EIPs development by creating an account on GitHub.

github.com

 

'이더리움' 카테고리의 다른 글

23.03.12 SSZ Simple Serialize  (0) 2023.03.12
22.01.05 이더리움 주소 체계  (0) 2022.01.05
21.09.15 이더리움 2.0 [정리 중!]  (0) 2021.09.16
21.05.27 이더리움에 대한 첫 관심  (1) 2021.05.28