Fee Market — x/feemarket (EIP-1559 BaseFee)
EIP-1559–compatible base fee market for OKRW gas. Senders pay base fee + priority tip, both in atokrw.
Maroo's x/feemarket module implements an EIP-1559–compatible base fee for OKRW gas. Senders submit transactions with maxFeePerGas and maxPriorityFeePerGas, and standard EVM tooling fills them in without configuration. Three things work differently from Ethereum: the gas charged includes the compliance (PCL) and agent checks that run after a transaction and is never less than half its gas limit; the fee is paid in atokrw and distributed to stakers rather than burned; and on Maroo Testnet the base fee stays at its floor, min_gas_price (8,000 gwei).
How charging works
For each transaction PCL admits to a block:
1. Effective gas price =
2. Gas charged = the larger of the gas the transaction used — including the compliance (PCL) and agent checks that run after it — and half its gas limit (
3. Total fee =
4. The whole fee — base portion and tip alike — goes to the fee collector, and
Senders never pay more than
1. Effective gas price =
min(maxFeePerGas, baseFee + maxPriorityFeePerGas).2. Gas charged = the larger of the gas the transaction used — including the compliance (PCL) and agent checks that run after it — and half its gas limit (
min_gas_multiplier = 0.5). Only the part of the limit above that is refunded, so a limit far above the estimate costs up to half of it.3. Total fee =
effective gas price × gas charged, in atokrw.4. The whole fee — base portion and tip alike — goes to the fee collector, and
x/distribution pays it out to validators and their delegators by stake. Nothing is burned, and the block proposer gets no extra share (base_proposer_reward and bonus_proposer_reward are 0).Senders never pay more than
maxFeePerGas × gas charged.Tooling implications — Hardhat, Foundry, ethers.js
Because the fee market is EIP-1559–compatible, all standard EVM tooling works without modification:
Tools like Hardhat's
If you've previously read older Maroo docs that mentioned
eth_gasPricereturns a sensible legacy gas price (computed asbaseFee + suggested priority fee).eth_feeHistoryreturns the rolling window of recent base fees and reward percentiles, exactly as on Ethereum.eth_maxPriorityFeePerGasreturns the suggested priority tip.
Tools like Hardhat's
--network maroo, Foundry's forge create --rpc-url, and ethers.js's provider.getFeeData() will populate maxFeePerGas and maxPriorityFeePerGas correctly. You don't need a custom fee strategy.If you've previously read older Maroo docs that mentioned
NoBaseFee = true, that was an early prototype configuration that never shipped to the canonical chain. The active configuration uses x/feemarket with BaseFee enabled.Parameter visibility and tunability
x/feemarket exposes the standard EIP-1559 parameters as on-chain module params:base_fee— current base fee (atokrwper gas). Read it from a block'sbaseFeePerGas(eth_getBlockByNumber);eth_gasPricereturns the base fee plus the suggested tip. On Maroo Testnet blocks never approach the gas target (the block gas limit is effectively unlimited), so the base fee stays atmin_gas_price.min_gas_price— floor below which the base fee won't drop (8 × 10^12atokrwper gas, i.e. 8,000 gwei, on Maroo Testnet). Governance-controllable.min_gas_multiplier— the share of the gas limit charged even when a transaction uses less (0.5 on Maroo Testnet). Governance-controllable.elasticity_multiplierandbase_fee_change_denominator— control how aggressively the base fee adjusts to gas usage. Governance-controllable.
For day-to-day dapp work, you only need
base_fee (and the standard JSON-RPC will give it to you). The other parameters are knobs for chain operators tuning fee responsiveness.