testnet
GitHub

Fee Market — x/feemarket (EIP-1559 BaseFee)

mechanism economics

EIP-1559–compatible base fee market for OKRW gas. Senders pay base fee + priority tip, both in aokrw.

Maroo's x/feemarket Cosmos SDK module implements an EIP-1559–compatible dynamic base fee for OKRW gas. The base fee adjusts each block based on how full the previous block was: above the target gas usage, the base fee rises; below it, the base fee falls. Senders submit transactions with maxFeePerGas and maxPriorityFeePerGas, exactly as on Ethereum mainnet — the only difference is the unit (aokrw instead of wei). Standard EVM tooling produces correct values without configuration.

How charging works

For each transaction PCL admits to a block:

1. Effective gas price = min(maxFeePerGas, baseFee + maxPriorityFeePerGas).
2. Total fee charged = effective gas price × gas used, in aokrw.
3. The fee splits into two:
- Base fee portion (baseFee × gas used) — burned. This permanently removes OKRW from supply, creating a deflationary pressure proportional to chain usage.
- Priority tip portion ((effective gas price - baseFee) × gas used) — paid to the proposer of the block. This rewards validators for including transactions and creates the same MEV-style incentives as on Ethereum.

Senders never pay more than maxFeePerGas × gas used; the chain refunds the unused portion.

Tooling implications — Hardhat, Foundry, ethers.js

Because the fee market is EIP-1559–compatible, all standard EVM tooling works without modification:

  • eth_gasPrice returns a sensible legacy gas price (computed as baseFee + suggested priority fee).
  • eth_feeHistory returns the rolling window of recent base fees and reward percentiles, exactly as on Ethereum.
  • eth_maxPriorityFeePerGas returns 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 Cosmos SDK module params:

  • base_fee — current base fee (in aokrw). Auto-adjusts per block; readable via eth_gasPrice or via the module's gRPC/REST endpoints.
  • min_gas_price — floor below which the base fee won't drop. Governance-controllable.
  • elasticity_multiplier and base_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.
Source: maroo
ESC
Type to search