Robinhood Chain
Chain 4663: an Arbitrum Orbit L2 with ETH gas. Endpoints, verified periphery, and the block.number quirk every integrator hits.
Everything hood.dev deploys lives on Robinhood Chain, an Arbitrum Orbit L2 that settles to Ethereum and pays gas in ETH. If you have integrated with Arbitrum before, most of your instincts carry over — with one exception, in Block numbers, that has bitten every team on this chain including ours.
#Network details
#Block numbers: the one real trap
On Orbit chains, Solidity’s block.number does not return the L2 block height. It returns an approximation of the parent chain’s block number — so in a contract, one “block” is about 12 seconds, not 0.1 seconds. Meanwhile eth_blockNumber over RPC returns the L2 height, and the two differ by millions.
eth_blockNumber (L2) : 22,212,972
Solidity block.number : 25,636,483 <- parent chain
ArbSys(0x64).arbBlockNumber() : matches the L2 height
measured L2 block time : 0.1005 s
measured parent block time : ~12.06 sThis is not a rounding error, it is a 120× difference, and it changes what any block-counted window means. hood.dev’s sniper guard counts blocks, so its default of 366 blocks is about 1.2 hours of wall clock, not the ~36 seconds you would get from L2 timing. Useful conversions at 12.06 s/block:
| Wall clock | Blocks |
|---|---|
| 5 minutes | 25 |
| 10 minutes | 50 |
| 30 minutes | 150 |
| 1 hour | 298 |
| 1.2 hours (the default guard window) | 366 |
0x0000…0064 (arbBlockNumber()); never assume block.number is it.#Verified periphery
These are the chain’s own contracts, not ours. The launcher resolves each venue’s factory from its position manager at registration time rather than trusting a hardcoded address, so the values below are informational — you can re-derive every one of them on-chain.
#What is actually deployed
- Uniswap V2, V3 and V4 are all live. V2 and V3 share the canonical SwapRouter02; V4 is a singleton PoolManager reached through the unlock callback.
- SushiSwap V3 is a Uniswap V3 fork with its own factory and position manager. Note its router is the original SwapRouter ABI — the deadline lives inside the params struct and is checked on-chain — not SwapRouter02.
- Two bonding-curve venues (Flap and Virtuals) run their own pre-graduation markets. The terminal reaches both; see Venues & routing.
- Doppler-hooked V4 pools quoted in Robinhood stock tokens exist and are routable. They carry dynamic fees and are the reason the multi-hop V4 adapter exists.
#Other things worth knowing
- There is no Chainlink ETH/USD feed on this chain. Every USD figure in the app is derived off-chain from the WETH market price. Nothing on-chain depends on a USD oracle, by design.
- The testnet is not a dry run. Robinhood testnet (chain 46630) has no Uniswap V3 — only V4. A contract whose constructor touches the V3 position manager simply reverts there. Fork mainnet instead; it is strictly higher fidelity because it exercises the real periphery.
- Contract verification uses Blockscout’s native API. The Etherscan-compatible shim on this chain is unreliable, so
hardhat verifytends to answerUnknown UIDor raw HTML. Submit to Blockscout directly.
