fakereum sandbox

Forked EVM sandbox

A signed transaction sent here executes locally; this server's sandbox state is layered atop https://rpc.mainnet.chain.robinhood.com (+1 failover) and never reaches the real chain.

Network name
Fake Robinhood Chain
Chain ID
4663 (0x1237)
RPC endpoint
Etherscan API
Currency
FETH
upstream chain
Network
chain 4663 (4663 / 0x1237)
RPC
https://rpc.mainnet.chain.robinhood.com
https://robinhood-rpc.publicnode.com
replay guard

Anti-replay protection is on. A transaction whose signer already holds a native balance on chain 4663 is refused — this sandbox shares that chain's ID, so such a signed tx could be replayed onto the real chain. Sign from a wallet funded only with FETH (zero upstream balance).

explore
etherscan api

The /api and /v2/api endpoints are an Etherscan v2-compatible proxy. No API key is needed — the upstream explorer is a Blockscout instance. Requests go to chain 4663's explorer with chainid forced. Currently only the logs&action=getLogs module is supported; its response is merged with this sandbox's logs so your tooling sees local state alongside the real chain. Both paths are also returned by discovery below (etherscanApi / etherscanApiV2).

discovery

Detect this sandbox from a dapp without any custom RPC method. Wallets refuse to forward fakereum_* calls but always relay eth_call, so a call to the sentinel below (calldata ignored — no real chain has code there) returns the sandbox config, ABI-encoded as a single string of JSON:

eth_call({ to: "0x000000000000000000000000000000000000fa4e" })
↳ abi-decode the result to a string, then JSON.parse:

{
  "chainId":          "0x…",      // this sandbox
  "upstreamChainId":  "0x…",      // forked chain
  "networkName":      "…",
  "symbol":           "…",
  "rpc":              "…/rpc",     // JSON-RPC
  "etherscanApi":     "…/api",     // Etherscan v2 proxy
  "etherscanApiV2":   "…/v2/api",  // same proxy, /v2/api path
  "explorer":         "…",         // this explorer
  "upstreamExplorer": { "name": "…", "url": "…" }   // optional
}