Addresses
Every contract of the v2 release on Robinhood Chain mainnet, as broadcast and read back from the chain.
Mainnet (4663): deployed on 2026-10-06 from commit 17810af, whose contracts are the same as v2.0, with the
creator's ceiling (maxCreatorBps) raised to 5000. The tables below are copied from the contracts repository's
contractV2/deploy/mainnet-v2-release.json, read back at block 81,810,987. The owner and the protocol address are
the Safe. Public launching is open; strategyCount() is the number of launches so far.
Kind 6 (Lots with reserve) was registered by the Safe after the book was written (registerPolicy and
registerEngineKind, contracts PR #81); its two rows are read from the chain, kinds(6) and kindManifest(6), and
kindCount() was 7 on 2026-10-07.
Do not point a wallet at an address from any other source for these contracts.
Robinhood Chain mainnet, 4663
Core, deployed once
| contract | address | what it is for |
|---|---|---|
HedgeFunV2Factory | 0xC78b6A83d75C5612a1A7323702B56038254a6459 | listings, quotes, launches, graduation |
HedgeFunV2Hook | 0xb5bAbc5609de876D56662d066a0B5f63eF90a8CC | the one v4 hook for every graduated pool, version 3 |
CurveDeployer | 0x501e94d1b06f955C268AE920c42B6289dA5127fd | deploys curves and vaults; DEFAULT_SALE_BPS 7931; the creator's window and exemptions |
TokenDeployer | 0x3945Fd880cb95592DBd78e419226EAf16f3F4e73 | deploys tokens |
V2TreasuryDeployer | 0xD86745C6e81D4095A47979267267c2bf41fBFC46 | the kind registry, per-stock LP share, the creator's kind and engine config |
V2TreasuryUpgradeController | 0xEdAb12AB7B673648d2D2c79d37565032E1a23Bbf | two-day treasury logic upgrades |
HedgeFunV2TradeRouter | 0x5f3e9D177231527D56fB62aCc398f22cc8F2c328 | buy and sell with any routable ERC20 |
HedgeFunV2NativeRouter | 0x241263a3780969c25832F37c77471672D9c9601a | the same, paying or receiving ETH |
HedgeFunV2LaunchNativeRouter | 0xCcFbB947f841170fA7D220f01B6CbbA0487a5cD8 | launch and first buy in one ETH payment |
V2RebalancePolicy | 0x48B841f5e14341844b7fb9428C83B89535Bc33B7 | the schema-1 policy for kind 2 |
V2TradablePercentRebalancePolicy | 0x2dCE559444c9c1b090a143178aC614345Dddbdad | the schema-3 policy for kind 3 |
V2LotReservePolicy | 0x6F125EFEEE0Fa2550672710A25AFA0F10873E69f | the schema-4 policy for kind 6; it names the config format and is never called |
TradingCalendar | 0xFE9E85f0C258Fc2757eB6Acd1ca032Ec860487F5 | the equity calendar and the owner's halt (shared with v1) |
Strategy kinds
Ids are assigned in registration order; the release scripts register them in this order. Read them back from
kinds(id) and kindManifest(id) before enabling one in a UI.
Roles and venue
| address | |
|---|---|
| Owner Safe (factory owner) | 0x2910117dd2cB431173Ae9Fb6eAF30726321d1693 |
Protocol Safe (protocol, receives the tax share and the launch fee) | 0x2910117dd2cB431173Ae9Fb6eAF30726321d1693 |
| USDG | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 |
| Uniswap v4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Uniswap V3 factory | 0x1f7d7550B1b028f7571E69A784071F0205FD2EfA |
Listed stocks
Each listing is listings(stock) → (oracle, v3Pool, openPriceE18, enabled) plus listingGates(stock). The table
lists the eighteen listings of day one; the pool column gives its fee tier.
Launches
Read factory.strategies(id) for id < strategyCount(): (token, treasury, hook, stock, creator), and
factory.curves(id) for the curve. No launch exists until public launching is opened.
What to verify when an address lands here
A reader who wants to check a row against the chain, with the contract's own getters:
hook.version()is3, and the hook address ends in the flag bits0x28CC.curveDeployer.DEFAULT_SALE_BPS()is7931.treasuryDeployer.DEFAULT_LP_BPS()is7000, andlpBps(stock)is7000for each listing unless the owner set otherwise.factory.getDefaults().lpFeeis2000,protocolBps3000,maxCreatorBps5000,bountyBps10,launchFeeAmount0.0005 ether.treasuryDeployer.kindCount()is7, andcontroller.UPGRADE_DELAY()is172800.factory.hook(),factory.curveDeployer(),factory.treasuryDeployer()and each deployer'sfactory()point at one another.