Skip to main content

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.

KeyContractAddress
tokenFactoryBCTokenFactory0xe3A826C056e578c240D362BF4C2fa53E5c0c17a5
bondingCurveBondingCurve0xEAAa2Ae7De8B80d7a59ECF08B078EFAC6fCe6659
curveMathCurveMath0x78E70960A8A77d4D854Cb778A65890dB8EAfD284
harvesterHarvester0x2F33cb57fAa8bF1EB52ea18D90B0dc2f8cc2Db1f
polDistributorPolDistributor0x9604e6FAD64F0fe7fE84bE6Cd3079e7a8C6265CC
stakingVaultFactoryStakingVaultFactory0xFB443f5c6Ba35334a1AB2Fc12d4b877fc2A8d6A9
cloneFactoryRecipient registry0xe4a0236C7B3CADFc2483473856334E494E784EF0
referralManagerReferralManager0xf68b5330684112dA86994F1AC271b36224447ee7
tokenVestingTokenVesting0x60a08194587bdD64f37FAf96Cb949Fa4b6e84800
highlightsManagerHighlightsManager0x6Bfdc4943024f5e599c6Be5fa618f0Bc9cB0df7e
univ4.poolManagerUniswap V40x8366a39CC670B4001A1121B8F6A443A643e40951
univ4.universalRouterUniswap V40x8876789976dEcBfCbBbe364623C63652db8C0904
univ4.quoterUniswap V40x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94
univ4.positionManagerUniswap V40x58daec3116aae6D93017bAAea7749052E8a04fA7
univ4.hookFactoryHook0xb31780AAd49D3Cc7Dd6E03E9e462606F0A5A30Cc
permit2Permit20x000000000022D473030F116dDEE9F6B43aC78BA3
multicallMulticall30xcA11bde05977b3631167028862bE2a173976CA11

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_call rather 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:

FieldValue
currency0the zero address, native ETH
currency1the coin
fee0x800000, Uniswap's dynamic-fee flag
tickSpacing60
hooksthe 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.