- 0x, a firm that routes trades across decentralised exchanges, published research on 14 September under the headline “Uniswap v4 hooks were a mistake”, arguing that most of the hooks it analysed quote one price and settle another.
- Uniswap founder Hayden Adams replied the following morning with two words: “skill issue”.
- We could not find the original research, so everything here is attributed to The Defiant’s write-up. 0x competes with Uniswap for the same order flow, which is worth knowing before you weigh the finding.
Two well-known names in spent the weekend arguing about a piece of plumbing most people who trade have never heard of. The argument is worth following anyway, because the plumbing sits between the price your app shows you and the price you actually get.
Every swap you make through a decentralised exchange shows you a number before you confirm it. That number is an estimate produced by software, and it is not a promise. The disagreement between 0x and Uniswap is about how far apart the estimate and the outcome can drift on one particular kind of pool.
You cannot audit any of this yourself, and nobody should expect you to. What you can do takes about three seconds: before confirming a swap, look past the headline rate and read the minimum you are guaranteed to receive. That figure is the one you are actually protected by, and it is the reason a bad quote usually costs you a failed transaction rather than your money.
Start with the pool
A traditional exchange matches buyers with sellers. An order book sits in the middle, and a price exists because two people agreed on one.
Most decentralised exchanges work differently. They use an automated market maker, which is a pool of two tokens sitting in a , funded by people who deposit them and earn a cut of the trading fees. There is nobody on the other side of your trade. When you put ETH in and take USDC out, the pool’s balances shift, and a formula written into the contract works out the new price. Trade a small amount and the price barely moves. Trade a large amount against a thin pool and you push the price against yourself as you go, which is where the word slippage comes from.
That design has one quality that made it workable for a decade: the maths is fixed and public. Anyone can simulate a trade against the pool’s current state and calculate, to the token, what will come out. Every wallet, aggregator and price screen in crypto is built on that assumption.
What v4 changed

Uniswap is the largest of these exchanges, and its fourth version introduced hooks. A hook is a separate piece of code that a pool’s creator attaches to the pool, and it runs automatically at set moments in the life of a trade: before a swap, after a swap, when liquidity is added or removed.
The point was flexibility. A hook can charge a fee that changes with volatility, pay part of the trade back to liquidity providers, enforce limit orders, block certain addresses, or do something nobody has thought of yet. Instead of Uniswap deciding how pools behave, anyone can write the behaviour themselves. You can follow the token itself on our Uniswap price page.
The trade-off is the part that is now being argued about. In earlier versions, every pool behaved the same way, so quoting one was arithmetic. In v4, a pool’s behaviour depends on whatever code is bolted to it, and that code can alter the terms of a trade at the moment it settles.
The claim
0x is a trade-routing firm. Its job is to look at every venue holding a given pair, work out which combination gives the best price, and hand a quote back to the wallet or app that asked. Quoting accurately is the entire product.
According to The Defiant, 0x’s research says that most of the v4 hooks it has analysed quote one price and settle another. The mechanism, as far as it can be reconstructed from outside, is straightforward enough: a quote is a simulation of a trade that has not happened yet, and if the hook applies a fee or adjusts amounts at execution in a way the simulation did not fully capture, the two numbers come apart. The headline 0x chose, “Uniswap v4 hooks were a mistake”, tells you how strongly it feels about that.
What we cannot tell you is how many hooks were examined, which ones, or how large the gaps were in money terms. Those details may well be in the research. We could not find the original post, and everything above comes from a secondary report, so treat the specifics as unconfirmed rather than established.
The reply
Adams answered early on 15 September with “skill issue”, a phrase from gaming that means the problem is the player rather than the game. The reading most people took from it, and this is our inference rather than something he spelled out, is that the tooling to quote hooked pools correctly exists, and that a firm whose business is quoting should be able to use it.
It is a dismissive two words, and it does leave the substantive question open. If accurate quoting of v4 pools requires more work from integrators than v3 did, someone has to do that work, and the people who feel the difference are the ones whose trades settle at a number they did not expect.
Who is making the claim, and what they gain from it
0x is not a neutral observer. It competes with Uniswap’s own routing for order flow, and a finding that a rival’s newest architecture is hard to price is commercially useful to it. Adams is not neutral either: he founded the being criticised.
That does not make either of them wrong. Interested parties are often right, and most genuine research in this industry is published by someone with a position. It does mean the finding should be read as a claim by a competitor until an unaffiliated party checks it, which is a different thing from a neutral audit, and neither the original research nor Uniswap’s response has been independently verified at the time of writing.
What is confirmed, and what is not
Confirmed: 0x published something on 14 September with that headline, and Adams responded on 15 September. Those are matters of record.
Not confirmed: the scale of the problem, whether any trader has lost money because of it, and whether the affected hooks are widely used or obscure experiments. Nobody has alleged theft, a bug or an exploit. This is a dispute about how pools should be priced and whose responsibility it is to price them properly.
What you can practically do
The protection already exists in every serious swap interface, and most people scroll past it. When you enter a trade you are shown an expected rate, and underneath it a minimum received, set by your slippage tolerance. The transaction is written so that if the settled amount falls below that minimum, the trade reverts and you keep your tokens, minus the network fee.
So the habit worth building is reading the minimum rather than the headline rate, and being suspicious when the gap between them is unusually wide. If you are trading an unfamiliar pair through a route you do not recognise, a small test trade tells you more than any amount of reading. And if you mostly buy through a centralised platform rather than a swap interface, none of this touches you directly, though it is one more variable to weigh when comparing where you buy.
What to watch
Whether 0x publishes its methodology and names the hooks it tested. A list of affected pools turns an argument into something other developers can verify or refute, and without one this stays a difference of opinion between two interested parties.
Whether anyone from Uniswap answers at more length than two words. And whether front-ends start showing traders when a pool has custom code attached to it. That would be the quiet fix: not a winner in the argument, but an interface that tells you which kind of pool your money is about to pass through.