Pools opened before Hookr 1
Read what a pool opened before Hookr 1 is, the two lanes it opens on, the fee model in one table, and where the code and the addresses live.
This page covers pools opened before the new Hookr. New pools open on the new Hookr: start with What new pools add.
On this page
hookr (n.): a person or agent who composes new market primitives from Uniswap v4 hooks. Hookr is the protocol they build on: shared v4 hooks that serve many pools.
A pool opened through Hookr freezes a configuration at creation and its hook reads that frozen record on every callback, so nothing about the pool's blocks can change afterwards, including by the Hookr owner.
The hook runs today's Hook Blocks, each independently switchable per pool:
- Dynamic fees: Hookr dynamic fees, an LP fee that rises with trade size relative to in-range depth.
- Anti-Snipe: a guard window on newly launched tokens, with a per-block quote buy cap, a snipe tax, exact-output buys blocked, and outside liquidity blocked.
- Auto Burn: burns a share of subject output on buys.
- LP Rewards: an in-swap reward donated to in-range liquidity.
- Nth-buy Pot: a pot paid to the buyer who trips the counter.
The Nth-buy Pot is retired on new pools. King of the Pool, inside arb recapture, takes its place. How King of the Pool works.
Every current block works on any quote currency: native ETH, HOOKR, USDG, a Robinhood tokenized stock, or any other ERC-20. More blocks and profiles keep sealing over time.
Two Lanes
A new-token market deploys a fixed-supply ERC-20, places the whole supply in one coordinator-held, token-only sell band, and optionally executes a creator buy in the same transaction. The band cannot be removed. This lane can use the guard window.
An existing-asset market initializes a fresh pool for a token that already exists. It adds no liquidity and holds no position; LPs use ordinary v4 periphery. This lane has no founding position, no guard window, and no creator buy. Opening one is permissionless while market opening is not paused, and records only who opened it, not who owns the token.
The Fee Model in One Table
The protocol never takes a slice of the base LP fee. It takes a share from inside each opted-in add-on, 20% at the deployed default, and the trader pays exactly the amounts the pool was configured with.
| Config field | Stream | Who pays it | Where it goes, at the deployed 20% share |
|---|---|---|---|
baseFeePips | Base LP fee | every swap | 100% to in-range LPs. The protocol takes nothing from it. |
maxFeePips above base | Dynamic fee surcharge | swaps that move price | 80% to in-range LPs, 20% to the protocol |
snipeTaxPips | Guard snipe tax | buys during the guard window | 80% to the creator, 20% to the protocol |
lpBps | LP Rewards cut | exact-input buys | 80% donated to in-range LPs, 20% to the protocol |
potBps | Nth-buy Pot cut | exact-input buys through a trusted caller | 80% into the pot, 20% to the protocol |
burnBps | Auto Burn | exact-input buys | 80% of the withheld subject burned, 20% taken in quote by the protocol |
royaltyBps | Creator royalty | share of the LP Rewards and Nth-buy Pot cuts | to royaltyTo, computed on what remains after the protocol's share |
The deployed default is protocolShareBps of 2000, and the module constant MAX_PROTOCOL_SHARE_BPS is 5000 (50%). In general the split is 1-s to the LP side and s to the protocol, where s is the share frozen into the pool's immutable module config when the market was opened. A creator tier of zero means the protocol takes nothing from that creator's pools.
The worst case for any future pool is a 50% slice of the opted-in add-ons, and never any slice of the base LP fee. A pool that opts into nothing but a base fee generates zero protocol revenue.
Fee model carries the per-quadrant arithmetic, in integer form, the way the contracts compute it.
What an Integrator Needs to Know
- The pool's
feefield carries the v4 dynamic fee flag0x800000. The hook sets the effective fee per swap. - The hook address encodes flags
0x28cc:beforeInitialize,beforeAddLiquidity,beforeSwap,afterSwap,beforeSwapReturnsDelta,afterSwapReturnsDelta. Removing liquidity is not hooked. - A swap through the Universal Router with empty
hookDatabehaves normally. Every block applies except the pot leg, which needs an authenticated recipient the hook can only get from the Hookr router or quoter. - A pool with any input cut on an exact-input buy requires the canonical full-fill price limit. Base-fee-only pools accept partial fills.
Where the Code and the Addresses Live
The contracts are live on Robinhood Chain, chain id 4663. The default root hook is 0xb3cA29cF721380CEe8b8e4755F3865Ebc68Fe8cC, mined so its low fourteen address bits equal 0x28cc, and it is the root this documentation describes unless a page says otherwise.
It is one of two roots. The arbitrage-recapture root, 0xb914f955294799de4b891bd2EA8AF628Fa1c68CC, runs the same five blocks at the same flag word and adds a recapture lane, with its own kernel id and its own sealed profile; the launch flow offers it for ETH-quoted pairs, and a pool names exactly one root at creation, permanently. Arb recapture describes the lane. More roots will join under the same registry, coordinator, router and quoter, each with its own sealed profile; the hook families page lists what is live and what is coming.
Every address on this site is rendered from one deployment record, the same file published as deployments/robinhood-4663.v2.json in the public contracts repository. The source commit behind the deployed code is 8db7fc940938f811f508ba9cb0c8f2d3f24c9a25, built with release (bytecode_hash=ipfs, via-IR, optimizer 200, cancun, solc 0.8.26).
- Contracts and addresses: every deployed address, the linked libraries, the upstream dependencies, and the wiring read back from the chain.
- ABIs: the published ABI of each deployed contract, served as JSON.
- Verification: the build settings and the Blockscout verification status of every address.
The contracts are deployed and unaudited. Read Known limitations before treating anything here as a guarantee.
Where to Read Next
| You want to | Read |
|---|---|
| Understand what each contract does | Architecture |
| Know exactly who pays what | Fee model |
| Open a market | Open a new-token market |
| Route a swap or a quote | Swapping and quoting |
| Mint a position | Providing liquidity |
| Check what the owner can do | Immutability and ownership |
| Review the hook for allowlisting | Hook permissions and Invariants |
| See which block combinations a market may carry | Hook block combinations |
| Understand the arbitrage-recapture roots | Arb recapture |
| Route, quote or index a pool that triggers an arb recapture | Routing a pool that triggers an arb recapture |
| Open a market on one | Open a market with arb recapture |
| Ship an arb recapture executor | Shipping an arb recapture executor |
| Automate reading, trading, launching, or claiming | Get Hookr for your agent |