Vertex
Robinhood Chain · Uniswap v4

The coordination layer for RWA liquidity.

One tokenized asset trades in ten separate books on this chain, and they do not agree on a price. That gap is collected every block by whoever is fastest, not by whoever provided the depth. Vertex is a v4 hook that prices the disagreement and hands every basis point of it back to the liquidity.

NVIDIA · Robinhood Token

every ETH-denominated book on the chain reading…
VenueNVDA per ETHvs consensus, bpsLiquidity
reading the chain…
Books
Spread, live venues
Consensus mid
Vertex would charge
Nothing is deployed yet. The board above is live: those are the real pools, read from Robinhood Chain on every page load. The rate in the last column is what the hook in this repository would quote against that gap, not a number anyone has been charged.

An AMM's one real weakness

01 · The leak

It quotes a price it cannot update

A pool does not know the asset moved somewhere else. It finds out by being taken. Every time a price moves on another venue, someone serves the pool its own stale quote, and the difference comes out of the liquidity providers.

A flat fee cannot fix this. It charges the passer-by exactly what it charges the arbitrageur.

02 · The fix

Charge for what the pool does not know

The hook reads the other books for the same asset and measures how far its own quote has drifted from theirs. A trade that closes that gap is collecting it, and pays a share of it. A trade that widens it has no edge, and pays the base 5 bps.

Direction is the whole mechanism. Only the side coming to collect pays.

03 · The point

Vertex takes none of it

In v4 the dynamic fee a hook returns is the pool's fee. There is no treasury in this contract, no collection address and no protocol cut — deliberately, because the claim is that the leak is returned to the LPs, not redirected.

The pool does not impose anything on the other venues. It agrees with them on a price, and charges whoever profits from the disagreement.

What a trade pays

closing the gap everyone else

The slider starts at the gap measured on the chain a moment ago. Drag it to see the rest of the curve: the green line is what an arbitrageur pays to collect the gap, the dashed line is what the same trade costs in the other direction.

reading the chain…
Drift
bps
Closing it
bps
Widening it
bps

The genesis is an asymmetry too

The first 180 seconds

An opening block is not a market, it is a race. Whoever lands first knows the one thing the pool does not: that nobody has quoted yet, and there is nothing to compare against.

So it is priced

The same hook opens at 25 % and walks down to 1 % over 180 seconds. Not a second feature — the same principle, applied at the one moment the drift cannot be measured.

Armed by the liquidity itself

The clock starts on the seeder's own add-liquidity, not at deployment and not on the first swap. Starting at deployment lets a sniper wait the ramp out before the book exists; starting on the first swap lets them trigger it with dust.

What it cannot do

Manufacture a consensus

The venue set is fixed in the constructor. No setter, no owner, no upgrade. A registry someone can add to is a registry someone can use to invent the price that sets the surcharge.

Halt a market

Reading a venue is a bounded staticcall, and failure is an answer: a venue that reverts, empties or quotes nonsense is skipped, and if nothing is readable the pool falls back to its base fee.

Raise a rate

MAX_FEE_BPS is a hard cap in code, the ramp only descends, and the owner's single lever is a ceiling that only descends. The rate at deployment is the worst rate the pool will ever charge.