Architecture
See Hookr's contracts on Robinhood Chain in one map, with each one's role, address and connections.
How it fits together
- PeopleTrade, launch tokens and add liquidity.
- Hookr coreHookr's router and launcher take each trade and launch.
- Uniswap v4Every pool lives here, and it calls the Hookr hook on each swap.
- Inside each swapThe hook runs the pool's Rules, its Hook Blocks and arb recapture.
- 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
Every Hookr contract, with its role (84)
Creators and launch partnersCaller
Launch Multi-pool launch families, choose each pool's Hook Blocks at launch, and can deploy an owned root or write an owned profile.
- To HookrLauncher: launchFamily, launch, launchAdvised, launchWithBuy
- To HookrOwnedRootFactory: deploy an owned root
- To HookrOwnedProfiles: writeProfile, adoptPool
- To HookrPrograms: createProgram
- To HookrFamilyLock: lock a family
- To HookrLpBoost: createGauge for a pool it owns, notify rewards
Traders and aggregatorsCaller
Swap through the Hookr router, the family router or the Universal Router, and read quotes from the Hookr quoter.
- To HookrRouter: swap
- To HookrFamilyRouter: trade across a family
- To Universal Router: swap through the Universal Router
- To HookrQuoter: quote (eth_call)
LPsCaller
Add and remove liquidity through Uniswap's PositionManager, and can stake a full-range position in an LP time-lock boost gauge.
- To PositionManager: add, remove and collect liquidity
- To HookrLpBoost: stake, claim, withdraw at maturity
RelayersCaller
Submit a trader's signed swap intent through the forwarder and pay its gas, for the relayer fee the trader signed.
- To HookrForwarder: execute a signed intent
AnyoneCaller
Permissionless calls: collect protocol income to the treasury target, fund or poke a boost gauge, and settle King of the Pool epochs.
- To HookrTreasury: collect, collectTo: protocol income to the target
- To HookrLpBoost: fund, poke
- To HookrRecapture: settleEpoch (King of the Pool)
KeepersCaller
Reprice a fee advisory's surcharge inside bounds frozen at launch and post paymaster token rates (later stage).
- To HookrFeeAdvisory: reprice
- To HookrPaymaster: setRate
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.
- To HookrRegistry: isRoot; a gate's admission
- To Uniswap v4 PoolManager: unlock, swap, settle
- To HookrPrograms: recordExecution after settlement
- To HookrForwarder: forwarder pinned by address and codehash
- To HookrFamilyRouter: beforeUnlock: the gate vouches for the leg
- To HookrSettlement: compiled in: exact transfers
- To HookrSwapPreflight: compiled in: field checks
- From Traders and aggregators: swap
- From CREATE3 factory: release role HookrRouter
- From HookrRoot: router pinned by address and codehash
- From HookrForwarder: swapFor with the signer as identity
- From HookrFamilyRouter: swapGated per leg, as funder and gate
- From Limit orders: fills orders through the pinned router
- From Zap Relay: zap: buys the target pool's subject
- From Dev drip: sells the allocation through the router
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.
- To HookrRouter: swapGated per leg, as funder and gate
- To HookrLauncher: poolFamily
- To Permit2: permitTransferFrom
- To Uniswap v4 PoolManager: hookless reference legs in its own unlock
- To HookrSettlement: compiled in: exact transfers
- From Traders and aggregators: trade across a family
- From CREATE3 factory: release role HookrFamilyRouter
- From HookrRegistry: ADMIT, kind GATE on the root
- From HookrRouter: beforeUnlock: the gate vouches for the leg
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.
- To Uniswap v4 PoolManager: unlock and revert the simulated swap
- To HookrRegistry: isRoot
- To HookrSwapPreflight: compiled in: field checks
- From Traders and aggregators: quote (eth_call)
- From CREATE3 factory: release role HookrQuoter
- From HookrRoot: quoter pinned by address and codehash
- From Best route: quotes the Hookr pool
HookrForwarderDeploys with the release
0xe7863CC0E2Fb783b44c279aB159bcD812c2ceA1c
Relays a trader's Permit2-witness signed swap intent into HookrRouter.swapFor with the signer as the identity, so a relayer pays the gas. Stateless, with no owner.
- To HookrRouter: swapFor with the signer as identity
- To Permit2: permitWitnessTransferFrom
- From Relayers: execute a signed intent
- From CREATE3 factory: release role HookrForwarder
- From HookrRouter: forwarder pinned by address and codehash
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.
- To HookrRoot: initializePool per member
- To HookrLaunchChecks: checkFamily and the launch fee
- To HookrTokenDeployer: deploy and predict the token
- To Uniswap v4 PoolManager: modifyLiquidity, the dev buy swap, take
- To HookrRegistry: rootOpenFor on an owned root
- To HookrTreasury: launch fee to the treasury target
- To HookrRecapture: claimPool: the family's arb recapture accrual
- To Owned root (HookrRoot + HookrRules): initializePool on an owned root
- To HookrSettlement: compiled in: exact transfers
- From Creators and launch partners: launchFamily, launch, launchAdvised, launchWithBuy
- From CREATE3 factory: release role HookrLauncher
- From HookrRegistry: SET_LAUNCHER
- From HookrFamilyRouter: poolFamily
- From HookrLpBoost: the pool's family owner
- From HookrFamilyLock: fee-only withdrawWithClaims, claimRecapture, transferFamily
- From HookrFamilyRelease: acceptFamily, transferFamily
- From Pay Later: transferFamily, acceptFamily, fee-only withdrawWithClaims
- From Canonical Venue Token: launches through the existing-token lane
- From Recovery reserve: familyOwner
- From Vesting milestone: the launcher's pools
Uniswap v4 PoolManagerUniswap contract
Uniswap v4's singleton, where every Hookr pool lives; it calls the pool's hook on each callback.
- To HookrRoot: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap; return deltas: beforeSwapReturnDelta, afterSwapReturnDelta (flags 0x2acc)
- To Owned root (HookrRoot + HookrRules): an unmodified HookrRoot: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap; return deltas: beforeSwapReturnDelta, afterSwapReturnDelta (flags 0x2acc)
- To HookrPairRoot: beforeInitialize, beforeSwap (flags 0x2080)
- To Entry Ratio Guarantee: its own hook: remove-liquidity callbacks
- From HookrLane: initialize, after the HookrRules and advisory binds
- From HookrRoot: mint, take and the dynamic fee
- From HookrRules: claims: unlock, burn, take
- From HookrRouter: unlock, swap, settle
- From HookrFamilyRouter: hookless reference legs in its own unlock
- From HookrQuoter: unlock and revert the simulated swap
- From HookrLauncher: modifyLiquidity, the dev buy swap, take
- From HookrTreasury: ERC-6909 balances for collectAsClaims
- From HookrLiquidityVault: one position per pool and range
- From Canonical Venue Token: trades and liquidity on the canonical key
- From Floor bid: standing single-sided position
- From Plain v4 launches: initializes and seeds pools on outside hooks
- From Vesting milestone: milestone price reads
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
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.
- From Traders and aggregators: swap through the Universal Router
- From HookrRoot: msgSender: the trader of a Universal Router swap
- From Best route: one execute call for the chosen route
Permit2Uniswap contract
Pulls the input of a signed swap for the forwarder and of a family trade for the family router.
- From HookrForwarder: permitWitnessTransferFrom
- From HookrFamilyRouter: permitTransferFrom
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.
- To HookrLane: constructor deploys the lane module
- To HookrLane: initializePool and the lane frames
- To HookrRules: beforeSwap and settleSwap on each swap
- To Universal Router: msgSender: the trader of a Universal Router swap
- To HookrRouter: router pinned by address and codehash
- To HookrQuoter: quoter pinned by address and codehash
- To Uniswap v4 PoolManager: mint, take and the dynamic fee
- To What The Hook's executor: checkV3PoolsMev after the before-phase
- To HookrRootStorage: compiled in: pool record
- To HookrComplianceGuard: advice on entries (later stage)
- To HookrFeeAdvisory: advice (later stage)
- To HookrSessionAdvisory: advice (later stage)
- To Tax + Conversion: advice before and after each taxed swap (STATICCALL)
- To Buy/Sell Block: advice and the round-trip record
- To Hook Blocks Market: module advice on bound pools
- To Partner tax: partner tax advice
- To Swap Reward Mint: reward advice on each swap
- To Market Guard: band check in both phases
- To Zap Relay: buy cut and the target gate
- From CREATE3 factory: release role HookrRoot
- From Uniswap v4 PoolManager: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap; return deltas: beforeSwapReturnDelta, afterSwapReturnDelta (flags 0x2acc)
- From HookrRegistry: REGISTER_ROOT pins the root's codehash
- From HookrLauncher: initializePool per member
- From HookrLpBoost: knownPool
- From HookrOwnedRootFactory: the template root's wiring
- From HookrOwnedProfiles: a pool's frozen terms
- From Recovery reserve: the pool's liquidity owner
- From Partner tax: initializePool
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.
- To HookrRules: bind at initialization
- To HookrRegistry: isLauncher, rootOpen and isQuote at initialization
- To Uniswap v4 PoolManager: initialize, after the HookrRules and advisory binds
- To Arb recapture lane: freezes the open lane at initialization; reads the switch each swap
- To What The Hook's executor: executeArbitrage before and after each swap
- To HookrRecapture: settleRecapture through the pool's HookrRules: the split
- To HookrRootStorage: compiled in: pool record
- From HookrRoot: constructor deploys the lane module
- From HookrRoot: initializePool and the lane frames
- From What The Hook's executor: settleRecapture: pushes the profit as claims
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.
- To HookrRecapture: constructor deploys the recapture module
- To HookrRecapture: split and King of the Pool on a recapture pool
- To HookrTreasury: feeTerms once at bind
- To HookrRegistry: isRoot and admission at bind
- To Uniswap v4 PoolManager: claims: unlock, burn, take
- To HookrDynamicFee: compiled in: dynamic fee pricing
- To Tax + Conversion: tax credited as HookrRules claims to its queues
- To Revenue Router: royalty claims to a split (royaltyTo)
- To Hook Blocks Market: usage fees as advisory claims
- To Swap Reward Mint: reward slices as claims
- To Zap Relay: buy cut credited to the zap vault
- From CREATE3 factory: release role HookrRules
- From HookrRoot: beforeSwap and settleSwap on each swap
- From HookrLane: bind at initialization
- From HookrRegistry: ADMIT, kind RULES, 2,000,000 gas
- From HookrTreasury: collect: pulls the protocol's claims
- From HookrPaymaster: the protocol fee an operation paid (transient ledger)
- From Revenue Router: collect: pulls the split's claims
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
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.
- To What The Hook's executor: pins its runtime codehash, gas cap and partner share
- From HookrRegistry: openLaneOf
- From HookrLane: freezes the open lane at initialization; reads the switch each swap
What The Hook's executorPartner contract
What The Hook's executor runs the arb recapture, and if it cannot, the trade goes through without it.
- To HookrLane: settleRecapture: pushes the profit as claims
- From Arb recapture lane: pins its runtime codehash, gas cap and partner share
- From HookrLane: executeArbitrage before and after each swap
- From HookrRoot: checkV3PoolsMev after the before-phase
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.
- To HookrRegistryChecks: registry checks
- To HookrRegistryAdmin: consume, admit, openLaneOf, registerOwnedRoot
- To HookrRoot: REGISTER_ROOT pins the root's codehash
- To HookrLauncher: SET_LAUNCHER
- To HookrRules: ADMIT, kind RULES, 2,000,000 gas
- To HookrFamilyRouter: ADMIT, kind GATE on the root
- To HookrOwnedRootFactory: SET_ROOT_FACTORY pinned to its codehash
- To Arb recapture lane: openLaneOf
- To HookrRegistryStorage: compiled in: namespaced storage
- To HookrDelegation: compiled in: refuses delegated code
- To HookrRootFactory: SET_ROOT_FACTORY pinned to its codehash
- To Tax + Conversion: ADMIT, kind ADVISORY
- To Buy/Sell Block: ADMIT, kinds ADVISORY and RULES
- To Hook Blocks Market: ADMIT, kind ADVISORY per module version; admission bond
- To Partner tax: SET_LAUNCHER and ADMIT, kind ADVISORY
- To Swap Reward Mint: ADMIT, kind ADVISORY
- To Market Guard: ADMIT, kind ADVISORY
- To Zap Relay: ADMIT, kind ADVISORY (source and target)
- From CREATE3 factory: release role HookrRegistry
- From HookrLane: isLauncher, rootOpen and isQuote at initialization
- From HookrRules: isRoot and admission at bind
- From HookrRouter: isRoot; a gate's admission
- From HookrQuoter: isRoot
- From HookrLauncher: rootOpenFor on an owned root
- From HookrLaunchChecks: the launch fee terms
- From HookrLpBoost: isRoot
- From HookrProgramsAdmin: reads the registry
- From HookrReferralDistributor: isRoot
- From HookrProgramValidator: isRoot
- From HookrOwnedRootFactory: registerOwnedRoot in the same transaction
- From HookrOwnedProfiles: isRoot, rootOpen, admission
- From HookrOwnedRootsLens: rootOpen, activeLaneOf
- From HookrRootFactory: registerFactoryRoot
- From Limit orders: isRoot
- From Floor bid: isRoot
- From Recovery reserve: isRoot, isLauncher
- From Plain v4 launches: isQuote, newMarketsPaused, isRoot
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.
- To HookrRules: collect: pulls the protocol's claims
- To Uniswap v4 PoolManager: ERC-6909 balances for collectAsClaims
- To Owned root (HookrRoot + HookrRules): collects from owned roots' companion HookrRules
- To HookrDelegation: compiled in: refuses a delegated owner
- To HookrLiquidityVault: collects its protocol skim (admitted source)
- To Buy/Sell Block: collects its HookrRules variant's protocol claims
- From CREATE3 factory: release role HookrTreasury
- From Anyone: collect, collectTo: protocol income to the target
- From HookrRules: feeTerms once at bind
- From HookrLauncher: launch fee to the treasury target
- From HookrOwnedRootFactory: the owned-root fee
- From HookrOwnedRootsLens: ownedRootFee
- From Owned root (HookrRoot + HookrRules): the companion HookrRules pay Hookr's share to the treasury
- From Tax + Conversion: protocol share swept to the treasury target
HookrTokenMade on demand
The fixed-supply ERC-20 the launcher creates for each new-token launch, with permit and an on-chain tagline and logo. No owner, mint, pause, tax or upgrade.
- From HookrTokenDeployer: CREATE2 from the launcher's address
- From HookrLaunchChecks: setPresentation: tagline and logo
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.
- To PositionManager: holds staked positions, collects their fees
- To HookrRegistry: isRoot
- To HookrLauncher: the pool's family owner
- To HookrRoot: knownPool
- From Creators and launch partners: createGauge for a pool it owns, notify rewards
- From LPs: stake, claim, withdraw at maturity
- From CREATE3 factory: release role HookrLpBoost
- From Anyone: fund, poke
HookrFamilyLockDeploys with the release
0xfAFEcE64099C1E791C4B46189c277f00c0c7e00b
Keeps a launcher family's principal in its pools until an unlock block, or for good, while the family's beneficiary collects its fees and arb recapture accruals.
- To HookrLauncher: fee-only withdrawWithClaims, claimRecapture, transferFamily
- To HookrFamilyRelease: one release contract per release
- From Creators and launch partners: lock a family
- From CREATE3 factory: release role HookrFamilyLock
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.
- To HookrLauncher: acceptFamily, transferFamily
- From HookrFamilyLock: one release contract per release
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.
- To HookrProgramValidator: constructor
- To HookrMilestoneNFTFactory: constructor
- To HookrProgramValidator: validate a new program
- To HookrMilestoneNFTFactory: create a milestone collection
- To HookrProgramsAdmin: Bux approval and milestone delivery
- To HookrReferralRegistry: eligible referrer
- From Creators and launch partners: createProgram
- From CREATE3 factory: release role HookrPrograms
- From HookrRouter: recordExecution after settlement
HookrProgramValidatorDeploys with the release
0x33e0249083Be7Cd8bD2fe175E0671AcfD0516850
Stateless checks a program must pass when it is created; HookrPrograms deploys it.
- To HookrRegistry: isRoot
- From HookrPrograms: constructor
- From HookrPrograms: validate a new program
HookrMilestoneNFTFactoryDeploys with the release
0xa340F964F1E685c681dC3ABB5B0405E608914d00
Deploys milestone collections, for HookrPrograms only; HookrPrograms deploys it.
- To HookrMilestoneNFT: one collection per program
- From HookrPrograms: constructor
- From HookrPrograms: create a milestone collection
HookrMilestoneNFTMade on demand
One program's capped milestone collection, with no creator mint and no metadata change.
- From HookrMilestoneNFTFactory: one collection per program
HookrReferralRegistryDeploys with the release
0xefD1DfBA80c06E72F793601706c3a1c71aab3057
One referrer per program domain, bound by the payer who authorizes it.
- From CREATE3 factory: release role HookrReferralRegistry
- From HookrPrograms: eligible referrer
- From HookrReferralDistributor: eligible referrer
HookrReferralDistributorDeploys with the release
0x690539c53212899A9c6AEEE3b4B6737A5c4851d9
Pays referral commissions and cashback from funds set aside in advance, against reviewed daily allocations.
- To HookrReferralRegistry: eligible referrer
- To HookrRegistry: isRoot
- From CREATE3 factory: release role HookrReferralDistributor
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.
- To Owned root (HookrRoot + HookrRules): CREATE3 root and its companion HookrRules
- To HookrRegistry: registerOwnedRoot in the same transaction
- To HookrOwnedProfiles: the profile it derives from
- To HookrTreasury: the owned-root fee
- To HookrRoot: the template root's wiring
- To HookrOwnedConformance: compiled in: profile fit
- From Creators and launch partners: deploy an owned root
- From CREATE3 factory: release role HookrOwnedRootFactory
- From HookrRegistry: SET_ROOT_FACTORY pinned to its codehash
- From HookrOwnedRootsLens: template, cap, deployments
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.
- To HookrRegistry: isRoot, rootOpen, admission
- To HookrRoot: a pool's frozen terms
- To HookrOwnedConformance: compiled in: profile fit
- From Creators and launch partners: writeProfile, adoptPool
- From CREATE3 factory: release role HookrOwnedProfiles
- From HookrOwnedRootFactory: the profile it derives from
- From HookrOwnedRootsLens: profiles
HookrOwnedRootsLensDeploys with the release
0x6Bb5c9d21dD095F788cb8373d0143429ad277366
Reads the creator knobs of owned roots with their bounds and defaults, for the app and the SDK. It enforces nothing.
- To HookrOwnedRootFactory: template, cap, deployments
- To HookrOwnedProfiles: profiles
- To HookrTreasury: ownedRootFee
- To HookrRegistry: rootOpen, activeLaneOf
- From CREATE3 factory: release role HookrOwnedRootsLens
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
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
Buy/Sell BlockHook Block
0xffefEA428C13813D4526fc77A8CA0df0c787626f
Refuses the same-block round trip: an identity that bought on the pool this block cannot sell it this block, and the reverse. A creator can also set a bounded buy pause and sell lock at launch; nothing here charges a fee.
- From HookrRegistry: ADMIT, kinds ADVISORY and RULES
- From HookrRoot: advice and the round-trip record
- From HookrTreasury: collects its HookrRules variant's protocol claims
Hook Blocks MarketHook Block
0xbAcE47373D6FF5B017e08a3EcA5a93ec49680f15
Developers list add-on blocks for creators to install, each version with a frozen permission manifest, risk tier and fee split, bonded in HOOKR by developers and backers. Usage fees reach the market as HookrRules claims.
- From HookrRegistry: ADMIT, kind ADVISORY per module version; admission bond
- From HookrRoot: module advice on bound pools
- From HookrRules: usage fees as advisory claims
Swap Reward MintHook Block
0x1e909Fc57419389F7964078287f8654C6415d68D
A reward programme attached at launch: each charged swap pays its side's slice of the quote, at most 5%, credited as a HookrRules claim, and settling mints the reward at a frozen rate.
- From HookrRegistry: ADMIT, kind ADVISORY
- From HookrRoot: reward advice on each swap
- From HookrRules: reward slices as claims
Market GuardHook Block
0xFc5CAE364FDEE4347D97E2aEB82f3155068693A4
Keeps a pool's price inside a band around an admitted external price feed: a swap that would leave it is refused, or surcharged in proportion to its move.
- From HookrRegistry: ADMIT, kind ADVISORY
- From HookrRoot: band check in both phases
Zap RelayHook Block
0xA3d07234F6Ecb7012b8f46F277E9BaDae6e55bAD
A source pool's buyers pay a frozen cut of up to 10%, credited to a zap vault; anyone zaps it into a buy of a gated target pool that is burned or added as permanent liquidity.
- To HookrRouter: zap: buys the target pool's subject
- From HookrRegistry: ADMIT, kind ADVISORY (source and target)
- From HookrRoot: buy cut and the target gate
- From HookrRules: buy cut credited to the zap vault
Revenue RouterHook Block
0x065841021611e0B831b15e62a296C8E7C403A6e0
Fixes at launch how a pool's revenue is shared: up to eight payees with weights that sum to 10,000. Anyone pulls a split's HookrRules claims and pays every payee its weight; nothing runs inside a swap.
- To HookrRules: collect: pulls the split's claims
- From HookrRules: royalty claims to a split (royaltyTo)
Pay LaterHook Block
0x87dF80a261670186286B507b7E3648Fb18A0aF69
A creator hands a launch family to a vault that collects the founding band's LP fees and sells covered calls on the tokens those fees bring in. The principal never moves; the protocol share of each premium goes to the pool's protocol recipient.
- To HookrLauncher: transferFamily, acceptFamily, fee-only withdrawWithClaims
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.
- To HookrLauncher: launches through the existing-token lane
- To Uniswap v4 PoolManager: trades and liquidity on the canonical key
Limit ordersHook Block
0x0c376cc30b1AC98b8ef80a4F516212D3B99402fA
An escrowed, exact-input limit-order book for Hookr pools: anyone fills an order through the pinned Hookr router once the pool pays its minimum after every fee, and the filler earns the order's bounty.
- To HookrRouter: fills orders through the pinned router
- To HookrRegistry: isRoot
Entry Ratio GuaranteeHook Block
0x3FcCD4321470Be51Fca58D9C34de735a78E98301
LPs deposit through a vault on the term they choose and, on exit, can ask for the amounts they deposited instead of the pool's current mix, paid from a per-pool reserve that forfeited fees fund.
- From Uniswap v4 PoolManager: its own hook: remove-liquidity callbacks
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.
- To Uniswap v4 PoolManager: standing single-sided position
- To HookrRegistry: isRoot
Recovery reserveHook Block
0xF5F802A1B39a90e6c0b15DeB9D6acE7070643250
A small per-pool reserve that tops up LPs or traders after an incident a reviewer attests, with a claim window.
- To HookrRegistry: isRoot, isLauncher
- To HookrRoot: the pool's liquidity owner
- To HookrLauncher: familyOwner
Best routeHook Block
0xCCCCef0E1a9C8F35B7b80D0F44Ca5C302026A65B
Compares one trade on a Hookr pool with the same trade on Uniswap v3 tiers, hookless v4 pools and one-hop paths through ETH or USDG, and encodes the best as one Universal Router call.
- To HookrQuoter: quotes the Hookr pool
- To Universal Router: one execute call for the chosen route
Plain v4 launchesHook Block
0x4F121366e6F44f219dC87Ce382e6054c66fA860e
Opens a plain Uniswap v4 pool with no hook in one transaction that reverts as a unit, and lists it for discovery; the founding position stays with the launcher under a lock the creator chose.
- To Uniswap v4 PoolManager: initializes and seeds pools on outside hooks
- To HookrRegistry: isQuote, newMarketsPaused, isRoot
Partner taxHook Block
0x4aa429Bcc4A92e7F8601D1387E72e325a920b2C8
A registered partner signs a one-time voucher for one new pool; the creator launches with it and the pool's tax is split between the creator, the partner and the protocol, with the attribution recorded for good.
- To HookrRoot: initializePool
- From HookrRegistry: SET_LAUNCHER and ADMIT, kind ADVISORY
- From HookrRoot: partner tax advice
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
Vesting milestoneHook Block
0x964618850934Daa4f37CB5954BEdFb2bB86C5D26
A launch-time escrow for a creator or team allocation: it unlocks on a cliff-then-linear schedule, also gated by on-chain milestones read from the pool, and its owner can only ever slow it.
- To Uniswap v4 PoolManager: milestone price reads
- To HookrLauncher: the launcher's pools
HookrComplianceDeploys with the release
0x9D205e8a68464761A9d84bdeCcEa0C3CB1e7B1EC
KYC credentials per list and wallet sanctions, read by the compliance guard on entries only.
- To Sanctions list: sanctions source
- From CREATE3 factory: later-stage role HookrCompliance
- From HookrComplianceGuard: credentials and sanctions
- From HookrPaymaster: sanctioned accounts
HookrComplianceGuardDeploys with the release
0x6CD70db1ac99344416a6fD7184e23FA8f09f313A
Fail-closed advisory that admits only permitted identities into a pool and never sees exits, fee collection or claims.
- To HookrCompliance: credentials and sanctions
- From CREATE3 factory: later-stage role HookrComplianceGuard
- From HookrRoot: advice on entries (later stage)
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.
- To EntryPoint (ERC-4337 v0.7): deposit and stake
- To HookrAccountCalls: call-data policy
- To HookrPaymasterAdmin: tokens, rates, rebate HookrRules
- To HookrCompliance: sanctioned accounts
- To HookrRules: the protocol fee an operation paid (transient ledger)
- From CREATE3 factory: later-stage role HookrPaymaster
- From EntryPoint (ERC-4337 v0.7): validatePaymasterUserOp, postOp
- From Keepers: setRate
HookrAccountCallsLibrary
0x0579a95A7760070E2d6D34e5beCe571e5F1c4818
Linked library that decodes a 4337 account's callData and checks the calls against the paymaster's policy.
- From CREATE3 factory: later-stage role HookrAccountCalls
- From HookrPaymaster: call-data policy
HookrPaymasterAdminLibrary
0x1d81F4B131832f741392edf7B91b4CF099FbB008
Linked library with the paymaster's configuration paths that never run inside a user operation.
- From CREATE3 factory: later-stage role HookrPaymasterAdmin
- From HookrPaymaster: tokens, rates, rebate HookrRules
HookrRootFactoryDeploys with the release
0x21E438FaBE10770afb4407cF6b09d32369CBdCE4
Permissionless CREATE2 deployer of pair roots: deploys, registers, binds the advisory and initializes the pool in one call.
- To HookrPairRoot: CREATE2 under a salt bound to the caller
- To HookrRegistry: registerFactoryRoot
- From CREATE3 factory: later-stage role HookrRootFactory
- From HookrRegistry: SET_ROOT_FACTORY pinned to its codehash
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.
- To HookrFeeAdvisory: bindPair, then the surcharge per swap
- To HookrSessionAdvisory: bindPair, then the surcharge per swap
- From HookrRootFactory: CREATE2 under a salt bound to the caller
- From Uniswap v4 PoolManager: beforeInitialize, beforeSwap (flags 0x2080)
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.
- To HookrSessionTiers: compiled in: session tiers
- To HookrSessionAdvisory: the shared market calendar
- From CREATE3 factory: later-stage role HookrFeeAdvisory
- From HookrPairRoot: bindPair, then the surcharge per swap
- From HookrRoot: advice (later stage)
- From Keepers: reprice
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.
- To HookrMarketCalendar: compiled in: market calendar
- To HookrSessionTiers: compiled in: session tiers
- From CREATE3 factory: later-stage role HookrSessionAdvisory
- From HookrPairRoot: bindPair, then the surcharge per swap
- From HookrRoot: advice (later stage)
- From HookrFeeAdvisory: the shared market calendar
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.
- From HookrSessionAdvisory: compiled in: market calendar
HookrSessionTiersLibrary
The off-market LP-fee tiers any advisory can add to its own surcharge, read from the shared calendar.
- From HookrFeeAdvisory: compiled in: session tiers
- From HookrSessionAdvisory: compiled in: session tiers
HookrLiquidityVaultDeploys with the release
0xA408923EF811945Ef119Bc700B1950Dab65467Fc
Pools LP liquidity into one position per pool and range and issues ERC-6909 shares 1:1 with its liquidity; works on Hookr roots and any other v4 pool.
- To Uniswap v4 PoolManager: one position per pool and range
- From CREATE3 factory: later-stage role HookrLiquidityVault
- From HookrTreasury: collects its protocol skim (admitted source)
HookrRegistryChecksLibrary
0xB9F5c54E5Cc7ac6c7a96335E5A334Cf4eA496E98
Linked library with the registry's checks; the registry runs it by DELEGATECALL in its own context.
- To HookrRegistryStorage: compiled in: namespaced storage
- From CREATE3 factory: release role HookrRegistryChecks
- From HookrRegistry: registry checks
- From HookrRegistryAdmin: admission and lane checks
HookrRegistryAdminLibrary
0x675ac2102E8c69E2467F64656E3c235AF3901Ac1
Linked library with the registry's cold write paths: consuming a matured operation, admissions, admission bonds, lane openings, external-hook records and owned-root registration.
- To HookrRegistryChecks: admission and lane checks
- From CREATE3 factory: release role HookrRegistryAdmin
- From HookrRegistry: consume, admit, openLaneOf, registerOwnedRoot
HookrLaunchChecksLibrary
0x8567369a70100828611BB6F44ec051B48F10fb59
Linked library with launchFamily's one-time checks (weights, lock end, retained cap and opening price), a new token's tagline and logo, and the launch fee's terms.
- To HookrToken: setPresentation: tagline and logo
- To HookrRegistry: the launch fee terms
- From CREATE3 factory: release role HookrLaunchChecks
- From HookrLauncher: checkFamily and the launch fee
HookrTokenDeployerLibrary
0x1B23D6d7beBcB61E39317E9F0Bc02AEB91aFCcAe
Linked library that creates HookrTokens by CREATE2 from the launcher's address and predicts their addresses.
- To HookrToken: CREATE2 from the launcher's address
- From CREATE3 factory: release role HookrTokenDeployer
- From HookrLauncher: deploy and predict the token
HookrProgramsAdminLibrary
0x40B40D65543E70a9C757eda1A2208517a8BC7292
Linked library with HookrPrograms' cold paths: the Hookr Bux approval and milestone NFT delivery.
- To HookrRegistry: reads the registry
- From CREATE3 factory: release role HookrProgramsAdmin
- From HookrPrograms: Bux approval and milestone delivery
HookrRegistryStorageLibrary
The registry's namespaced storage (ERC-7201), shared with its linked libraries.
- From HookrRegistry: compiled in: namespaced storage
- From HookrRegistryChecks: compiled in: namespaced storage
HookrRootStorageLibrary
HookrRoot's pool record, shared with the HookrLane module that runs in the root's context.
HookrDynamicFeeLibrary
Prices Hookr dynamic fees on a swap's simulated move away from the pool's reference price.
- From HookrRules: compiled in: dynamic fee pricing
HookrClockLibrary
Reads Robinhood Chain's own block number from ArbSys at 0x64; only HookrRecapture uses it, for the release of the LP share.
- From HookrRecapture: compiled in: L2 block clock
HookrSettlementLibrary
Exact native and ERC-20 transfers for the periphery.
- From HookrRouter: compiled in: exact transfers
- From HookrFamilyRouter: compiled in: exact transfers
- From HookrLauncher: compiled in: exact transfers
HookrSwapPreflightLibrary
The field checks HookrRouter applies to a swap before any pool call; HookrQuoter applies the same checks before it simulates.
- From HookrRouter: compiled in: field checks
- From HookrQuoter: compiled in: field checks
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.
- From HookrRegistry: compiled in: refuses delegated code
- From HookrTreasury: compiled in: refuses a delegated owner
HookrOwnedConformanceLibrary
The check the profile book and the owned-root factory share: whether a pool's frozen terms fit a profile.
- From HookrOwnedProfiles: compiled in: profile fit
- From HookrOwnedRootFactory: compiled in: profile fit
CREATE3 factoryOutside contract
The CREATE3 factory every release role deploys through, so addresses depend on the deployer and release id, not on the code.
- To HookrRegistryChecks: release role HookrRegistryChecks
- To HookrRegistryAdmin: release role HookrRegistryAdmin
- To HookrRegistry: release role HookrRegistry
- To HookrTreasury: release role HookrTreasury
- To HookrForwarder: release role HookrForwarder
- To HookrRouter: release role HookrRouter
- To HookrQuoter: release role HookrQuoter
- To HookrLaunchChecks: release role HookrLaunchChecks
- To HookrTokenDeployer: release role HookrTokenDeployer
- To HookrLauncher: release role HookrLauncher
- To HookrReferralRegistry: release role HookrReferralRegistry
- To HookrProgramsAdmin: release role HookrProgramsAdmin
- To HookrPrograms: release role HookrPrograms
- To HookrReferralDistributor: release role HookrReferralDistributor
- To HookrRules: release role HookrRules
- To HookrCompliance: later-stage role HookrCompliance
- To HookrComplianceGuard: later-stage role HookrComplianceGuard
- To HookrAccountCalls: later-stage role HookrAccountCalls
- To HookrPaymasterAdmin: later-stage role HookrPaymasterAdmin
- To HookrPaymaster: later-stage role HookrPaymaster
- To HookrRoot: release role HookrRoot
- To HookrRootFactory: later-stage role HookrRootFactory
- To HookrSessionAdvisory: later-stage role HookrSessionAdvisory
- To HookrFeeAdvisory: later-stage role HookrFeeAdvisory
- To HookrLiquidityVault: later-stage role HookrLiquidityVault
- To HookrFamilyRouter: release role HookrFamilyRouter
- To HookrFamilyLock: release role HookrFamilyLock
- To HookrOwnedProfiles: release role HookrOwnedProfiles
- To HookrOwnedRootsLens: release role HookrOwnedRootsLens
- To HookrOwnedRootFactory: release role HookrOwnedRootFactory
- To HookrLpBoost: release role HookrLpBoost
ArbSys (0x64)Outside contract
Robinhood Chain's ArbSys precompile at 0x64, which returns the chain's own block number.
- From HookrRecapture: arbBlockNumber through HookrClock
EntryPoint (ERC-4337 v0.7)Outside contract
The ERC-4337 v0.7 EntryPoint the paymaster serves (later stage).
- To HookrPaymaster: validatePaymasterUserOp, postOp
- From HookrPaymaster: deposit and stake
Sanctions listOutside contract
An on-chain sanctions list the compliance registry can read (later stage).
- From HookrCompliance: sanctions source
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)
CreatorCaller
Locks a fee right and mints a revenue token on it.
- To HookrRevenueTokenizer: locks a fee right and mints a revenue token
HoldersCaller
Hold the revenue token and claim its income and its drops.
- To HookrTimeShares: lock tokens for whole days
- To HookrRevenueCompounder: deposit tokens
- From HookrRevenueToken: releases it to holders
- From HookrDropBox: shares each drop by balance
AnyoneCaller
Calls sync, sends drops, sweeps Hookr's leg and releases a fee right at the end of its term.
- To HookrRevenueToken: calls sync
- To HookrDropBox: drops any asset
- To HookrTimeShares: rolls the income into its days
- To HookrRevenueCompounder: pokes it to add the income
Locked launch familiesUniswap contract
A launch's pools on the Hookr hook, locked to the token's door for a term or for good.
- To HookrFamilyForwarder: LP fees and arb recapture
- To HookrRules: royalty and Hook Block take
Market familyUniswap contract
The revenue token's own pool with ETH, locked to the same door, so trading the token feeds the token.
- To HookrFamilyForwarder: LP fees and arb recapture
pools.trade fee NFTOutside contract
A pools.trade Fee Beneficiary NFT, whose fee goes to the token once the NFT moves into a door.
- To HookrFeebAdapter: the NFT's fee
Uniswap v4 positionsUniswap contract
Uniswap v4 position NFTs, whose LP fees go to the token while they sit in a door.
- To HookrPositionNftDoor: position fees
Uniswap v3 positionsUniswap contract
Uniswap v3 position NFTs, whose LP fees go to the token while they sit in a door.
- To HookrV3PositionNftDoor: position fees
Pons launchOutside contract
A Pons launch's creator fee, pointed at a door. Pons can move it after a three-day notice.
- To HookrPonsAdapter: the creator fee
Long launchOutside contract
A Long launch's beneficiary share of its LP fees on Doppler, moved to a door by its holder.
- To HookrDopplerAdapter: the beneficiary share
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.
- To HookrRevenueToken: deploys and seals the token
- To HookrFamilyForwarder: deploys one when a family is locked
- To HookrFeebAdapter: moves the fee NFT into a door
- To HookrPositionNftDoorFactory: deploys it with the tokenizer
- To HookrV3PositionNftDoorFactory: deploys it with the tokenizer
- To HookrLegCollector: deploys it with the tokenizer
- From Creator: locks a fee right and mints a revenue token
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.
- To HookrPositionNftDoor: makes one for each token
- From HookrRevenueTokenizer: deploys it with the tokenizer
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.
- To HookrV3PositionNftDoor: makes one for each token
- From HookrRevenueTokenizer: deploys it with the tokenizer
HookrPonsAdapterFactoryLive Hookr contract
0xca16D264750BDd79004B80e265F9D3d0992957d2
Makes one door per Pons launch, before the token is minted.
- To HookrPonsAdapter: makes one for each Pons launch
HookrDopplerAdapterFactoryLive Hookr contract
0xA863D22772efC34E5E331AbfAb9a1B126C1b5663
Makes one door per Long launch, before the token is minted.
- To HookrDopplerAdapter: makes one for each Long launch
HookrRulesLive Hookr contract
0x4a71c270b1520F94064268102AebD744b0DE7942
The pool's ledger, where its royalty and any Hook Block take with the token as recipient are credited.
- From Locked launch families: royalty and Hook Block take
- From HookrRevenueToken: sync pulls it into the token
HookrFamilyForwarderMade on demand
Holds the token's locked launch families and its market family, and passes their LP fees and arb recapture to the token.
Made for each revenue token, so it has no one address.
- From HookrRevenueTokenizer: deploys one when a family is locked
- From Locked launch families: LP fees and arb recapture
- From Market family: LP fees and arb recapture
- From HookrRevenueToken: sync pulls it into the token
HookrFeebAdapterMade on demand
Holds a pools.trade fee NFT for good and passes its fee to the token.
Made for each revenue token, so it has no one address.
- From HookrRevenueTokenizer: moves the fee NFT into a door
- From pools.trade fee NFT: the NFT's fee
- From HookrRevenueToken: sync pulls it into the token
HookrPositionNftDoorMade on demand
Holds Uniswap v4 position NFTs until the term ends and collects their LP fees for the token.
Made for each revenue token, so it has no one address.
- From HookrPositionNftDoorFactory: makes one for each token
- From Uniswap v4 positions: position fees
- From HookrRevenueToken: sync pulls it into the token
HookrV3PositionNftDoorMade on demand
Holds Uniswap v3 position NFTs until the term ends and collects their LP fees for the token, unwrapped to ETH.
Made for each revenue token, so it has no one address.
- From HookrV3PositionNftDoorFactory: makes one for each token
- From Uniswap v3 positions: position fees
- From HookrRevenueToken: sync pulls it into the token
HookrPonsAdapterMade on demand
Takes a Pons launch's creator fee and passes it to the one token that sealed it as a door.
Made for each launch by its factory, so it has no one address.
- From HookrPonsAdapterFactory: makes one for each Pons launch
- From Pons launch: the creator fee
- From HookrRevenueToken: sync pulls it into the token
HookrDopplerAdapterMade on demand
Takes a Long launch's beneficiary share and passes it to the token.
Made for each launch by its factory, so it has no one address.
- From HookrDopplerAdapterFactory: makes one for each Long launch
- From Long launch: the beneficiary share
- From HookrRevenueToken: sync pulls it into the token
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.
- To HookrDropBox: deploys its own drop box
- To HookrRules: sync pulls it into the token
- To HookrFamilyForwarder: sync pulls it into the token
- To HookrFeebAdapter: sync pulls it into the token
- To HookrPositionNftDoor: sync pulls it into the token
- To HookrV3PositionNftDoor: sync pulls it into the token
- To HookrPonsAdapter: sync pulls it into the token
- To HookrDopplerAdapter: sync pulls it into the token
- To Holders: releases it to holders
- To HookrLegCollector: Hookr's leg: none on the Hookr hook, 5% off it
- From HookrRevenueTokenizer: deploys and seals the token
- From Anyone: calls sync
- From HookrTimeShares: claims the locked tokens' income
- From HookrRevenueCompounder: claims the income to add as liquidity
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.
- To Holders: shares each drop by balance
- From HookrRevenueToken: deploys its own drop box
- From Anyone: drops any asset
HookrLegCollectorLive Hookr contract
0x7D79010cF29e548B55224f0cEEdAEd2275d65781
Holds Hookr's leg of each revenue token: none when every stream is on the Hookr hook, 5% of the supply when any is off it. Anyone sweeps what it earns.
- To HookrTreasury: sweeps to the treasury's target
- From HookrRevenueTokenizer: deploys it with the tokenizer
- From HookrRevenueToken: Hookr's leg: none on the Hookr hook, 5% off it
HookrTreasuryLive Hookr contract
0x2242F7FC75606500503075f29ea8cDA684EfB4a9
Hookr's treasury. Every sweep pays its current target.
- From HookrLegCollector: sweeps to the treasury's target
HookrTimeSharesFactoryLive Hookr contract
0x07bDc86Ce9E0aD55344A3DBDEc7c1571D2c0380b
Opens the one time shares contract of a revenue token, for anyone, once.
- To HookrTimeShares: opens one for each token
HookrTimeShareWrapperFactoryLive Hookr contract
0x1082A41130F3088812e784Cbd1e5046a528a7449
Opens one wrapper for a day of a token's time shares, for anyone, once.
- To HookrTimeShareWrapper: opens one for each day
HookrRevenueCompounderFactoryLive Hookr contract
0xF32205941a11Ac428Be079773B3Ea583E55BC764
Opens the one compounder of a revenue token on its own pool, for anyone, once.
- To HookrRevenueCompounder: opens one for each token
HookrCompounderLensLive Hookr contract
0xE6a08A2056aa617aCF669d96646dd91700D38bcB
Reads what a compounder holds and previews a deposit or a redeem before it is sent.
- To HookrRevenueCompounder: reads it for previews
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.
- To HookrRevenueToken: claims the locked tokens' income
- From Holders: lock tokens for whole days
- From HookrTimeShareWrapper: wraps one day's time shares
- From HookrTimeSharesFactory: opens one for each token
- From Anyone: rolls the income into its days
HookrTimeShareWrapperMade on demand
Wraps one day's time shares as a token of its own.
Opened by anyone for one day of a token's time shares, so it has no one address.
- To HookrTimeShares: wraps one day's time shares
- From HookrTimeShareWrapperFactory: opens one for each day
HookrRevenueCompounderMade on demand
Takes revenue tokens and, each time anyone pokes it, adds their income to the token's own pool as liquidity.
Opened by anyone through its factory, one for each revenue token, so it has no one address.
- To HookrRevenueToken: claims the income to add as liquidity
- From Holders: deposit tokens
- From HookrRevenueCompounderFactory: opens one for each token
- From HookrCompounderLens: reads it for previews
- From Anyone: pokes it to add the income
The flows, step by step (5)
Make a revenue token
- The creator asks the tokenizer to lock a fee right and mint a token on it.
- For a launch, the tokenizer locks the families to a new door.
- It deploys the token, fixes its doors and mints the whole supply in the same transaction.
- The token comes with its own drop box.
Launch income to holders
- The launch pools pay their LP fees and arb recapture into the door that holds them.
- The royalty and any Hook Block take are credited in the Rules ledger.
- Anyone calls sync on the token.
- Sync pulls what the launch pools' door holds into the token.
- Sync claims the token's credit in the Rules ledger.
- The token releases each holder's share over its release period, to claim whenever they like.
Position NFTs and outside fee rights
- A pools.trade fee NFT pays its fee into its door.
- Uniswap v4 positions collect LP fees in their door.
- Uniswap v3 positions do the same in theirs.
- A Pons launch pays its creator fee to its door.
- A Long launch pays its beneficiary share to its door.
- Sync pulls each door into the token, these and every other.
- The token releases the income to holders.
A drop
- Anyone drops any asset into the token's drop box.
- Each holder claims a share by their balance at the end of the block before the drop.
- 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.
- Anyone sweeps the leg's income to the treasury's target.