Mainnet Changelog
This is a curated list of only changes affecting mainnet.
note
We group changes into
- protocol changes (generally requiring a new Revision)
- generally tagged with [EVM], [Consensus], or [Network params]
- RPC/SDK behavioral changes (generally tagged with [RPC])
- performance changes
- tagged based on the nature of the change as [EVM], [Consensus], or [RPC]
- internal/node-ops changes (generally tagged as [Node ops])
v0.12.6 [2026-01-14]
Revision: MONAD_EIGHT (unchanged)
Tags or hashes:
monad-bft: tagv0.12.6monad: tagv0.12.6
Notable RPC/SDK changes
- [RPC] Fix depth bug in selfdestructing call frames
- Ref: monad PR #1977
- [RPC] Prestate tracer conformance fixes
- Ref: monad PR #1946
Notable robustness changes
- [Consensus] Add signature verification rate limiting with authenticated peer bypass
- Ref: monad-bft PR #2601
- [Consensus] Validate confirm group message before updating peers
- Ref: monad-bft PR #2680
- [Consensus] Use Tai64N directly for wireauth timestamp comparison
- Ref: monad-bft PR #2678
- [Consensus] Improve RaptorCast decoding cache eviction
- Ref: monad-bft PR #2651
- [Consensus] Fix blocksync in-flight request tracking on cache hydration
- Ref: monad-bft PR #2635
- [Execution] Update triedb voted metadata before executing proposal
- Solves a race condition between Voted updates through websocket and corresponding JSON-RPC calls
- Ref: monad PR #1964
- [Node ops] Persist peers periodically for improved discovery resilience
- Ref: monad-bft PR #2633
Notable performance changes
- [Consensus] Boost dataplane throughput with ring buffer implementation
- Ref: monad-bft PR #2596
- [Execution] Native implementation for
MLOAD,MSTORE,MSTORE8,CALLDATALOADopcodes- Ref: monad PR #1963
- [Execution] Improve snapshot write performance
- Ref: monad PR #1973, monad PR #1960
- [Execution] Optimize database history length adjustment with binary search
- Ref: monad PR #1922
- [Execution] Unify single buffer and scatter read handling in AsyncIO
- Ref: monad PR #1944
Notable internal changes
- [Node ops] Docker single-node container updates for prebuilt images
- Fixes to Local Docker installation
- Ref: monad-bft PR #2674
- [Consensus] Add support for generic txpool sidecars
- Enables IPC transaction priority and forwarding controls
- Ref: monad-bft PR #2557
- [EVM] Osaka fork preparation
- Modexp gas changes and upper bound (EIP-7823/EIP-7883)
- Implement
CLZopcode- Ref: monad PR #1970, monad PR #1981
- [Node ops] Accept
--hyphen-stylelong options in CLI- Ref: monad PR #2005
- [Node ops / Archive] Archive pipeline improvements
- Add
WritePolicytoKVStorefor conditional write protection (NoClobber) - Add BFT-uploading stats logging
- Ref: monad-bft PR #2649, monad-bft PR #2661
- Add
- [Node ops] Simplify RPC txpool status tracking
- Ref: monad-bft PR #2644
- [Node ops] Snapshot tooling improvements in
monad_cli- Add
--dump_concurrency_limitparameter - Add sharding support for distributed snapshot creation
- Ref: monad PR #1967, monad PR #1965
- Add
- [Node ops] Add RaptorCast decoding cache metrics
- Ref: monad-bft PR #2667
- [Execution] Add
CommitBuilderAPI to execution database- Ref: monad PR #1968
- [Execution] Remove legacy
using_chunks_for_root_offsetsmetadata field- Ref: monad PR #1943
- [Node ops / Txgen] Add ERC-4337 + EIP-7702 generator (
erc4337_7702_bundled)- Ref: monad-bft PR #2628
- [Node ops] Add systemd service scripts for
blockcapdand execution events archivers- Ref: monad-bft PR #2590
- [SDK] Add
monad_event_resolve_ring_fileAPI- Ref: monad PR #1741
- [Execution] Enable VM host exception handling outside VM
- Ref: monad PR #1990
v0.12.4 [2025-12-05]
Revision: MONAD_EIGHT (unchanged)
Tags or hashes:
monad-bft: tagv0.12.4monad: tagv0.12.4(unchanged from v0.12.3)
Notable internal changes
- [Node ops] Fix peer discovery port configuration when constructing self name record
- Use port from peer discovery config instead of bound socket when constructing self name record. This bug affected node operators using a NAT.
- Ref: monad-bft PR #2655
v0.12.3 [2025-12-04]
Revision: MONAD_EIGHT (unchanged)
Tags or hashes:
monad-bft: tagv0.12.3monad: tagv0.12.3
Notable RPC/SDK changes
- [RPC] EIP-7966 (
eth_sendRawTransactionSync) support- Ref: monad-bft PR #2542
- [RPC] Populate
valuefield on traces for staking precompile syscalls (added in0.12.3-rpc-hotfix2)- Ref: monad PR #1938
Notable robustness changes
- [Consensus] Wire authentication protocol for UDP
- Adds authenticated UDP communication to improve network security
- Includes replay window adjustments for improved reliability
- Ref: monad-bft PR #2417, monad-bft PR #2544, monad-bft PR #2626, monad-bft PR #2091
- [Execution] Improve
statesyncshutdown and fix protocol corruption- Modified
statesync_server_recv()to guarantee complete reads - Ref: monad PR #1930
- Modified
- [RPC] Prevent reserve balance crash in RPC
- Add reserve balance violation error messages in call frames
- Ref: monad PR #1932, monad-bft PR #2629
- This was already previously released in
v0.12.2-rpc-hotfix
- [Consensus] Add timeout to
txpoolIPC stream- Prevents hanging connections in transaction pool communication
- Ref: monad-bft PR #2619
- [Consensus] Reject timeout certificates with empty signers
- Adds validation to prevent malformed timeout certificates
- Ref: monad-bft PR #2630
- [Consensus] Verify RaptorCast chunk length is non-zero
- Adds validation to prevent malformed RaptorCast chunks
- Ref: monad-bft PR #2638
- [Execution] Fix MPT restore bug that failed to preserve
version_lower_bound- Ref: monad PR #1955
- [Execution] Fix move trie version forward bug
- Erase versions that fall out of history range before moving forward to newer versions
- Ref: monad PR #1957
- [Execution] Fix dangling pointers to intercode
- Resolves memory safety issue with
get_codeandread_codefunctions - Ref: monad PR #1941
- Resolves memory safety issue with
- [Execution] Add retries to
runloop_monad_ethblocks- Ref: monad PR #1953
Notable performance changes
- [RPC] Improve
eth_getLogsperformance- Reduce memory copies and unify receipt-to-logs processing
- Ref: monad-bft PR #2588, monad-bft PR #2591, monad-bft PR #2631
- [Execution] Fiber: add support for move-only functors
- Improves execution efficiency by supporting move semantics
- Ref: monad PR #1936
Notable internal changes
- [RPC / Node ops] Allow RPC to run without
monad-bft- Enables standalone RPC operation for improved deployment flexibility
- Ref: monad-bft PR #2613
- [Node ops] Add
--root-offsets-chunk-countflag tomonad-mptto configure the number of chunks allocated for root offsets- Each chunk holds approximately 16.5M blocks. Previously, all nodes were hardcoded to use 2 chunks (max TrieDB capacity of ~33M blocks)
- New default: 16 must be a power of 2
- Note that the default value of 16 translates to approximately 268M blocks ~ 1240 days. In most cases the limiting factor is disk capacity which will auto-compact when filled to 80%
- Ref: monad PR #1937
- [Node ops] Peer discovery improvements
- Full nodes periodically pull validator name records for dynamic validator discovery
- Add authenticated UDP port to name record
- Ref: monad-bft PR #2607, monad-bft PR #2538
- [Node ops / Archive] Archive infrastructure improvements
- Refactor
monad-block-writerfor improved reliability with--max-blocks-per-iterconfiguration - Async backfill with traces-only archive support
- Add
require-tracesarchiver flag and indexer fallback source - Support for historical execution event archiving with generic directory archiving
- Potentially breaking: Remove
--start-blockfrommonad-archiversystemd service; operators must use imperative CLI to set start block- Example:
monad-archiver set-start-block --block 1000000 --archive-sink s3://bucket-name/path - Use
--async-backfillflag to set the async-backfill marker instead of primary marker
- Example:
- Ref: monad-bft PR #2610, monad-bft PR #2606, monad-bft PR #2598, monad-bft PR #2514, monad-bft PR #2612, monad-bft PR #2569, monad-bft PR #2623
- Refactor
- [Node ops] Networking configuration updates
- Use default MTU 1500
- Add HDR histogram for broadcast latency tracking in
monad-executorandmonad-raptorcast - Ref: monad-bft PR #2576, monad-bft PR #2602
- [Consensus] RaptorCast improvements
- Clear histogram every 30s and keep only p99 for better latency tracking
- Fix timer update after receiving control messages to ensure proper keepalives
- Ref: monad-bft PR #2627, monad-bft PR #2637
- [Consensus] Dataplane: refactor to use socket handles
- Prepares dataplane for future extension with authenticated sockets
- Ref: monad-bft PR #2458
- [Execution] Replay monad: always execute first block off latest finalized state
- Ref: monad PR #1927
- [Node ops] Txgen improvements: README and guide, nonce gaps and legacy tx options, ERC20 pools, Uniswap v3 mode, NFT sale mode, websocket and RPC request generation
v0.12.2 [2025-11-18]
The Public Mainnet phase began on 2025-11-24. As such, public mainnet started at v0.12.2.