1 of 9

Walras

UHI10 HOOKATHON · SUSTAINABLE LIQUIDITY AND MEV PROTECTION

Everyone gets the same price.

A Uniswap v4 hook that replaces continuous swapping with sealed batch auctions. Orders collect for sixty seconds, opposing orders settle against each other, and the whole group clears at one price solved on-chain. Direct swaps against the pool revert.

LIVE ON UNICHAIN SEPOLIA · 97 TESTS · 89.7% LINE COVERAGE · SOLO BUILD

2 of 9

01 PROBLEM

Trades execute one at a time,�in an order you don't control.

Your trade sits in public for a moment before it executes. A bot sees it, gets in front, pushes the price against you and takes the difference. That is sandwiching, and it works for one reason only: somebody else decides who goes first.

Underneath sits a quieter version of the same problem — liquidity providers are continuously picked off by arbitrageurs correcting a stale pool price, which pushes them toward wider fees or out of the pool entirely.

EXTRACTED ANNUALLY

$550M+

Ethereum alone, 2026

OF DEX TRADES SANDWICHED

1.2%

Flashbots · avg loss 0.41%

ROOT CAUSE

Ordering

not pricing, not fees

3 of 9

02 APPROACH

So remove the ordering.

Walras does not price around the problem — it deletes the surface. Every order placed inside a sixty-second window is held, then the whole group trades at once at a single clearing price. There is no first and no last, so there is nothing to trade ahead of.

And when two people in a group want opposite sides, they trade with each other directly. That volume never touches pool liquidity at all.

WINDOW

60s

sized against human latency

ORDERS PER GROUP

up to 64

bounded for settlement gas

PRICES PER GROUP

1

uniform, for every order

WAYS TO GO FIRST

0

enforced, not incentivised

4 of 9

03 MECHANISM

Most volume never reaches the curve.

A real group settled on Unichain Sepolia. Four orders, two directions, one price for all of them.

selling WDA

25.00

selling WDB

12.00

Matched between people

12.44

Left over, went to the pool

12.56 WDA

SKIPPED THE POOL

67.3%

of that group's volume

PRICE THEY ALL GOT

0.96446

identical across four orders

SETTLEMENT TRIGGER

Anyone

5% of surplus covers gas

5 of 9

04 GUARANTEE

Grouping only helps if it is the only way in.

If anyone could skip the group and trade against the pool directly, they could still get in front of you. So beforeSwap rejects every swap that is not the hook's own settlement — including Uniswap's own routers.

A REAL CALL TO THE LIVE POOL

0.00s

Selling 1 WDA the ordinary way, skipping the group

PoolSwapTest.swap(WDA → WDB, exactIn 1.0)

0.63s

Walras checked who was asking — not a settlement

Walras.beforeSwap(sender 0x0D19dCd7…)

0.63s

Refused. The pool will not trade outside a group.

DirectSwapsDisabled() · 0x428b5d3a

This runs live in the app, against the deployed pool. Anyone can press it and watch the chain refuse.

6 of 9

05 PRIOR ART

Batch auctions aren't new.�Needing nobody to run them is.

CoW Protocol

Angstrom

Walras

Where it lives

CoW Swap above AMMs;�CoW AMM its own Balancer pool

Inside the pool,�as a v4 hook

Inside the pool,�as a v4 hook

Who is protected

Only flow routed through CoW

Every swap touching the pool

Every swap touching the pool

Who runs the auction

Competitive off-chain�solver network

Node network staked�via EigenLayer

Nobody — on-chain�and deterministic

Clearing price from

Solver-proposed,�competitively enforced

Computed off-chain,�verified on settle

Closed-form root,�solved on-chain

7 of 9

06 THE HARD PART

The price and the netting�are one fixed point.

You cannot offset token0 against token1 without a price — and the price depends on how large the leftover turns out to be. Most designs escape this with an oracle or an off-chain solver. Walras solves it directly.

Batch excess demand and the amount the curve absorbs are set equal, which clears to a quadratic in sqrt-price whose positive root is the clearing price. One equation covers both directions. No oracle appears anywhere — the price is a function of the group's own orders and the pool's own liquidity.

ORACLES USED

0

price is endogenous

KEEPERS REQUIRED

0

settlement self-triggers

HOOK SIZE

14,067 B

10,509 B under the limit

8 of 9

07 STATUS

Built, deployed, verified.

TESTS PASSING

97 / 97

incl. a 500-run fuzz suite

LINE COVERAGE

89.7%

100% on both libraries

CONTRACTS VERIFIED

5 / 5

readable on Uniscan

FRONTEND

6 screens

reading live chain state

WalrasHook

0x1fd0240c08Cd81f1Affc5e70ff78500e9D0DC080

Pool

0x87cc0db91c355694816d3d338ce683302a85d94ffde442837fde5757a6fa07b0

Network

Unichain Sepolia · chain 1301

9 of 9

08 CLOSE

A pool where going first�buys you nothing.

Sandwiching is not a pricing failure to be taxed away — it is a consequence of sequential execution. Remove the sequence and the attack has no surface. Walras does that inside an ordinary Uniswap pool, with nobody running it.

Live app

walras.vercel.app

Source

github.com/DeborahOlaboye/walras

Hook on Uniscan

sepolia.uniscan.xyz/address/0x1fd0240c…

WALRAS · UHI10 HOOKATHON · DEBORAH OLABOYE