Every swap.
An auction.
Sign your trade. Solvers fight over who gets to fill it. Whatever extra they squeeze out vs. the AMM is yours, not the bot's. We don't skim.
- v4 hookopt in per pool. no router migration, no aggregator lock-in.
- gaszero on submit. you sign, you don't pay. fee comes out of surplus.
- mev rebateevery fill goes through Flashbots MEV-Share. backrun MEV captured by searchers is refunded 90% to you.
- if nothing fillsyour tokens never moved. order expires, wallet unchanged.
Three solvers walk into a bar.
You pocket the tip.
The diagram on the left isn't a mockup — that's the auction shape. Solver A is fastest, B stalls mid-race, C is just bad today. Whichever one quotes the best price wins the order. The bit they beat the AMM by? That's the surplus. It goes to you.
It's just signing a piece of paper. No new router.
You sign
One off-chain signature. Tokens stay in your wallet — never custodied, never locked, never approved to a new router. Permit2 pulls only when a winning solver locks in a fill, and never more than what you signed for. Zero gas to submit.
Every venue fights
Your order races in parallel across 50+ liquidity sources: Uniswap V3 (all four fee tiers probed), Uniswap V2, SushiSwap, Balancer, Curve — plus the 0x aggregator, which itself routes through PancakeSwap, Maverick, Bebop, Maker PSM, Fluid, Bancor, Lido, and ~40 more. The deepest pool wins. Always.
You get paid (twice)
Settlement transfers Y to your wallet — 100% of the route's output, surplus auto-rebated by the v3 contract. Then the solver's tx runs through Flashbots MEV-Share with you as the refund recipient: 90% of any backrun MEV captured by searchers lands in your wallet in the same block. Protocol fee — 0% today, capped 2% — flows to $FILL stakers. Zero team skim.
The v4-native one.
Intent-based execution is the right answer. We're the one that ships it as a v4 hook — opt in per pool, no new router, AMM fallback if no solver beats the curve. 100% of surplus to the user. Always.
| AMM | UniswapX | CoW | Fill | |
|---|---|---|---|---|
| solver competition | — | ✓ | ✓ | ✓ |
| surplus to user | — | partial | 100% | 100% |
| v4 pool native | ✓ | — | — | ✓ |
| aggregator-compatible | ✓ | — | — | ✓ |
| no new router | — | — | — | ✓ |
| amm fallback safe | n/a | — | — | ✓ |
The token does
two things. That's it.
Solvers post a bond
If you want to settle batches at any kind of scale, you put $FILL up as collateral. Misbehave — settle a bad batch, fail to deliver — and your bond gets slashed. The slashed $FILL goes straight to stakers. Solvers eat the loss, stakers eat the cake.
- min bond
- 1,000 $FILL
- unbond delay
- 14 days
- slashed →
- to stakers
Stakers get the fees
The protocol charges a small fee on each fill, paid in whatever the user sold. We don't keep it. Anyone can push the accrued fees to the staking contract with a permissionless call — they get distributed pro-rata, in the original token, same block.
- stake lock
- 7 days
- protocol fee
- ≤ 2% (gov-tunable, starts at 0)
- reward tokens
- up to 16, paid in the real asset
No buy-back-and-burn theatre. No "treasury allocation." No emission schedules that pretend to be yield. The fee literally moves from one contract to the other in a single pushFeesToStaking() call. If that call doesn't fit the kind of yield you like, we're not the protocol for you, that's fine.
Built like it has to survive forever.
Full regression suite on every commit. Settlement balance invariant per-token. Permit2 with single-use nonces. Live on mainnet · open beta. Internal audit done, 103/103 tests green, drainage impossible by construction.
| contract | role | address (mainnet) |
|---|---|---|
| FillSettlement | batch settlement · pulls via Permit2 · pays users | 0x8209…2f2A ↗ |
| FillHook | v4 hook · routes opted-in pools through Fill | 0x8032…00cC ↗ |
| $FILL token | solver bond + staker reward | 0xcA8E…BCBF ↗ |
live on mainnet · open beta. code is small, 103/103 tests green, internal audit done. contracts are verified · use at your own risk · DYOR · sign small.
$FILL token stack hardened separately: atomic factory deploy (no same-block sniper window), 2% max-wallet anti-snipe (auto-expires), time-limited guardian pause, non-renounceable Treasury ownership.
Stuff people ask.
How is this different from just swapping on Uniswap?
Do I have to trust the solver not to rug me?
What if no solver shows up?
What's the fee right now?
How is this a v4 thing?
Is the code open and verified?
Who's behind this?
Every public swap leaks 5-30 bps to MEV bots.
That's your money.
We got tired.
You sign once. Our solver races every order across 50+ venues — UniV3, 0x aggregator, Curve, Balancer, V2, Sushi, plus direct CoW matches. Best output wins.
100% of route output. 100% of positive slippage. 90% of any backrun MEV, refunded by Flashbots in the same block. No team skim. No fee on top.
When governance turns it on — capped 2%, 0% today — every basis point flows to $FILL stakers. No allocation to "team," no schedule to "advisors," no points farms.
103 forge tests. Per-token balance invariant — drainage impossible by construction. Permit2 single-use nonces. Small surface, verified contracts. Sign small. DYOR.
First 500 wallets in. Then we slow down on purpose.
If we onboard everyone at once we'll discover bugs the loud way. We'd rather do it the quiet way — small group, real fills, fix things before scaling.