Contracts and addresses
Every deployed address, the linked libraries, the upstream dependencies, the wiring read back from the chain, and the registry identifiers.
Every address on this page is live on Robinhood Chain, chain id 4663. The Hookr addresses hold the deployed release; the upstream addresses are Uniswap's own deployments.
Every Hookr address, id and share below is rendered from the deployment record the app ships, the same file published as deployments/robinhood-4663.v2.json in the public contracts repository. None of them is typed into this page. The source commit behind the deployed code is 8db7fc940938f811f508ba9cb0c8f2d3f24c9a25.
Explorer: Robinhood Blockscout. Machine-readable ABIs: ABIs.
Mainnet Deployments
Robinhood Chain: 4663
The contracts, in deployment order.
| Contract | Address |
|---|---|
| HookrModuleCatalogV1 | 0x6a3561d5B6305E2229F30EDF66702e8Bc4fA19D1 |
| HookrStackRegistryV2 | 0x5b7f1A117A83aaac15B0698Aa4eB9D53fE5f5BA3 |
| HookrTreasuryForwarderV1 | 0x9BB7c01571ef6e59a8834A6a89A6b024822BAf6f |
| HookrNativeMechanicsCoordinatorLibV2 | 0xafC0a7656DF8B1aA5A173d04612a9661C4b9c7E2 |
| HookrMarketCoordinatorV5 | 0x53A192A3fCeE94Da77916B461E0cCa2Dd6402442 |
| HookrSwapAccountingKernelV3 | 0x530523DEcC9523dDF8A87842fFBBD24a59C7E060 |
| HookrKernelRouterV3 | 0xf0E528c39f33F565876cbaa7e0DFaCa38Df966E9 |
| HookrKernelQuoterV1 | 0x5Ba8FBbB4aB20Ff6Daf0ecDEBe3784f869BcB1B5 |
| HookrNativeMechanicsBlockV2 | 0xD700492b504ba5A72D7de28dDe11Cd7985a7F1ae |
| HookrModularHookV6 | 0xb3cA29cF721380CEe8b8e4755F3865Ebc68Fe8cC |
The root hook's address is mined by CREATE2 so its low fourteen bits equal 0x28cc. See Hook permissions.
Linked Libraries
HookrMarketCoordinatorV5, HookrSwapAccountingKernelV3 and HookrModularHookV6 link libraries. Each is compiled without them: the addresses below are written into the __$…$__ placeholders in the compiled bytecode, so the deployed code carries the metadata of a library-free compilation. Three of these libraries already stood on chain holding the same runtime code, apart from the immutable each one keeps for its own address, and are linked where they stand. HookrMarketCoordinatorTokenDeployerV3 holds different code at the address it could have been linked from, so it has one of its own.
| Library | Linked into | Address |
|---|---|---|
| HookrMarketCoordinatorTokenDeployerV3 | HookrMarketCoordinatorV5 | 0x7A2821F7Ea0e4d0C5a409D479cd457d5B34F9399 |
| HookrMarketCoordinatorKernelReservationLibV1 | HookrMarketCoordinatorV5 | 0x8C2E208eDFf0eF7535B20AE8F13dfBF71133521d |
| HookrStatefulSettlementLibV1 | HookrSwapAccountingKernelV3 | 0xde7Ae40c713D5C9EC2C8e2E28810C6C7Eb791706 |
| HookrModularCorrectionLibV2 | HookrModularHookV6 | 0xd2832D5F64C7116bE2c7B32D8c06d60023b479D8 |
| HookrMarketCoordinatorInitialBuyLibV4 | HookrMarketCoordinatorV5 | 0xE12f58f1662293B8b4fF3f0227384bD9D2a6e382 |
| HookrNativeMechanicsCoordinatorLibV2 | HookrMarketCoordinatorV5 | 0xafC0a7656DF8B1aA5A173d04612a9661C4b9c7E2 |
The CREATE2 factory the root hook is mined through is HookrReleaseCreate2FactoryV1 at 0xBc54e888C1A5B71744B035DfeC5611B4DC69ccDe. Its authorizedDeployer() is the deployer address below, and only that address can deploy through it.
Upstream Dependencies
These are live and independently verified on chain 4663.
The Universal Router address on chain 4663 has two conflicting official sources. Uniswap's deployment registry gives 0x06afBA43fd06227fA663b0dAeCF536F6eaA6BF99; the rendered deployments page gives 0x8876789976dEcBfCbBbe364623C63652db8C0904. The fork evidence behind this documentation used 0x8876789976dEcBfCbBbe364623C63652db8C0904, and swaps settled correctly through it.
Both addresses hold a deployed router, both are 24,546 bytes, and both report the same poolManager(). Their runtime code hashes differ, so they are not the same build:
| Address | Runtime code hash |
|---|---|
0x06afBA43fd06227fA663b0dAeCF536F6eaA6BF99 | 0xbe8e8191bb42d843c2e948a5a55772eaab864ce01e54dcd47c9d089170b302d5 |
0x8876789976dEcBfCbBbe364623C63652db8C0904 | 0x2ce6aaaf9f4151f5e1cbf774668772f17f532ae11b15e9284fd0a072a8b0fbde |
Nothing in the Hookr graph pins either one: the hook accepts any caller, and a pool's trusted-router slot holds HookrKernelRouterV3, not a Universal Router. The choice belongs to whoever routes through this hook. Pin the address you tested against, record its runtime code hash alongside the evidence, and say which one you pinned. This documentation does not choose for you.
Tokens on Chain 4663
| Token | Address |
|---|---|
| HOOKR | 0x18E674231A58c239Dc7DaeDcffE15Ec3A24cff5c |
| USDG | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 |
| NFLX | 0xE0444EF8BF4eD74f74FD73686e2ddF4C1c5591E8 |
| AAPL | 0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9 |
NFLX and AAPL are Robinhood tokenized stocks. Read RWA and ERC-20 quotes before pairing one.
Wiring, Read Back From the Chain
Every one-shot bind and every pinned address, as the chain reports them.
| Read | Value |
|---|---|
HookrStackRegistryV2.coordinator() | 0x53A192A3fCeE94Da77916B461E0cCa2Dd6402442 |
HookrMarketCoordinatorV5.treasuryBeneficiary() | 0x9BB7c01571ef6e59a8834A6a89A6b024822BAf6f |
HookrNativeMechanicsBlockV2.protocolRecipient() | 0x9BB7c01571ef6e59a8834A6a89A6b024822BAf6f |
HookrTreasuryForwarderV1.nativeBlock() | 0xD700492b504ba5A72D7de28dDe11Cd7985a7F1ae |
HookrTreasuryForwarderV1.target() | 0xF4Ab4698554D5c95874986d5e956c62e5E6aB3eE |
HookrModuleCatalogV1.canonicalStatefulModule() | 0xD700492b504ba5A72D7de28dDe11Cd7985a7F1ae |
HookrMarketCoordinatorV5.defaultProtocolShareBps() | 2000 |
HookrMarketCoordinatorV5.marketOpeningPaused() | false (the owner unpaused it after deployment, so both lanes are open to any caller; read 2026-09-08) |
HookrKernelRouterV3.integrationVersion() | 3 |
HookrKernelQuoterV1.integrationVersion() | 1 |
HookrReleaseCreate2FactoryV1.authorizedDeployer() | 0xF4Ab4698554D5c95874986d5e956c62e5E6aB3eE |
The coordinator, the registry, the catalog and the forwarder are all owned by the deployer. The forwarder's target is the same address today; rotating it is the one payout change that does not touch a pinned address. See Immutability and ownership.
Registry Identifiers
The values registerModule, registerIntegration, registerKernel and sealRootProfile returned, which an integrator reads back rather than recomputing.
| Identifier | Value |
|---|---|
| Module id | 0x961091565aaf4eaa4996296fda9772957e61d18d90b965111a59ded2bbb5e774 |
| Router integration id | 0xc9ddc18b51d83cdafa6da985c67b4db41895dcde37b719597bdda9db6396c455 |
| Quoter integration id | 0x6e5a5b6aa6d141ccaf3b9f25f60e87919fc7a724cc845d146581eb49c079a9a9 |
| Kernel id | 0x1be0c118b1c6520d97de31ee9f0c33069f0e715ffcdcb16c87a343752bb5be14 |
| Root profile manifest hash | 0x74f018eb9afa65dcf38eb682397a21937b8568572c9884faa12465833bbcf213 |
| Kernel family id | 0x8b1849873123e8aae0521342fa900a748f6ac5f572800cddb1e71027474213b0 |
| Module key | 0xb7e3f7cb75273b57fec1d1eec0c8e7c59568c1537ce2135df897d1f14ef74304 |
| Root profile id | 0x460f3441e5dc6f26fe4729ecb80ad7aa9ba896af54bed88a47f1218588129d72 |
The last three are hashes of fixed strings and read back off the contracts that hold them: the kernel family id is HookrKernelRouterV3.KERNEL_FAMILY_ID and HookrKernelQuoterV1.KERNEL_FAMILY_ID, both keccak256("HOOKR_SWAP_DELTA_V1"); the module key is HookrNativeMechanicsBlockV2.MODULE_KEY, keccak256("HOOKR_NATIVE_MECHANICS"); the root profile id is keccak256("HOOKR_LAUNCH_V2_MIN_ROOT_PROFILE"), the permanent identity of the sealed profile.
Verification
Every contract above holds verified source on Blockscout as a full match, and Sourcify holds the same 16 addresses as exact matches. Verification records the build settings and the address-by-address comparison.