Robinhood Chain: facts and verified addresses
All values below were verified on 2026-09-22 against the live chain (eth_chainId, eth_getCode, on-chain reads) and cited to their source. The code of record is packages/chain/src/addresses/4663.ts and 46630.ts; each address there carries a source comment.
Network
| Item | Mainnet | Testnet |
|---|---|---|
| Name | Robinhood Chain | Robinhood Chain Testnet |
| Chain id | 4663 (0x1237) | 46630 (0xb626) |
| Stack | Arbitrum Orbit (Nitro) L2, settles to Ethereum mainnet | Settles to Sepolia |
| Gas token | ETH | ETH (Sepolia) |
| Public RPC | https://rpc.mainnet.chain.robinhood.com (rate limited) | https://rpc.testnet.chain.robinhood.com |
| WebSocket | wss://feed.mainnet.chain.robinhood.com (per docs, not yet probed) | wss://feed.testnet.chain.robinhood.com |
| Managed RPC | Alchemy robinhood-mainnet.g.alchemy.com/v2/KEY, QuickNode, Chainstack, dRPC, PublicNode | Alchemy robinhood-testnet, QuickNode, Chainstack |
| Explorer | https://robinhoodchain.blockscout.com (official), https://robinscan.io | https://explorer.testnet.chain.robinhood.com |
| Docs | https://docs.robinhood.com/chain | same |
| Block time | ~100 ms measured | ~200 ms measured |
| Bridge | https://portal.arbitrum.io/bridge?destinationChain=robinhood-chain | https://portal.arbitrum.io/bridge |
Operational note: the mainnet Blockscout /api/v2 sits behind a Cloudflare managed challenge for non-browser clients, so the worker never depends on it. ABIs come from Sourcify (https://sourcify.dev/server/v2/contract/4663/<address>?fields=abi), which supports both chains. The testnet explorer API is open.
Core contracts (4663)
| Contract | Address | Source |
|---|---|---|
| Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 | multicall3.com canonical, bytecode verified |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 | Uniswap canonical, bytecode verified on both chains |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 | docs.robinhood.com/chain/contracts |
| USDG (6 decimals) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | docs.robinhood.com/chain/contracts, docs.paxos.com |
Uniswap v4 (4663)
Source: https://developers.uniswap.org/contracts/v4/deployments (Robinhood Chain). Every address has bytecode on 4663, and the Pons factory's poolManager() returns the same PoolManager.
| Contract | Address |
|---|---|
| PoolManager | 0x8366a39cc670b4001a1121b8f6a443a643e40951 |
| PositionManager | 0x58daec3116aae6d93017baaea7749052e8a04fa7 |
| V4Quoter | 0x8dc178efb8111bb0973dd9d722ebeff267c98f94 |
| StateView | 0xf3334192d15450cdd385c8b70e03f9a6bd9e673b |
| UniversalRouter | 0x8876789976decbfcbbbe364623c63652db8c0904 |
Smoke test (2026-09-22, block 69713865): quoteExactInputSingle on the ETH/USDG pool (fee 3000, tickSpacing 60, no hook) returned 27.4157 USDG for 0.01 ETH.
Testnet: the PoolManager exists at the same address with identical bytecode. Periphery contracts are not documented for 46630 and are left unset until verified.
Pons V2 (4663 only)
Pons V2 is a bonding-curve launchpad that graduates into a permanently locked Uniswap v4 pool guarded by the PonsV2MemeHook. There is no testnet deployment.
| Contract | Address | Verified via |
|---|---|---|
| PonsV2LaunchFactory | 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e | Sourcify exact match |
| PonsV2MemeHook | 0xe5e702641ea86f4ae6cc3cdaed2b886f976be044 | factory.memeHook(), Sourcify match |
| PonsV2LaunchAndBuy | 0xe33e9e479df8802cb0866d5d05258bec4cf62948 | Sourcify exact match |
| Locker | 0x267444d099b10fb5ed7c3cc7b7c767adca574952 | factory.locker() |
| Fee escrow | 0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e | factory.feeEscrow() |
| Buyback vault | 0x42df2a798f82289e177311362e8f5ccc45c1219c | factory.buybackVault() |
Two other contracts named PonsV2MemeHook exist on 4663 (0x709f...6044, 0x5738...2044) bound to non-production factories. Only pools whose hooks equals the address above are Pons V2 pools.
Economics (read on-chain)
| Parameter | Value | Read from |
|---|---|---|
| Launch fee | 0.0005 ETH | factory.launchFee() |
| Launch config id | 0 (the only enabled config; id 1 reverts) | factory.getLaunchConfig(0) |
| Phantom (virtual) quote, ETH launches | 1.68 ETH | getLaunchConfig(0).phantomQuote |
| Graduation threshold, ETH launches | 4.2 ETH | getLaunchConfig(0).graduationThreshold and TokenLaunched logs |
| USDG launches | phantom 3,236 USDG, graduation 8,090 USDG | factory.pairTokenEconomics(USDG) |
| Supply | 1,000,000,000 tokens, 18 decimals | getLaunchConfig(0).supply |
| Curve split | 5/7 sellable on curve, 2/7 reserved for the pool | curve.sellableTokens(), curve.reservedTokens() |
| Curve fee | 1% (100 bps) of the quote leg | curve.feeBps() |
| Creator tax cap | 10% (1000 bps) | factory.maxCreatorTaxBps() |
| Snipe tax | 99% decaying to 0 over 3 s after launch | curve.snipeTaxStartBps(), curve.snipeTaxSeconds() |
| Graduated pool | fee 0, tickSpacing 200, full range, LP locked | getLaunchConfig(0) |
| Hook fee | 1% per swap, 30% to protocol, 70% to creator + buyback | hook.hookFeeBps(), hook.protocolFeeShareBps() |
Curve pricing
The per-token curve is a constant-product AMM over (quoteReserve, tokenReserve) where quoteReserve includes the phantom quote. For a buy of quoteIn:
net = quoteIn * (10000 - feeBps - creatorTaxBps) / 10000
tokensOut = tokenReserve * net / (quoteReserve + net)
Confirmed by simulating buy(0.01 ETH) on curve 0xa4f4ec601c6326f59527d43176a6fad46dce3e9e with a state override: the formula gives 5,740,671 tokens and the contract returned 5,740,664 (rounding). Sells mirror this on the token side. packages/tools uses an eth_call simulation for buy quotes (it also captures the snipe tax) and the formula for sell quotes.
Curve ABI derivation
The curve contract is not source-verified. Its 46 function selectors were extracted from the runtime bytecode dispatcher and resolved through the OpenChain signature database; packages/chain/test/pons.test.ts asserts every function in ponsV2CurveAbi hashes to one of those live selectors. Event layouts were read from live logs:
CurveBuy(address indexed sender, address indexed recipient, uint256 quoteIn, uint256 tokensOut, uint256 feeAmount, uint256 creatorTaxAmount)CurveSell(address indexed sender, address indexed recipient, uint256 tokensIn, uint256 quoteOut, uint256 feeAmount, uint256 creatorTaxAmount)
Launch call
factory.launchToken(params, launchConfigId = 0, pairToken, snipeTaxExemptions) payable with msg.value = launchFee (plus nothing else; use PonsV2LaunchAndBuy.launchAndBuy for a launch with an initial buy). params is:
{ name, symbol, logo, description, socials: { twitter, telegram, discord, website, farcaster },
creatorFeeRecipient, creatorTaxBps, buybackEnabled, expectedEconomics, salt }
expectedEconomics must equal factory.previewLaunchEconomics(launchConfigId, pairToken) (a bytes32 hash of the current config, so a launch fails closed if Pons changes parameters mid-flight). creatorFeeRecipient is where TALON points the FeeSplitter address. pairToken is address(0) for ETH, or USDG / an approved stock token (factory.approvedPairTokens(token)).
Stock tokens
Source of truth: GET https://api.robinhood.com/rhj/assets (195 assets on 2026-09-22, all on chain 4663, 18 decimals, ERC-20 plus an ERC-8056 uiMultiplier() for splits and dividends). Every stock token has a Chainlink price feed per the official docs; feed addresses are not yet captured (see open items). A curated subset (NVDA, AAPL, TSLA, MSFT, AMZN, GOOGL, META, COIN, MSTR, PLTR, AMD, NFLX, SPY, QQQ) is embedded in addresses/4663.ts; the worker refreshes the full list from the registry. HOOD is not in the registry.
Other launchpads (phase 2)
- Flap.sh router
0x26605f322f7ff986f381bb9a6e3f5dab0beaeb09 - Clanker factory
0xD3f2cC1731b7Fd17f28798835C2E02f0a1839A94(live since 2026-07-08)
Open items
- Chainlink feed addresses for stock tokens (docs.robinhood.com/chain/building-with-stock-tokens).
- Whether
wss://feed.mainnet.chain.robinhood.comis a standardeth_subscribeendpoint. The indexer supports both WebSocket and HTTP polling, so this only affects latency. - Uniswap v4 periphery on testnet 46630.
- Uniswap v3 deployment addresses on 4663 (only needed for legacy Pons V1 pools).