Fee Market — x/feemarket (EIP-1559 BaseFee)
OKRW 가스를 위한 EIP-1559 호환 base fee 시장입니다. 발신자는 base fee와 priority tip을 모두 atokrw로 지불합니다.
마루의 x/feemarket 모듈은 OKRW 가스를 위한 EIP-1559 호환 base fee를 구현합니다. 발신자는 maxFeePerGas와 maxPriorityFeePerGas를 지정해 트랜잭션을 제출하며, 표준 EVM 툴은 별도 설정 없이 이 값을 채웁니다. 다만 이더리움과 세 가지가 다릅니다. 과금 가스에는 트랜잭션 뒤에 실행되는 컴플라이언스(PCL)·에이전트 검사가 포함되고 가스 한도의 절반보다 적지 않습니다. 수수료는 atokrw로 지불되며 소각되지 않고 스테이커에게 분배됩니다. 그리고 마루 테스트넷에서 base fee는 하한인 min_gas_price(8,000 gwei)에 머뭅니다.
수수료 부과 방식
PCL을 통과한 각 트랜잭션에 대해 다음과 같이 수수료를 부과합니다.
1. 유효 가스 가격은
2. 과금 가스는 트랜잭션이 사용한 가스(트랜잭션 뒤에 실행되는 컴플라이언스(PCL)·에이전트 검사 포함)와 가스 한도의 절반(
3. 총 수수료는
4. 수수료 전체(base 부분과 tip 모두)는 fee collector로 들어가고,
발신자가 지불하는 금액은
1. 유효 가스 가격은
min(maxFeePerGas, baseFee + maxPriorityFeePerGas)입니다.2. 과금 가스는 트랜잭션이 사용한 가스(트랜잭션 뒤에 실행되는 컴플라이언스(PCL)·에이전트 검사 포함)와 가스 한도의 절반(
min_gas_multiplier = 0.5) 중 큰 값입니다. 한도 중 그보다 남는 부분만 환불되므로, 추정치보다 한도를 지나치게 높게 잡으면 그 절반까지 비용을 치릅니다.3. 총 수수료는
유효 가스 가격 × 과금 가스이며 atokrw 단위입니다.4. 수수료 전체(base 부분과 tip 모두)는 fee collector로 들어가고,
x/distribution이 지분에 비례해 검증인과 위임자에게 나눠 줍니다. 소각되는 부분은 없고, 블록 제안자가 추가로 받는 몫도 없습니다(base_proposer_reward와 bonus_proposer_reward가 0).발신자가 지불하는 금액은
maxFeePerGas × 과금 가스를 넘지 않습니다.툴링 함의 — Hardhat, Foundry, ethers.js
수수료 시장이 EIP-1559 호환이므로 모든 표준 EVM 툴이 수정 없이 작동합니다:
Hardhat의
이전 마루 docs에서
eth_gasPrice는 합리적인 legacy 가스 가격을 반환합니다 (baseFee + 제안된 priority fee로 계산).eth_feeHistory는 이더리움과 동일하게 최근 base fee와 reward percentile의 롤링 윈도우를 반환합니다.eth_maxPriorityFeePerGas는 제안된 priority tip을 반환합니다.
Hardhat의
--network maroo, Foundry의 forge create --rpc-url, ethers.js의 provider.getFeeData()가 maxFeePerGas와 maxPriorityFeePerGas를 올바르게 채웁니다. 커스텀 수수료 전략은 필요하지 않습니다.이전 마루 docs에서
NoBaseFee = true를 본 적이 있다면, 이는 정식 체인에 출시되지 않은 초기 프로토타입 설정이었습니다. 현재 활성 설정은 BaseFee가 활성화된 x/feemarket을 사용합니다.파라미터 가시성과 조정
x/feemarket은 표준 EIP-1559 파라미터를 온체인 모듈 파라미터로 노출합니다.base_fee— 현재 base fee(가스당atokrw)입니다. 블록의baseFeePerGas(eth_getBlockByNumber)로 읽으며,eth_gasPrice는 base fee에 제안 tip을 더한 값을 반환합니다. 마루 테스트넷에서는 블록이 가스 목표치에 한참 못 미치므로(블록 가스 한도가 사실상 무제한) base fee가min_gas_price에 머뭅니다.min_gas_price— base fee가 하락하지 않는 하한입니다(마루 테스트넷에서 가스당 8 × 10^12atokrw, 즉 8,000 gwei). 거버넌스로 통제됩니다.min_gas_multiplier— 사용량이 더 적어도 과금되는 가스 한도의 비율입니다(마루 테스트넷 0.5). 거버넌스로 통제됩니다.elasticity_multiplier,base_fee_change_denominator— base fee가 가스 사용량에 얼마나 공격적으로 조정될지 제어하며, 거버넌스로 통제됩니다.
일상적인 dapp 작업에서는
base_fee만 필요하며, 표준 JSON-RPC가 이를 제공합니다. 다른 파라미터는 체인 운영자가 수수료 반응성을 튜닝하는 노브입니다.