Developers
Build against it, and know where it ends
A contract written for an Arbitrum Orbit chain compiles, deploys and runs here unmodified, because every precompile answers at its real address with its real ABI. What follows is exactly where that stops being true.
Connect
- Network name
- RobinFork
- RPC URL
- https://rpc.robinhoodfork.fun
- Chain ID
- 42019 (Robinhood Chain mainnet is 4663 and its testnet is 46630; RobinFork is sovereign and deliberately neither)
- Currency
- RORK
- Block time
- 1000ms
- Blob transactions
- Rejected. An Orbit chain posts its data to the parent chain rather than accepting type-3 transactions itself, so accepting them here would let code work locally that fails for real.
Reproduced faithfully
- Arbitrum precompiles
- All fourteen at their real addresses, same ABI, same return shapes
- ArbSys 0x64
- arbBlockNumber, arbChainID, arbOSVersion (reports 116, meaning ArbOS 61), address aliasing
- ArbGasInfo 0x6c
- getPricesInWei with Nitro’s exact six-tuple, getGasAccountingParams, L1 data pricing
- ArbRetryableTx 0x6e
- Real ticket lifecycle: 7 day lifetime, keepalive, redeem, beneficiary-only cancel
- ArbOwner 0x70 / ArbOwnerPublic 0x6b
- Chain ownership and the gas knobs that actually change behaviour
- ArbBLS 0x67
- Reverts, exactly as the disabled precompile does on a real chain
- EVM
- Cancun, EIP-1559, TSTORE and MCOPY available
- Tokenized equities
- ERC-20 plus the ERC-8056 scaled UI amount interface Robinhood Chain’s Stock Tokens use
- Market sessions
- Chainlink’s marketStatus taxonomy, on chain, enforced
Where the emulation stops
- No parent chain
- There is no Ethereum underneath. Nothing settles, nothing is proved, and there is no outbox.
- block.number
- On a real Orbit chain this returns the parent chain block number and updates every ~13s. Here it is the local block number. Use ArbSys.arbBlockNumber() and you are correct on both.
- sendTxToL1
- Records the message and refunds the value in the same transaction. On a real chain the value is escrowed behind a 7 day challenge period.
- Base fee model
- geth’s EIP-1559, not Nitro’s exponential backlog pricer. Fees move differently under load.
- Block time
- One second. Robinhood Chain produces a block roughly every 100ms.
- Sequencing
- One geth dev node. No batch posting, no force inclusion, no Timeboost, no delayed inbox.
- Stylus
- ArbWasm and ArbWasmCache are not deployed. There is no WASM VM here.
- NodeInterface 0xc8
- Holds real code here. On a real chain the address is empty and the node intercepts calls to it, so a contract cannot call it at all.
- Session gating
- No shipping tokenized-equity protocol gates ERC-20 transfers on market hours. RobinFork does, deliberately, as its defining primitive. Do not expect a real Stock Token to behave this way.
Precompiles
| Address | Contract |
|---|---|
| 0x0000000000000000000000000000000000000064 | ArbSys |
| 0x0000000000000000000000000000000000000065 | ArbInfo |
| 0x0000000000000000000000000000000000000066 | ArbAddressTable |
| 0x0000000000000000000000000000000000000067 | ArbBLS |
| 0x0000000000000000000000000000000000000068 | ArbFunctionTable |
| 0x0000000000000000000000000000000000000069 | ArbosTest |
| 0x000000000000000000000000000000000000006b | ArbOwnerPublic |
| 0x000000000000000000000000000000000000006c | ArbGasInfo |
| 0x000000000000000000000000000000000000006d | ArbAggregator |
| 0x000000000000000000000000000000000000006e | ArbRetryableTx |
| 0x000000000000000000000000000000000000006f | ArbStatistics |
| 0x0000000000000000000000000000000000000070 | ArbOwner |
| 0x0000000000000000000000000000000000000071 | ArbWasm |
| 0x0000000000000000000000000000000000000072 | ArbWasmCache |
| 0x00000000000000000000000000000000000000c8 | NodeInterface |
| 0x00000000000000000000000000000000000000ff | ArbDebug |
System contracts
| Address | Contract |
|---|---|
| 0x5555555555555555555555555555555555555555 | WRORK |
| 0x2222222222222222222222222222222222222222 | RorkBridge |
| 0x1111111111111111111111111111111111111111 | ComplianceRegistry |
| 0x3333333333333333333333333333333333333333 | AssetRegistry |
| 0x4444444444444444444444444444444444444444 | MarketHours |
| 0x6666666666666666666666666666666666666666 | PriceOracle |
| 0x7777777777777777777777777777777777777777 | DividendDistributor |
Try it
# the chain id, through ArbSys rather than eth_chainId
curl -s https://rpc.robinhoodfork.fun -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x0000000000000000000000000000000000000064","data":"0xd127f54a"},"latest"]}'
# what ArbOS version this chain claims (0x74 = 116, meaning ArbOS 61)
curl -s https://rpc.robinhoodfork.fun -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x0000000000000000000000000000000000000064","data":"0x051038f2"},"latest"]}'
# the current market session, Chainlink marketStatus codes
curl -s https://rpc.robinhoodfork.fun -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x4444444444444444444444444444444444444444","data":"0xdb8d55f1"},"latest"]}'