Skip to content

Architecture

See Hookr's contracts on Robinhood Chain in one map, with each one's role, address and connections.

How it fits together

  1. PeopleTrade, launch tokens and add liquidity.
  2. Hookr coreHookr's router and launcher take each trade and launch.
  3. Uniswap v4Every pool lives here, and it calls the Hookr hook on each swap.
  4. Inside each swapThe hook runs the pool's Rules, its Hook Blocks and arb recapture.

Follow a flow

  • Live
  • Deploying soon
  • Made on demand
  • Step in the flow you follow

Pick any part to see what it does and what it connects to, or follow a flow step by step.

People

Who starts each flow.

Uniswap v4

Where every Hookr pool lives. Hookr adds a hook, Uniswap holds the money.

Hookr core

The hook on every Hookr pool and the contracts around it.

Arb recapture

Arbitrage profit goes back to the pool instead of to outside bots.

Liquidity

Locking a launch's liquidity and rewarding LPs who lock longer.

Your own hook

Run Hookr's hook under your own name.

Hook Blocks

Pieces a creator adds to a pool at launch, grouped by job.

Fees and payouts

Protection

Trading tools

Launch and supply

Hookr's contracts in lanes, plain names first and contract names second. Every part, address and connection comes from Hookr's own contract map.
Every Hookr contract, with its role (84)

LPsCaller

Add and remove liquidity through Uniswap's PositionManager, and can stake a full-range position in an LP time-lock boost gauge.

Read more: Hookr pools

RelayersCaller

Submit a trader's signed swap intent through the forwarder and pay its gas, for the relayer fee the trader signed.

Read more: Hookr pools

AnyoneCaller

Permissionless calls: collect protocol income to the treasury target, fund or poke a boost gauge, and settle King of the Pool epochs.

Read more: Hookr pools

HookrRouterDeploys with the release

0xC2Bc9a3fe6c4Ce8C2F7EB4655b0869b01D8c93C9

Single-pool swap entry for roots that name it as their router: carries the payer to the root, settles exact amounts and returns unused ETH. swapGated runs a swap behind a gate the registry admits on the root.

Read more: Hookr pools

HookrFamilyRouterDeploys with the release

0x854f3Fa7AC342B244DF0d9A8c8F597b051aAE559

Multi-pool launch trades: one trade split across the pools of a launcher family, each leg's minimum and the total minimum checked on chain, all legs or none. Every Hookr leg runs through HookrRouter.swapGated with this router as funder and gate.

Read more: Multi-pool launch

HookrQuoterDeploys with the release

0x445D7891381Aa7F91F5048EdBC6a611ccBDe7865

Exact quotes: simulates a swap through the same path and reverts every state change. It also answers quoteExactInputSingle and quoteExactOutputSingle in the shape aggregators read.

Read more: Hookr pools

HookrLauncherDeploys with the release

0x1cf2748A6670572425eAbf9Ab9e5BC4eb2eB8Ef4

Creates a token or takes an existing one and opens a family of 1 to 8 pools for it, one per quote asset, holding the LP positions for the family owner. A new-token launch can make its dev buy in the same PoolManager unlock.

Read more: Multi-pool launch

Uniswap v4 PoolManagerUniswap contract

Uniswap v4's singleton, where every Hookr pool lives; it calls the pool's hook on each callback.

Read more: Contracts and addresses

PositionManagerUniswap contract

Uniswap's position manager: how LPs add, remove and collect liquidity, and the NFT an LP time-lock boost stake holds.

  • From LPs: add, remove and collect liquidity
  • From HookrLpBoost: holds staked positions, collects their fees

Read more: Contracts and addresses

Universal RouterUniswap contract

The pinned Universal Router, the root's curated router: the root reads the trader from it, so a router swap is credited to the trader.

Read more: Contracts and addresses

HookrRootDeploys with the release

0x89c9FB50d1f03192230FFB1c279BB6E7d3Fe6aCc

The Uniswap v4 hook every Hookr pool names, flags 0x2acc in its address. It freezes a pool's Hook Blocks, advisory and caps at launch and runs them on every swap; a pool without a lane never reaches the lane code.

Read more: Core blocks

HookrLaneDeploys with the release

0x9A8a1006469BA196f8FEfc017a53505C83A060BB

