Skip to main content

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.3 [2025-12-04]

Revision: MONAD_EIGHT (unchanged)

Tags or hashes:

Notable RPC/SDK changes

Notable robustness changes

  • [Consensus] Wire authentication protocol for UDP
  • [Execution] Improve statesync shutdown and fix protocol corruption
    • Modified statesync_server_recv() to guarantee complete reads
    • Ref: monad PR #1930
  • [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 txpool IPC stream
  • [Consensus] Reject timeout certificates with empty signers
  • [Consensus] Verify RaptorCast chunk length is non-zero
  • [Execution] Fix MPT restore bug that failed to preserve version_lower_bound
  • [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_code and read_code functions
    • Ref: monad PR #1941
  • [Execution] Add retries to runloop_monad_ethblocks

Notable performance changes

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-count flag to monad-mpt to 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
  • [Node ops / Archive] Archive infrastructure improvements
    • Refactor monad-block-writer for improved reliability with --max-blocks-per-iter configuration
    • Async backfill with traces-only archive support
    • Add require-traces archiver flag and indexer fallback source
    • Support for historical execution event archiving with generic directory archiving
    • Potentially breaking: Remove --start-block from monad-archiver systemd 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-backfill flag to set the async-backfill marker instead of primary marker
    • 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
  • [Node ops] Networking configuration updates
  • [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
  • [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.