For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 call eth_estimateGas on-chain and get the right value automatically.

  • Don't hardcode 21000 for 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 hardcoded 21000 gas limit will fail for new recipients.

forge script --broadcast needs --skip-simulation

forge 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)

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?