HookrRoot's cold paths, deployed by the root's constructor and reached only by DELEGATECALL: pool initialization and the arb recapture lane. The lane part stays idle until a lane opens.

Read more: Core blocks

HookrRulesDeploys with the release

0x4a71c270b1520F94064268102AebD744b0DE7942

The core module: Anti-Snipe, Hookr dynamic fees, Auto Burn, LP Rewards, a royalty and the protocol share, frozen per pool at launch. It holds the fee and refund claims.

Read more: Core blocks

HookrRecaptureDeploys with the release

0xF83569E564d70daebc35950f66a73f2e2B915583

HookrRules' arb recapture split and King of the Pool, deployed by the HookrRules' constructor and reached only by DELEGATECALL. A pool without arb recapture never reaches it.

  • To ArbSys (0x64): arbBlockNumber through HookrClock
  • To HookrClock: compiled in: L2 block clock
  • From Anyone: settleEpoch (King of the Pool)
  • From HookrRules: constructor deploys the recapture module
  • From HookrRules: split and King of the Pool on a recapture pool
  • From HookrLane: settleRecapture through the pool's HookrRules: the split
  • From HookrLauncher: claimPool: the family's arb recapture accrual

Read more: King of the Pool

Arb recapture laneOpens before the first public pool

The registry's arb recapture lane for the root: the executor, its runtime codehash, the gas cap and the partner share. It is open at 2,500 bps; pools launched on the root can turn arb recapture on.

Read more: Fees and the arb recapture split

HookrRegistryDeploys with the release

0x463c82beA1a52F4Cc05ca0741a24F0AD24bA4602

Decides what new pools may use: launchers, roots, root factories, module admissions, quote assets and the arb recapture lane. A pool's frozen configuration never changes.

Read more: Architecture

HookrTreasuryDeploys with the release

0x2242F7FC75606500503075f29ea8cDA684EfB4a9

Collects the protocol's claims from admitted sources and from owned roots' companion HookrRules, and holds the block-fee terms: the protocol share floor, integrators, the Hookr minimum and the owned-root fee.

Read more: Fees and the arb recapture split

HookrLpBoostDeploys with the release

0x52536F5F4E5BC7cEA2197c8F1BB49bf2B133E7f1

LP time-lock boost rewards: one gauge per pool for full-range Uniswap v4 positions, where a longer lock earns a larger share. Staked positions stay in their pool and leave only at maturity.

Read more: LP Time-Lock Boost

HookrFamilyReleaseMade on demand

Created by the lock for one release: hands the family to the owner the beneficiary chose and passes the fees on until that owner accepts.

Read more: Launch lock

HookrProgramsDeploys with the release

0x9fA204AC99176782Fd20615b2b2A516D1F8C328F

Creator programs: points, Bux, cash and milestone NFTs, credited from swaps through the Hookr router and from reviewed daily allocations. Each program's cash is its own ledger.

Read more: Programs

HookrOwnedRootFactoryDeploys with the release

0xA6c2a401597301dFf57A59bC8F70a9622499f3ec

Anyone deploys a Hookr root of their own: an unmodified HookrRoot with a companion HookrRules, registered in the same transaction. An owned root starts without arb recapture.

Read more: Owned roots

HookrOwnedProfilesDeploys with the release

0xb46c318B6AEA2d6274f5566da414b09fDa6CC325

Saved hooks: a named set of Hook Blocks of one's own on a shared root, which pools commit to at launch (owned roots, tier 1). A saved hook is also the template the owned-root factory derives a root from.

Read more: Saved hooks

Owned root (HookrRoot + HookrRules)Made on demand

One deployed owned root: an unmodified HookrRoot at the owner's CREATE3 address and its companion HookrRules, registered and frozen in one transaction. Hookr's share reaches the treasury through the companion HookrRules.

  • To HookrTreasury: the companion HookrRules pay Hookr's share to the treasury
  • From HookrOwnedRootFactory: CREATE3 root and its companion HookrRules
  • From HookrTreasury: collects from owned roots' companion HookrRules
  • From Uniswap v4 PoolManager: an unmodified HookrRoot: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap; return deltas: beforeSwapReturnDelta, afterSwapReturnDelta (flags 0x2acc)
  • From HookrLauncher: initializePool on an owned root

Read more: Owned roots

Tax + ConversionHook Block

