On-chain censusRobinhood Chain · Uniswap v4Sep 4 – 8, 2026

The Uniswap hook that shows a 0% fee and takes about 2%

Uniswap's fourth version lets a pool attach code that runs before and after every trade. On Robinhood Chain that code now sits under three quarters of all trading, and almost all of it is one contract. It advertises a fee of nothing and takes about two cents in every dollar, in a way the pool's own records do not show.

At a glance
Uniswap's fourth version lets a trading pool attach custom code, called a hook, that runs before and after every swap. On Robinhood Chain those hooks now sit under about three quarters of all trading. We read four days of the chain's own logs: every pool, every swap, every call into a hook and every token that moved. The market is far smaller than it looks, with one contract carrying three quarters of hooked trading and roughly one hook in six never having handled a trade at all. The largest hook advertises a fee of zero. It takes 1% of every swap plus a second cut that each pool sets, about two cents of every dollar traded, through a mechanism the trade record does not report. Hooks also cost gas, adding about a third to a swap, and the call that runs before a swap refuses more than one trade in a hundred.
74.5%
Of Uniswap v4 trades on the chain run through a hook
1 hook
Carries three quarters of all hooked swaps
2%
Of each dollar traded, taken by the largest hook from 0% pools
1.17%
Of swaps are refused outright by the hook that runs first

Correction, 26 October 2026: our first version said this hook takes about one cent in every dollar. By value it takes about two. The median swap does pay 1%, a fixed cut taken from every trade. Each pool can add a second cut, as high as 10%. Our first count read only swaps whose cut was paid in the chain's main stablecoin. Most of those pools add nothing. This version measures every swap from 4 to 7 September and prices a sample of them in dollars.

Someone on Robinhood Chain opens a trading pool, sees a fee of zero, and swaps fifty dollars. The pool charges them nothing, exactly as advertised. A separate contract bolted to that pool then keeps at least one cent of every dollar on the way out, often two or three, and the record of the trade never shows it.

That contract is a hook. Uniswap's fourth version lets any pool name a piece of code that the exchange will call at fixed moments: before a swap, after a swap, when someone adds liquidity, when the pool is first created. The hook can read the trade, change the fee, take a share of the money passing through, or refuse the trade outright.

Bitquery indexes every block on Robinhood Chain, so we read the whole hook layer over four days in September: every pool, every swap, every call the exchange made into a hook, and every token that moved into or out of one. The result is a market where three quarters of all trading runs through code that no trade record shows.

01 · The shape of it

Most of the chain already trades through a hook

Hooks are attached to about a third of the pools on this chain and carry roughly three quarters of the trades. Trading here goes through a hook by default, and the pools without one are the minority case.

The share is falling, though. On the first day of the window, close to two in five new pools were created with a hook attached. By the last full day it was one in four, while pool creation itself held steady at about fifteen thousand a day. Around three hundred distinct hooks see use on any given day, out of more than fifteen hundred deployed.

02 · Concentration

One contract is most of the hook layer

Counting hooks makes this look like a crowded market. Counting swaps does not. A single contract carries three quarters of every hooked trade on the chain, and the top five carry more than nine in ten.

Figure 1Almost all hooked trading runs through a handful of contracts
SHARE OF ALL HOOKED SWAPSOne hook74.5%Top 5 hooks92.5%Top 20 hooks96.4%All 1,047 hooks100.0%183 of those hooks never saw a single swap
Share of hooked swap events, 4–8 September 2026. Nearly one hook in five that has pools attached has never processed a swap.

Roughly one in six hooks with a pool attached has never handled a single trade. They were deployed, wired to a pool, and left. Any picture of this market built by counting contracts rather than volume gets the shape badly wrong.

03 · The finding

The fee that is not in the fee field

The largest hook on the chain shows a fee of zero on every one of its swaps. The pool's own record, the number any DEX trade feed reports, reads zero.

That contract's own log records what it takes from each swap, in two parts. The first is always 1% of the swap. The second is a rate set for each pool, from nothing up to 10%, and it did not change in any pool we checked. Across every swap it handled from 4 to 7 September, the median paid 1% and the middle half paid between 1% and 2%.

More than half of those swaps paid only the first part. The rest paid more, and a fifth paid 3% or above, so a count by dollars comes out higher. In a sample of 11,349 swaps worth $1.6 million, spread over the four days, the contract took about two cents in every dollar.

