RPC Differences
Monad aims to match the RPC behavior as close as possible to Geth’s behavior, but due to fundamental architectural differences, there are some differences listed below.
Logs
eth_getLogs
has a maximum block range, configured by RPC provider but typically set to 1000. Because Monad blocks are much larger than Ethereum blocks, we recommend using small block ranges (e.g. 1-10 blocks) for optimal performance. When requesting a longer range, requests can take a long time to be fulfilled, and may time out.
Transactions
-
eth_sendRawTransaction
may not immediately reject transactions with a nonce gap or insufficient gas balance as they would on Ethereum. The RPC server was designed with asynchronous execution in mind, and under asynchronous execution, the RPC server may not have the latest account state. Thus, these transactions are initially allowed, as they may become valid transactions during block creation. -
eth_sendRawTransaction
,eth_call
andeth_estimateGas
do not accept EIP-4844 transaction type, because EIP-4844 is not supported.
eth_call
eth_call
s that are reliant on old state (i.e. with an old block number) may fail, because full nodes do not provide access to arbitrary historic state. See Historical Data for a fuller discussion.
Fee-related methods
eth_maxPriorityFeePerGas
currently returns a hardcoded suggested fee of 2 gwei. This is temporary.eth_feeHistory
currently also returns default values. This is temporary.
WebSocket (eth_subscribe
) behavior
Parent page: WebSocket Guide
eth_subscribe
does not support thesyncing
ornewPendingTransactions
subscription types- Reorganizations never occur in the
newHeads
andlogs
subscription types, because only real-time data for finalized blocks is presented - Monad-specific extensions to the
newHeads
andlogs
subcription types (calledmonadNewHeads
andmonadLogs
) are provided to offer better latency