0xE73fAD0d773b9571a7a9d2A1edc01132fF5f1e1F

A buy tax and a sell tax, each at most 10% of the quote, taken on every taxed swap and credited as HookrRules claims to one queue per direction. Off the trade path anyone settles a queue: the protocol share goes to the treasury's target and the creator share is paid as quote or converted through a signed, curated route.

  • To HookrTreasury: protocol share swept to the treasury target
  • From HookrRegistry: ADMIT, kind ADVISORY
  • From HookrRoot: advice before and after each taxed swap (STATICCALL)
  • From HookrRules: tax credited as HookrRules claims to its queues

Read more: Launch-day blocks

Canonical Venue TokenHook Block

0xD1EFf2aad81b0fDE70Ff6E43697F86931e2622f7

A fixed-supply token that crosses the PoolManager only through one settlement contract and only on its one canonical Hookr pool; wallet transfers are ordinary ERC-20 transfers. The token side of LP fees is always paid as ERC-6909 claims, since the ERC-20 fee form is removed.

Read more: Launch-day blocks

Floor bidHook Block

Holds one owner's quote as a standing single-sided position on the quote side of the pool's price, a floor bid, and redeploys it as the price moves; at least the 2,000 bps protocol floor of its fees goes to the protocol recipient.

Read more: Launch-day blocks

Dev dripHook Block

Sells a creator's own allocation into the market gradually through the Hookr router, paying every Hook Block like any trader; the drip can be slowed but never sped up.

  • To HookrRouter: sells the allocation through the router

Read more: Launch-day blocks

HookrPaymasterDeploys with the release

0x1c4682915092E742231ea038C4fcA61e96a83c99

ERC-4337 v0.7 paymaster: precharges each operation from the account's credit or an allowed token, and rebates part of the protocol fee from an explicitly funded budget.

Read more: Architecture

HookrPairRootDeploys after the release

A minimal immutable hook for exactly one dynamic-fee pool, flags 0x2080: the base fee plus an optional advisory surcharge up to a fixed cap. It trades through the Universal Router.

Read more: Architecture

HookrFeeAdvisoryDeploys with the release

0x3B6b3f00684987B831fcF9EB5f0d5B806afF7306

Fee-only advisory: an LP surcharge above the pool's base fee that a keeper reprices inside bounds frozen at launch, with optional off-market session tiers.

Read more: Architecture

HookrSessionAdvisoryDeploys with the release

0x78Bc6b7302Dda8632e661c8d74966bdBea1c66b1

Fee-only advisory for stock-token pools: an LP-fee surcharge that follows the US equity session. It also keeps the shared market calendar.

Read more: Architecture

HookrMarketCalendarLibrary

Maps a timestamp to a US equity session in New York time, with NYSE closures for 2026 to 2030 and later years appended by its owner.

Read more: Architecture

HookrRootStorageLibrary

HookrRoot's pool record, shared with the HookrLane module that runs in the root's context.

Read more: Architecture

HookrDynamicFeeLibrary

Prices Hookr dynamic fees on a swap's simulated move away from the pool's reference price.

Read more: Architecture

HookrClockLibrary

Reads Robinhood Chain's own block number from ArbSys at 0x64; only HookrRecapture uses it, for the release of the LP share.

Read more: Architecture

HookrSwapPreflightLibrary

The field checks HookrRouter applies to a swap before any pool call; HookrQuoter applies the same checks before it simulates.

Read more: Architecture

HookrDelegationLibrary

Recognises an account whose code is an EIP-7702 delegation, which Hookr's contracts refuse as owner and the registry refuses as admitted code.

Read more: Architecture

CREATE3 factoryOutside contract

The CREATE3 factory every release role deploys through, so addresses depend on the deployer and release id, not on the code.

Read more: Contracts and addresses

