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

JSON-RPC Support

Ethereum JSON-RPC methods supported by Rome EVM endpoints, plus Rome-specific behaviors — for Foundry, Hardhat, ethers, viem, and MetaMask.

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 extension methods

Beyond standard Ethereum RPC, the proxy exposes rome_* methods:

Method
Purpose

rome_emulateTx

Emulate a transaction off-chain (returns the Solana execution result)

rome_emulateTxWithPayer

Emulate against a specific payer

rome_emulateCallAccounts

Emulate and return the Solana accounts a call touches

rome_emulateRegRollup

Emulate a rollup registration

rome_getResources

Report proxy resource pool state (payers, holders)

rome_mintId

Resolve the SPL mint behind an ERC-20 wrapper

rome_buildInfo

Proxy build + on-chain program info

rome_isCompatible

Check proxy/program compatibility

rome_solanaTxForEvmTx

Get the Solana transaction(s) for an EVM tx hash

rome_sendUnsignedTransaction

Submit an unsigned transaction (synthetic-sender flows)

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?