Testnet Changelog
Note: changelog entries follow one of the following categories:
- [EVM]: VM protocol behavior (opcodes, precompiles, fees)
- [Consensus]: consensus protocol behavior
- [RPC]: JSON-RPC API and websocket behavior
- [Node ops]: validator operations and networking
- [Network params]: protocol constants
v0.10.4 [2025-08-18]
Note: this change has been rolled out gradually, but generally is live on testnet-2
as of
2025-08-18, and on testnet
(full nodes only) as of 2025-08-18.
Tags or hashes:
- MonadBFT: tag
v0.10.4
- Execution: hash
39c42e6
Notable behavioral changes:
- [RPC] EIP-4844 related fields in RPC responses are removed.
- Block headers returned from RPC will no longer have
blobGasUsed
,excessBlobGas
, andparentBeaconBlockRoot
.
- Block headers returned from RPC will no longer have
Notable performance changes:
- [Consensus] Votes are now sent to current round leader. This is a consensus optimization that reduces the effective delay due to a round timeout (PR #2093)
- [Consensus] Caching of recently-verified quorum certificates (PR #2167)
- [Node ops] Enablement of trace calls is now controlled via
monad
(execution) command line arg--trace_calls
.- To preserve legacy behavior,
--trace_calls
is currently enabled in the debian package. In the future we recommend disabling for validators and enabling it for RPC and archive nodes. - This allows voting validators to opt out of computing traces since they're only need for RPC nodes.
- To preserve legacy behavior,
Notable internal changes:
- [Consensus] TC forwarding to prioritized and public (non-dedicated) full nodes
(PR #2149)
- Prior to
v0.10.4
, all full nodes were subject to lagging behind validators in the event of a timeout because round advancement due to TC was not forwarded (and still isn’t to dedicated full nodes). - As a result, after timeouts, full nodes would frequently forward transactions to the next three leaders relative to a stale state. This results in those transactions often missing and the ensuing blocks being comparatively empty.
- Prior to
- [Node ops] Bugfix for secondary raptorcast (round gap crash) that affected validators in Publisher mode (PR #2090)
- [Node ops]
ledger-tail
improvements (PR #2144)- Reduced memory usage on startup
author_dns
field changed toauthor_address
to reflect change in v10 addresses- Timeouts and finalizations are tracked and logged
- [Consensus] Txpool account preloading bugfix (PR #2108)
v0.10.3 [2025-08-12]
Note: this change went live on testnet
on 2025-08-12, and on testnet-2
on 2025-07-30.
Notable behavioral changes:
- [Consensus] Consensus mechanism upgraded from Fast-HotStuff to MonadBFT. This is a major upgrade that adds (i) resilience to tail forking and (ii) 1-slot speculative finality
- [RPC] Add support for real-time data via
WebSocket and shared memory queue access (docs coming soon):
- Geth real-time events (via WebSocket)
- Geth real-time events with Monad extensions (via WebSocket)
- Real-time data via shared memory queue, for programs on a full node host using the execution event SDK
- [Network params] Block time reduced from 500 ms to 400 ms
Notable performance changes:
- [Execution] Switch to JIT EVM. The bytecode of expensive or frequently-executed contracts is compiled directly to native code for faster execution
- [Execution] Switch to using file pointer-based IPC to execute blocks. Previously, the client was using a write-ahead log (WAL), which did not take advantage of available consensus information and could result in avoidable execution
Notable internal changes:
- [Node ops] Adds peer discovery
- [Node ops] Adds full node RaptorCast, making the full node network scalable
Other notes:
- This version adds functionality for EIP-2537 (BLS12-381 precompiles), however the precompile is not yet activated in the VM, so effectively it is not supported yet. This will be addressed in the next version.
v0.9.3 [2025-05-29]
Notable behavioral changes:
- [RPC]
eth_call
andeth_estimateGas
limits- RPC providers can now set individual per-transaction limits on maximum gas for
eth_call
andeth_estimateGas
- Previously the limit would always be the block gas limit (150M), now the RPC provider may choose (default: 30M)
- Controlled with
--eth-call-provider-gas-limit
and--eth-estimate-gas-provider-gas-limit
- Add a maximum timeout for queueing when executing
eth_call
andeth_estimateGas
- Controlled with
--eth_call_executor_queuing_timeout
- Controlled with
- RPC providers can now set individual per-transaction limits on maximum gas for
Notable performance changes:
- [RPC] Improve overall
eth_call
performance by maintaining separate queues for cheap and expensiveeth_call
operations, so that cheapeth_call
operations will not be queued behind expensive ones.- This adds two new RPC error strings:
failure to submit eth_call to thread pool: queue size exceeded
failure to execute eth_call: queuing time exceeded timeout threshold
- This adds two new RPC error strings:
- [RPC] Added an archive index for
eth_getLogs
to support queries with address and/or topic filters- This enables larger block ranges to be queried efficiently, with work proportional to number of matching logs instead of number of blocks in range
- [Execution] Better bounding of TrieDB traversals
Notable internal changes:
- [Node ops] Performance improvements for slow statesync client upsert
- [Node ops] Bugfix for execution delay and abrupt history length drops caused by premature soft reset
- [Node ops]
keystore
QOL improvements- Support for importing from a private key in hex string format (previously required conversion to json file)
- More helpful documentation via
--help
command
testnet-1 active set expansion [2025-05-02]
Notable behavioral changes:
- none
Notable performance changes:
- none
Notable internal changes:
- [Network params] Testnet validator set expanded from 72 to 99 nodes
v0.9.2 [2025-04-05]
Notable behavioral changes:
- none
Notable performance changes:
- [RPC] Update to the
eth_call
execution implementation - uses fewer threads to achieve the same concurrency as inv0.9.1
Notable internal changes:
- [Node ops] Support for a faster statesync mechanism
- [RPC] RPC no longer accepts requests while node is statesyncing
- [Node ops] Some reliability and efficiency improvements to how statesync traffic is carried between nodes
- [Node ops] Bugfixes for execution crashes (
monad::mpt::deserialize_node_from_buffer
,'Resource temporarily unavailable
)
- [Node ops] Bug fix for unbounded blocksync requests that result in node OOM failures
- [Node ops] Removal of DNS resolution panic on start up
v0.9.1 [2025-03-24]
Notable behavioral changes:
- none
Notable performance changes:
- none
Notable internal changes:
- [Node ops] Bugfix for blocksync errors
- [Node ops] Reliability and efficiency improvements to statesync
v0.9.0 [2025-03-14]
Notable behavioral changes:
- [EVM] Max contract size increased from 24kb to 128kb (enabled 3/14/25 19:00 GMT)
- [RPC]
debug_traceTransaction
fixes- Fixed a bug where, within one transaction, only the first 100 calls were being traced
- Added
error
andrevertReason
fields to response data
Notable performance changes:
- [Consensus] Dataplane v2 - simpler and more efficient implementation; small performance improvement in broadcast time
- [RPC] Improvements to RPC performance for
eth_call
- [RPC] Removed redundant sender_recovery operation on raw transactions received via RPC
Notable internal changes:
- [Node ops] Statesync improvements to mitigate negative performance effects on upstream validator nodes
- [RPC] EIP-2 signature validation added to RPC transaction validation
- [Node ops] Miscellaneous tracing, logging and metrics additions
- [Consensus] RaptorCast performance improvement when dealing with invalid symbols
v0.8.1 [2025-02-14]
Notable behavioral changes:
- [Network params] Block time reduced from 1s to 500 ms (enabled 2/14/25 19:00 GMT)
- [Network params] Block gas limit reduced from 300M to 150M (to keep gas limit consistent) (enabled 2/14/25 19:00 GMT)
- [EVM] Transactions are charged based on gas limit, not gas consumed (enabled 2/14/25 19:00 GMT)
- [RPC] UX improvements for transaction status. RPC nodes track status of transactions submitted to them in order to provide updates to users.
Notable performance changes:
- none
Notable internal changes:
- none