Pools paired withDollars tradedCut takenPer dollar
ETH$768,132$19,3183%
The main stablecoin$360,485$4,0361%
Tokenized stocks and other tokens$488,340$7,5822%
All pools$1,616,957$30,9362%
Figure 2A pool that charges nothing, and a hook that takes at least one percent
WHAT A MEDIAN SWAP ACTUALLY PAYSHooked pool1% via the hook on the median swap, not shown as a feeThe pool records a zero-fee swap. The hook takes its slice after.No hook2.1%, shown as the pool feeA quarter of these swaps pay 5% or more.Median of every swap on the largest hook, 4 to 7 September
Median fee per swap. The hooked bar shows what the pool records against what the hook takes from the median swap. Counted by dollars, the take is about 2%, close to what pools without a hook charge and show.

That contract holds a power called afterSwapReturnsDelta. It runs once the pool has finished its sums and claims a slice of the output before the trader receives it. The pool honestly records a swap on which it charged nothing, because it did. The trader receives less than the pool says was sent.

So the fee column reads backwards. Pools without a hook charge a median of about two cents in the dollar and show it. The hooked pools that appear to charge nothing take a comparable amount and do not.

04 · The designs

Six things a hook is built to be

A hook's powers are fixed when it is deployed and cannot change later, so grouping the hooks by exactly what each is allowed to do gives a few designs that repeat.

DesignWhat it may doHooksPoolsSwaps
Toll boothbeforeInitialize, afterSwap, afterSwap delta462,4549,374,371
Launchpadthe same, plus every liquidity add and removal28,6621,695,390
GatekeeperbeforeInitialize only15984299,188
InspectorbeforeSwap only5486246,672
Full controlliquidity gates plus both sides of a swap401,407171,500
Market makercan fill a swap from its own books first812,488130,550

The powerful designs are the least used. The two that can rewrite both sides of a trade, between them, run a small fraction of the traffic that goes to the simplest money-making design on the list: let the pool do its ordinary job, then take a slice on the way out.

05 · Addresses

A hook address has to be mined

The permissions live in the last bits of the hook's own address. That is a deliberate choice by the protocol, and it has an odd consequence: to deploy a hook with the powers you want, you have to search for a deployment salt until the resulting address happens to end in the right bits.

The search leaves a mark. Six byte values cover the overwhelming majority of hook addresses on this chain, where an unmined address would scatter evenly across all of them.

Figure 3Hook addresses cluster on six endings, because they are searched for
LAST BYTE OF THE HOOK ADDRESS39.4%0xcc590 hooks16.8%0x80252 hooks10.0%0xc4150 hooks9.5%0x44142 hooks5.7%0x0086 hooks5.2%0xc078 hooksAn unmined address would land on any given byte about 0.4% of the time
Last byte of every known hook address. Each value is a set of permissions, so the ending of the address states the business model.

Most hooks reach the chain through the same shared factory that every network uses for this trick, which is why on-chain records name one address as the creator of hundreds of unrelated hooks. Working out who actually built a hook takes a funding trace. The creation record will not tell you. You can run that trace in Claude with the Bitquery MCP server.

06 · The cost

Gas, and trades that get refused

A hook has to run, and the trader pays for it. The call the exchange makes after a swap costs a median of about forty thousand gas, roughly a third again on top of the swap itself, and at the heavy end it costs several times the swap.

CallTimes calledMedian gasGas at p95Failed
afterSwap15,860,24940,075701,5740.095%
beforeSwap1,736,97316,128103,0221.174%
afterAddLiquidity1,117,1135,0205,0200.01%
beforeAddLiquidity418,3814954950.006%
beforeInitialize8,2373,84723,7120.316%

The call that runs before a swap fails on more than one attempt in a hundred. That is a hook rejecting a trade, and it has no equivalent in the older versions of Uniswap, where a pool that had liquidity would always trade.

07 · The money

Money received is not money earned

Following the chain's main stablecoin and its native coin into and out of every hook shows three behaviours that look nothing alike, and only one of them is revenue.

PatternHookReceivedTransfersKeptWhat it means
Vault0x24cd6d9e$10.1M3,28899.9%Custody. A bonding curve holds buyers' money and owes tokens back.
Toll booth0xe5e70264$6.1M1,181,7435.3%Fee revenue, taken a fraction at a time.
Pass-through0x127b3f3b$1.2M8050%Routing only. Keeps nothing.

