ETH$3,420
Start here/chain

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

Chain ID
4663
Name
Robinhood Chain
Stack
Arbitrum Orbit (L2), settling to Ethereum
Native currency
ETH (18 decimals) — gas is paid in ETH, not a chain token
L2 block time
~0.1 s
Parent-chain block time
~12.06 s — the number Solidity actually sees
note
The public RPC is rate-limited and fine for reads and the occasional transaction. If you are indexing, backfilling, or running a bot, use a dedicated provider endpoint instead — the public node will throttle you long before your logic is wrong.

#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.

textread live from chain 4663
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 s

This 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 clockBlocks
5 minutes25
10 minutes50
30 minutes150
1 hour298
1.2 hours (the default guard window)366
No test will catch this for you
Hardhat does not emulate the quirk — neither unit tests nor mainnet-fork tests fail if you get it backwards. The only way to know is to measure the live chain. If you need the true L2 height inside a contract, call the ArbSys precompile at 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.

WETH
The wrapped-ETH the launch pools and fee policies quote against.
Uniswap V3 · NonfungiblePositionManager
Mints the launch position for venue 1.
Uniswap V3 · Factory
Resolved on-chain from the position manager; never hardcoded by the launcher.
Uniswap · SwapRouter02
V2 + V3 swaps and the venue-1 dev buy.
Uniswap V4 · PoolManager
Singleton behind dexIds 2, 6 and 7.
SushiSwap V3 · NonfungiblePositionManager
Mints the launch position for venue 5.
SushiSwap V3 · Factory
Sushi’s own V3 factory.
SushiSwap V3 · SwapRouter
The original router ABI — deadline lives inside the params struct.

#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 verify tends to answer Unknown UID or raw HTML. Submit to Blockscout directly.
chain 4663·on-chain values read 2026-07-29·Blockscout