JSON-RPC Support
Rome EVM endpoints speak standard Ethereum JSON-RPC. Foundry, Hardhat, ethers, viem, and MetaMask work against Rome the same way they do on any EVM chain. This page lists what's supported and the few Rome-specific behaviors worth knowing.
Supported methods
Core (state & execution): eth_chainId, eth_blockNumber, eth_getBalance, eth_getCode, eth_getStorageAt, eth_getTransactionCount, eth_call, eth_estimateGas, eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory.
Blocks & transactions: eth_getBlockByNumber, eth_getBlockByHash, eth_getBlockReceipts, eth_getTransactionByHash, eth_getTransactionReceipt, eth_sendRawTransaction, block-by-index/count variants.
Logs & filters: eth_getLogs, eth_newFilter, eth_newBlockFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter.
WebSocket subscriptions: eth_subscribe / eth_unsubscribe (newHeads, logs). See WebSocket Subscriptions.
Net / web3: net_version, net_listening, net_peerCount, web3_clientVersion.
Not supported
debug_traceTransaction / trace_* (transaction tracing), eth_getProof, eth_createAccessList, eth_blobBaseFee (no blob transactions), txpool_* (no public mempool). newPendingTransactions subscriptions are accepted but never emit.
Rome-specific behaviors
Gas is Solana-derived โ estimate, don't hardcode
Rome meters execution in Solana compute units, surfaced as EVM gas. Practical consequences:
Always let your tooling estimate gas.
forge create,cast, and Hardhat calleth_estimateGason-chain and get the right value automatically.Don't hardcode
21000for native transfers. A transfer to an address that doesn't exist yet costs more than 21000 (it creates the recipient account). Estimation handles this; a hardcoded21000gas limit will fail for new recipients.
forge script --broadcast needs --skip-simulation
forge script --broadcast needs --skip-simulationforge script sets its broadcast gas limit from a local simulation, which under-provisions against Rome's gas model. Add --skip-simulation so Foundry uses the chain's eth_estimateGas instead:
forge create, cast send, and Hardhat are unaffected โ they already estimate on-chain.
eth_getLogs is range-capped (~12,000 blocks)
eth_getLogs is range-capped (~12,000 blocks)Like Infura, Alchemy, and other production RPCs, eth_getLogs rejects overly wide block ranges (error -32005). Bound your queries:
A queryFilter with no range scans all history and will exceed the cap โ pass an explicit fromBlock/toBlock. Receipt-based event assertions (e.g. waiting on a tx and reading its logs) are unaffected.
Fees
eth_gasPrice returns the real, oracle-derived price; wallets (including MetaMask) use it and display correct fees. Submitted fee fields are accepted permissively โ both legacy and EIP-1559 transactions land with standard tooling defaults.
Last updated
Was this helpful?