트랜잭션 날릴 때, 제일 머리가 아픈게 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 만 보상으로 받는다..
하지만 참고문서에서 가스비가 올라가면서 마이너 fee 가 증가할 수도 있다는 점을 확인할 수 있었다~!
앞으로는 miner fee / validator fee 로 용어를 구분해야겠다~!
메타마스크 고-급 가스 제어 기능
메타마스크에서는 설정에서 해당 기능 토글 온하면
다음과 같이 유저가 tip 값을 설정할 수 있도록 제공하고 있다~!~!
참고문서링크
https://medium.com/@mrclo0116/eip-1559%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-29e9da06fff2 [정독할 것]
https://www.alchemy.com//blog/eip-1559 [정독할 것 22]
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md
'이더리움' 카테고리의 다른 글
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 |