Contracts and addresses
Coins are ERC-20s and their markets are standard Uniswap V4 pools, reachable with the canonical routers and quoters.
Addresses
Robinhood Chain
Chain id 4663. The native currency is ETH; wrapped ETH is 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73. Blocks and transactions are on Robinscan and on Blockscout.
The deployment in force since 15 August 2026. Keys are the ones the chain registry serves under contracts; where this table and the registry disagree, the registry is right.
| Key | Contract | Address |
|---|---|---|
tokenFactory | BCTokenFactory | 0xe3A826C056e578c240D362BF4C2fa53E5c0c17a5 |
bondingCurve | BondingCurve | 0xEAAa2Ae7De8B80d7a59ECF08B078EFAC6fCe6659 |
curveMath | CurveMath | 0x78E70960A8A77d4D854Cb778A65890dB8EAfD284 |
harvester | Harvester | 0x2F33cb57fAa8bF1EB52ea18D90B0dc2f8cc2Db1f |
polDistributor | PolDistributor | 0x9604e6FAD64F0fe7fE84bE6Cd3079e7a8C6265CC |
stakingVaultFactory | StakingVaultFactory | 0xFB443f5c6Ba35334a1AB2Fc12d4b877fc2A8d6A9 |
cloneFactory | Recipient registry | 0xe4a0236C7B3CADFc2483473856334E494E784EF0 |
referralManager | ReferralManager | 0xf68b5330684112dA86994F1AC271b36224447ee7 |
tokenVesting | TokenVesting | 0x60a08194587bdD64f37FAf96Cb949Fa4b6e84800 |
highlightsManager | HighlightsManager | 0x6Bfdc4943024f5e599c6Be5fa618f0Bc9cB0df7e |
univ4.poolManager | Uniswap V4 | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
univ4.universalRouter | Uniswap V4 | 0x8876789976dEcBfCbBbe364623C63652db8C0904 |
univ4.quoter | Uniswap V4 | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
univ4.positionManager | Uniswap V4 | 0x58daec3116aae6D93017bAAea7749052E8a04fA7 |
univ4.hook | FactoryHook | 0xb31780AAd49D3Cc7Dd6E03E9e462606F0A5A30Cc |
permit2 | Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
multicall | Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 |
Pool parameters live next to them, under univ4.pool: the dynamic-fee flag and a tick spacing of 60. A key can carry a null address: the contract is not deployed on that chain, and the feature it serves is unavailable there.
Frontier is deployed on Robinhood Chain only for now. When that changes, the registry is where it will show up first, and this section grows a table per chain.
What each contract does
The roles below hold on any chain Frontier is deployed to. Only the addresses change.
Launching and trading
- BCTokenFactory deploys a coin in either launch mode, and holds the protocol's default curve and the bounds a creator's own values must stay inside.
- BondingCurve is the counterparty to every trade until graduation, and splits the trade fee as it goes.
- CurveMath is the curve formula, deployed on its own so a buy or a sell can be priced in one
eth_callrather than simulated.
Fees and locked liquidity
- Harvester holds the locked positions. It has no withdrawal path: only fees leave it.
- PolDistributor is the permissionless entry point that collects those fees and splits them in the same transaction.
- StakingVaultFactory deploys a coin's staking vault.
- The recipient registry mints fee recipients. A recipient is provably one of ours only if this contract minted it.
Around the coin
- ReferralManager holds the write-once referral links and their shares.
- TokenVesting runs vesting schedules for any ERC-20, with a cliff and linear release.
- HighlightsManager prices and books the highlight slot.
Uniswap V4
- PoolManager, UniversalRouter, Quoter and PositionManager are Uniswap's own contracts, unmodified. A Frontier pool is reachable with them like any other V4 pool.
- FactoryHook is ours, and it is a singleton: every Frontier pool is governed by that one contract, which is what lets a coin's market be configured without a deployment of its own.
- Permit2 and Multicall3 are the usual shared infrastructure, at their canonical addresses.
Trading a coin on the curve
Before graduation a coin trades only against BondingCurve, which is the counterparty. Swapping it on a pool is not possible, because there is no pool yet.
Quote with CurveMath at the address above: it is a separate contract precisely so an off-chain caller can price a buy or a sell with one eth_call, without simulating the trade.
Read the curve parameters from the coin, not from the factory. The factory's values are the protocol's suggested defaults; a coin created on its own curve parameters carries them itself, frozen at creation.
Trading a graduated coin
A graduated coin trades on a normal Uniswap V4 pool, through the universal router. Its pool key is:
| Field | Value |
|---|---|
currency0 | the zero address, native ETH |
currency1 | the coin |
fee | 0x800000, Uniswap's dynamic-fee flag |
tickSpacing | 60 |
hooks | the hook address above |
The pool id is the hash of that key, and the API serves it directly per coin at /coins/{address}/extensions, along with the coin's live fee configuration. Instant launches have a pool from birth; curve launches get one at graduation.
Three properties matter for any integration:
- A coin's fee is per pool. It may be flat, volatility-following, or temporarily raised by a declared window. Quote rather than assume.
- The pool is a dynamic-fee pool as far as Uniswap is concerned: the rate applied to a swap is whatever the hook returns for it, and it can change between two blocks.
- Never derive a price from the amounts of a swap. That ratio includes the fee. Read the price the API serves alongside each swap, or quote the pool.
Checking any of this
Every address here can be opened on the explorer, and every rate quoted anywhere on this site is a getter on one of these contracts. Parameters lists them with the value they should return, and On-chain verification shows how to read one.