A signed transaction sent here executes locally; this server's sandbox state is layered atop https://arbitrum-one-rpc.publicnode.com and never reaches the real chain.
https://arbitrum-one-rpc.publicnode.comAnti-replay protection is on. A transaction whose signer already holds a native balance on Arbitrum One 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).
The /api and /v2/api endpoints are an Etherscan v2-compatible proxy. Pass your own Etherscan API key (apikey=…) — it is required and forwarded upstream as-is. Requests go to Arbitrum One'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).
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
}