A vault that keeps everything is usually holding money it owes: a bonding curve takes a buyer's cash into custody and owes them a token back, so the balance is a liability rather than a profit. The toll booth pattern reads more cleanly. It touched more than a million transfers in four days and kept a small share of each, which is a fee business and nothing else.

On that reading the largest hook earned about a million dollars in four days, split between the stablecoin and the chain's native coin. Nothing here charges a large visible fee. The earnings come from volume, and from holding other people's money.

08 · Method

How this was measured, and what it misses

Every figure comes from the chain's own logs: the pool contract's events, the internal calls the exchange made into each hook, and the token transfers in the same transactions. The same data is available through the DEX trades API and the real-time streams, and the token movements through the Robinhood Chain API.

Three limits belong on the record. The window is four days, because the archive behind this chain keeps a rolling few days and nothing longer, so none of this is a trend. Revenue is counted in two assets only, so hooks that earn in the tokens they launch are undercounted, and the launchpad design almost certainly does. And the dollar figure for the largest hook comes from a sample of eleven short windows across the four days, with each token priced from its own trades against ETH and the stablecoin, so it is an estimate. A second sample of eleven other windows, drawn to check it, came out within a fifth of a cent of it. Single windows in the two samples ranged from about one and a quarter cents in the dollar to about two and three quarters.

Two traps caught us on the way and will catch anyone repeating this. Nine separate contracts on this chain trade under the ticker of the main stablecoin, one real and the rest imitations with different decimal places, so adding up volume by ticker rather than by contract address returns a number in the quadrillions. And the dataset's own dollar column is sound for a single trade and worthless in a sum, because prices for junk tokens are wrong by enormous factors and one recorded trade claims more than half a trillion dollars.

Related reading: the launchpad that makes most of these pools, and what happened to the price of gas on this chain.

Legal disclaimer

The 1% is the fixed part the largest hook takes from every swap, read from its own log, and it is what the median swap paid. The figure of about 2% weights each swap by its dollar value, over a sample of 11,349 swaps worth $1.6 million from 4 to 7 September, with each token priced from its own trades. Both describe that hook in those days, not a rate every hook charges. We read the contract's behaviour from the chain's own logs (pool events, the internal calls into the hook, and the token transfers alongside them) rather than from its source, and other readings are possible. Calling the gap a fee describes where the value goes, not a legal characterisation. Nothing here asserts that Uniswap Labs, Robinhood, or any party other than the contract's deployer designed, endorsed or profited from the arrangement, and the deployer is not identified. This article was corrected on 26 October 2026. The first version measured only the swaps that paid the hook in the main stablecoin and said it takes about one cent in every dollar; the corrected figure is about two cents.

This article is provided for informational and educational purposes only. It reflects analysis of publicly available on-chain data as of the dates given, and does not constitute legal, financial, compliance, tax or investment advice, nor a recommendation or offer to buy, sell or hold any asset. Blockchain addresses are pseudonymous: a transaction between two addresses does not by itself establish the identity, intent or knowledge of any party, and every entity attribution here is an inference that may be incomplete or wrong. Readers should verify independently before acting on anything above, and Bitquery accepts no liability for loss arising from reliance on this material. All trademarks and company names are the property of their respective owners. Corrections and right-of-reply requests go to support@bitquery.io.

Written by Bitquery Research with AI tools; every figure was checked against the data it came from.

Legal disclaimer

This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the dates indicated. It does not constitute legal, financial, compliance, or investment advice, and nothing in it is a recommendation to buy, sell, or hold any token or asset.

The findings describe swaps observed in Uniswap v4 pool records on Robinhood Chain over the period stated, together with the amounts those swaps actually moved. The fee figures compare the fee a pool records against the difference between what a trade paid and what it received, follow the rules described in the article, and may be incomplete or incorrect. Figures may be revised as more data becomes available. Blockchain addresses are pseudonymous.

References to any named hook contract, its deployer, Uniswap, Robinhood, Robinhood Chain, or any other named company, protocol, or token describe on-chain records and inferences drawn from them. They are not assertions that any named party acted deceptively or unlawfully, breached any rule, or is legally liable for any loss, and should not be read as accusations of wrongdoing. Nothing here is trading advice.

Nothing herein should be relied upon as a definitive determination of fact. Readers should conduct their own independent verification before taking any action. The authors and publisher accept no liability for any loss or damage arising from reliance on this material. All trademarks and company names are the property of their respective owners.