The HookRevenue Tokenizer's contracts on Robinhood ChainA creator locks a fee right in the tokenizer, which mints a revenue token on it. Launch pools, position NFTs and outside fee rights pay into the token's doors, the token's sync pulls each door, and the income is released to holders; drops go to the token's drop box, and Hookr's leg goes to the leg collector and then the treasury.Who calls inWhere the income comes fromThe tokenizer and its factoriesDoors, pulled into the token by syncEach revenue tokenFeeAdd-on factoriesAdd-ons, made per tokenCreatorHoldersAnyoneLaunch familiesHookr hookMarket familyHookr hookpools.trade NFTOutside contractv4 positionsUniswap v4v3 positionsUniswap v3Pons launchOutside contractLong launchDopplerRevenueTokenizerPositionNftDoorFactoryv4 doorsV3PositionNftDoorFactoryv3 doorsPonsAdapterFactoryDopplerAdapterFactoryRules ledgerRoyalty and Hook Block takeFamilyForwarderMade per tokenFeebAdapterMade per tokenPositionNftDoorMade per tokenV3PositionNftDoorMade per tokenPonsAdapterMade per launchDopplerAdapterMade per launchRevenueTokenMade per tokenHookrDropBoxMade per tokenLegCollectorHookrTreasuryTime shares factoryDay wrapper factoryCompounder factoryCompounder lensTime sharesMade per tokenDay wrappersMade per dayCompounderMade per token
The HookRevenue Tokenizer's contracts: where a revenue token's income comes from, the doors sync pulls it through, and where it goes.

Select a contract on the map to see its role and connections. Choose a flow to follow it one step at a time.

Select a box on the map to jump to that contract's role and connections in the list below.

Every HookRevenue Tokenizer contract, with its role (33)

pools.trade fee NFTOutside contract

A pools.trade Fee Beneficiary NFT, whose fee goes to the token once the NFT moves into a door.

Read more: Ways in

HookrRevenueTokenizerLive Hookr contract

0xfb3c1501c727f30883cd7B36Ec380381af7412Ef

Locks the fee right, deploys the token, seals it and mints the whole supply in one call, and can open the token's own market. It has no owner.

Read more: HookRevenue Tokenizer

HookrPositionNftDoorFactoryLive Hookr contract

Makes the door that holds a token's Uniswap v4 position NFTs.

Deployed by the tokenizer when it was deployed; the tokenizer names its address.

Read more: Ways in

HookrV3PositionNftDoorFactoryLive Hookr contract

Makes the door that holds a token's Uniswap v3 position NFTs.

Deployed by the tokenizer when it was deployed; the tokenizer names its address.

Read more: Ways in

HookrRevenueTokenMade on demand

A fixed-supply token that nothing changes after the seal. Its sync pulls every door, and each holder's share of the income is released over the token's release period.

Made for each revenue token, so it has no one address.

Read more: Holding a token

HookrDropBoxMade on demand

Takes drops of any asset from anyone, shared by each holder's balance at the end of the block before the drop.

Made for each revenue token, so it has no one address.

Read more: Holding a token

HookrTimeSharesMade on demand

Locks revenue tokens for whole days and issues each day's income as its own time share to hand out or sell. Anyone rolls it to book the income to its days, and the tokens come back after the last day.

Opened by anyone through its factory, one for each revenue token, so it has no one address.

Read more: Holding a token

The flows, step by step (5)

Make a revenue token

  1. The creator asks the tokenizer to lock a fee right and mint a token on it.
  2. For a launch, the tokenizer locks the families to a new door.
  3. It deploys the token, fixes its doors and mints the whole supply in the same transaction.
  4. The token comes with its own drop box.

Launch income to holders

  1. The launch pools pay their LP fees and arb recapture into the door that holds them.
  2. The royalty and any Hook Block take are credited in the Rules ledger.
  3. Anyone calls sync on the token.
  4. Sync pulls what the launch pools' door holds into the token.
  5. Sync claims the token's credit in the Rules ledger.
  6. The token releases each holder's share over its release period, to claim whenever they like.

Position NFTs and outside fee rights

  1. A pools.trade fee NFT pays its fee into its door.
  2. Uniswap v4 positions collect LP fees in their door.
  3. Uniswap v3 positions do the same in theirs.
  4. A Pons launch pays its creator fee to its door.
  5. A Long launch pays its beneficiary share to its door.
  6. Sync pulls each door into the token, these and every other.
  7. The token releases the income to holders.

A drop

  1. Anyone drops any asset into the token's drop box.
  2. Each holder claims a share by their balance at the end of the block before the drop.

Fee

  1. The collector holds Hookr's leg of the token: none when every stream is on the Hookr hook, 5% of the supply when any is off it.
  2. Anyone sweeps the leg's income to the treasury's target.