Overview
Geode’s economic model ensures three things:- Settlers are incentivized to settle batches promptly
- Wash trading is unprofitable — batches can’t extract more than they contribute
- The protocol captures value from direct swap activity while permanently strengthening curve markets
Core invariant: A batch cannot withdraw more settlement reward than that batch economically contributed, except for a tightly capped gas reimbursement.
Fee Sources
The 3-Way Fee Split (Curve Pools)
Direct swaps on curve pools charge a 0.3% fee that is split three ways:
The reserve fee is the most interesting piece — it means every direct swap permanently ratchets the curve’s floor price upward. The more trading activity a token has, the higher its floor.
For standard pools (non-curve), there is no reserve fee. The fee is split ~1/3 to treasury and ~2/3 to surplus.
Settlement Fee
Every filled intent pays a settlement fee from its own input before that input routes to internal matching, the curve, or the AMM:- Buy intents: fee is denominated in currency0 (e.g., WETH)
- Sell intents: fee is denominated in currency1 (e.g., the token)
- Only net input participates in matching, curve, or AMM routing
- The fee amount remains in the PoolManager as unrouted balance
poolManager.take() at the end of settlement.
Why Input-Side?
Deducting fees from the input (not the output) has important properties:One-Sided Batches Work
A batch with only buys (or only sells) still produces fees. There’s no dependency on opposite-side intents existing.
Self-Funding
Each batch’s fees come from that batch’s participants — not from a shared pool that could be drained.
Clean Distribution
Output distribution is already net of fees. No cross-side deduction needed — each buyer/seller gets their full pro-rata share.
Curve Integrity
In curve mode, curve reserves receive net input. Fees never inflate the Geocurve’s price or reserves.
Settler Reward
The total reward a settler earns from a batch:Component 1: Batch Settlement Fees
Component 2: Gas Reimbursement
- Capped: never exceeds
maxGasReimbursementper batch (default: 0.01 ETH) - Gas-based: scales with actual gas consumed, NOT with matched volume
- Surplus-funded: draws from
surplusCurrency0thensurplusCurrency1 - Best-effort: if surplus is insufficient, the settler receives less
SettlerPaid Event
Every settler payment emits an on-chain audit trail:- Settlement fees scale linearly with volume (input-funded)
- Gas reimbursement is constant across volume tiers (gas-based, capped)
Surplus Management
Accumulation
Surplus comes from direct swap fees — the fee charged by thebeforeSwap hook on non-intent swappers:
- Curve pools: 1/3 of the 0.3% fee goes to surplus (~0.1% per swap)
- Standard pools: ~2/3 of the fee goes to surplus
Draw-Down
Surplus is drawn for two purposes only:- Gas reimbursement — capped, per-batch, gas-based (for any pool)
- Deployer royalty — curve pools only, sized from matched volume
Wash Trade Resistance
The Attack
A wash trader submits matched buy and sell intents for the same amount. In a naive surplus-funded model, the settler reward would scale with matched volume, allowing surplus extraction.The Defense
Under Geode’s per-intent fee model, wash trading is strictly net-negative:1
Buy Side Pays
washAmount × settlementFeeBps / 10,000 from currency0 input2
Sell Side Pays
washAmount × settlementFeeBps / 10,000 from currency1 input3
Net P&L
The washer loses fees on both sides. They receive back less than deposited. The net cost is always negative.
4
Surplus Exposure Limited
Gas reimbursement is capped at
maxGasReimbursement (0.01 ETH) regardless of volume. The washer can’t inflate the gas draw by adding more volume.Worked Example
At default parameters (0.1% fee, 0.01 ETH gas cap):
The break-even point is ~5 ETH. Above that, every additional ETH of wash volume costs the attacker more. The gas draw remains constant.
Gas Cost Profile
Settlement gas scales approximately linearly with batch size after a fixed overhead:
The per-intent marginal cost converges to ~103K gas. The fixed overhead (~290K) covers batch validation, clearing price computation, and settler payment.
Default Parameters
Security Properties
Verified: All economic properties are tested in
SettlementEconomics.t.sol and CurveDirectSwap.t.sol — including adversarial wash trade scenarios, gas cap enforcement, fee split verification, and curve state invariants.