Skip to content

Releases: category-labs/monad

v0.16.1

Choose a tag to compare

@Arjun-Somvanshi Arjun-Somvanshi released this 25 Aug 17:46
Immutable release. Only release title and notes can be modified.

⚠️ Do not upgrade your mainnet or testnet node until you receive an official announcement.
Upgrades are communicated via official channels. See upgrade instructions for details.

⚠️ Mandatory upgrade for all mainnet nodes before 2026-09-02 14:30 UTC. This release sets the MONAD_TEN activation timestamp for mainnet. A node still on v0.16.0 or earlier after that instant will continue applying MONAD_NINE rules and diverge from the network.

monad (execution) v0.16.1 Changelog

Tag: v0.16.1
Commit: 7279dfc7b

Highlights

  • MONAD_TEN activation on mainnet — MIP-8 (page-encoded storage) activates on mainnet at timestamp 1788359400 (2026-09-02 14:30 UTC). Mainnet counterpart to the testnet activation shipped in v0.16.0.
  • Page-encoded timeline now required on mainnet — nodes must present either a page-encoded primary (Phase C) or an active secondary timeline (Phase A/B dual-db), or they will fail to start.
  • Dual-db commit support in the ethblocks runloop, allowing nodes still in Phase A/B to commit to both timelines.

Protocol changes

  • Set MONAD_TEN activation timestamp for mainnet — 1788359400 (2026-09-02 14:30 UTC). MONAD_NINE remains in effect for timestamps below that. Ref: monad (execution) PR #2489
  • Enforce page-encoded timeline assertion on mainnet — previously testnet-only. Nodes that have not completed Phase A (dual-db activation) will fail to start. Ref: monad (execution) PR #2489

Robustness fixes

Internal changes

Full Changelog: v0.16.0...v0.16.1

v0.15.2

Choose a tag to compare

@rtsaimonad rtsaimonad released this 21 Jul 17:18
Immutable release. Only release title and notes can be modified.

⚠️ Do not upgrade your mainnet or testnet node until you receive an official announcement.
Upgrades are communicated via official channels. See upgrade instructions for details.

monad (execution) v0.15.2 Changelog

Tag: v0.15.2
Commit: 2422a8592

Highlights

  • MIP-8 gas schedule — adds page-based storage gas schedule; eth_createAccessList deduplicates storage keys by page (activation in a future release)
  • Follow-up to MIP-12: Block reward validation — maximum block reward is now validated; blocks exceeding the cap are rejected
  • EIP-7843: Consensus round in tx context — Monad consensus round number threaded into evmc_tx_context via BlockHeader::slot_number
  • Dual-timeline DB support — MPT database supports a secondary page-encoded timeline; statesync works with both slot- and page-encoded databases

Protocol changes

RPC/SDK changes

  • eth_createAccessList now deduplicates storage keys by page under MIP-8. Ref: monad (execution) PR #2253
  • Fix eth_getStorageAt returning 0 on page-encoded nodes. Ref: monad (execution) PR #2393
  • eth_call execution revert error code changed from -32603 to 3 — aligns with standard EVM behavior.

Robustness fixes

Internal changes

Full Changelog: v0.15.1...v0.15.2

v0.15.1

Choose a tag to compare

@rtsaimonad rtsaimonad released this 21 Jul 14:38
Immutable release. Only release title and notes can be modified.

⚠️ Do not upgrade your mainnet or testnet node until you receive an official announcement.
Upgrade instructions are communicated via official channels. See upgrade instructions for details.

monad (execution) v0.15.1

Tag: v0.15.1
Commit: 817a09f64

No execution-layer changes. The monad binary is identical to v0.15.0.

See monad-bft v0.15.1 release for full changelog.

Full Changelog: v0.15.0...v0.15.1

v0.15.0

Choose a tag to compare

@rtsaimonad rtsaimonad released this 01 Jul 20:16
Immutable release. Only release title and notes can be modified.

⚠️ Do not upgrade your mainnet or testnet node until you receive an official announcement.
Upgrades are communicated via official channels. See upgrade instructions for details.

monad (execution) v0.15.0 Changelog

Tag: v0.15.0
Commit: 817a09f64

Highlights

  • One-time DB metadata migration required (monad-mpt --upgrade) — bumps DB schema MONAD007 → MONAD008, initializing secondary timeline metadata for upcoming dual-timeline support

Robustness fixes

  • Convert user-facing MONAD_ASSERT to MONAD_ASSERT_THROW — prevents panics on malformed RPC input
  • Enforce staking syscall ordering — validation now rejects staking syscalls submitted out of order
  • Fix event payload overflow check — rounds up size before alignment check to prevent assertion failure on large payloads
  • Fix MONAD007→MONAD008 migration data corruption on nodes with ≥15.8 TB disk — prevents db_offsets overrun and root-offsets ring bound violation during monad-mpt --upgrade
  • Fix monad-mpt --upgrade crash on legacy databases — fixes integer underflow causing Assertion 'r != MAP_FAILED' on nodes with databases created before num_cnv_chunks was added to the storage pool footer

Internal changes

  • Dual-timeline: add secondary timeline metadata and monad-mpt --upgrade DB migration tool
  • MPT memory-ordering fix: route version_lower_bound_ reads through acquire accessor to fix data race on reader path
  • Fix missing cast from monad_eth_revision to evmc_revision
  • Add --disable-sq-thread-cpu flag to cmd/monad
  • Remove support for Petersburg and Constantinople forks (Ethereum replay only)
  • monad-mpt status output format changed — the line previously showing MPT database has N history, earliest is X latest is Y now reads MPT database has been configured to retain no more than Z versions., with block height on the Latest finalized is <block> line. monad-status has been updated; operators using custom scripts parsing monad-mpt output should update to read Latest finalized is instead of the old latest is pattern.

Full Changelog: v0.14.7...v0.15.0

v0.14.7

Choose a tag to compare

@rtsaimonad rtsaimonad released this 30 Jun 16:42
Immutable release. Only release title and notes can be modified.

⚠️ Do not upgrade your mainnet or testnet node until you receive an official announcement.
Upgrades are communicated via official channels. See upgrade instructions for details.

monad (execution) v0.14.7 Changelog

Tag: v0.14.7
Commit: 3d04e824b

v0.14.7 is a hotfix on top of v0.14.6. If upgrading from v0.14.5 or earlier, this release includes all v0.14.6 execution changes listed below.


v0.14.7 changes (hotfix)

RPC/SDK changes

  • Mixed TX envelope decoding for eth_simulateV1 — accepts both direct legacy RLP list payloads and string-wrapped envelopes (EIP-2930, EIP-1559); fixes crash on legacy transactions
  • Throw on missing TX result — converts MONAD_ASSERT to MONAD_ASSERT_THROW in execute_block_transactions so RPC process fails gracefully instead of crashing

v0.14.6 changes (included in this release)

RPC/SDK changes

  • eth_simulateV1 implementation — simulate multiple transactions across multiple blocks with state/block overrides, trace transfers, and call limits
  • Graceful state override failure — eth_simulateV1 state override errors now return a structured error response instead of an assertion failure

Internal changes

  • Restructure intrinsic_gas as additive feature gates (includes latent EIP-7702 gas bug fix)

Full Changelog: v0.14.6...v0.14.7

v0.14.6

Choose a tag to compare

@rtsaimonad rtsaimonad released this 30 Jun 16:42
Immutable release. Only release title and notes can be modified.

⚠️ Do not upgrade your mainnet or testnet node until you receive an official announcement.
Upgrades are coordinated via official channels. See upgrade instructions for details.

monad (execution) v0.14.6 Changelog

Tag: v0.14.6
Commit: 19ea3f147

RPC/SDK changes

  • Graceful state override failureeth_simulateV1 state override errors now return a structured error response instead of an assertion failure
  • eth_simulateV1 implementation — simulate multiple transactions across multiple blocks with state/block overrides, trace transfers, and call limits

Internal changes

Full Changelog: v0.14.5...v0.14.6

v0.14.5

Choose a tag to compare

@rtsaimonad rtsaimonad released this 02 Jun 17:15
Immutable release. Only release title and notes can be modified.

monad (execution) v0.14.5 Changelog

Tag: v0.14.5
Commit: ffefb81a0

Robustness fixes

  • Reject non-canonical RLP encoded strings/lists
  • Prevent iterator overrun on odd input length
  • Preserve access lists for reverted frames

Internal changes

  • Remove intx library, replace with custom uint128_t/uint256_t types
  • Make DbCache a member of TrieDb

Full Changelog: v0.14.4...v0.14.5

v0.14.4

Choose a tag to compare

@rtsaimonad rtsaimonad released this 19 May 15:28
Immutable release. Only release title and notes can be modified.

monad (execution) v0.14.4 Changelog

Tag: v0.14.4
Commit: 6c75a8851

Robustness fixes

Internal changes

  • [Execution] zkVM: add partial trie DB — new partial MPT implementation for the zkVM guest program (RISC-V), including RLP-encoded execution witness decoder

See monad-bft v0.14.4 release for full changelog.

Full Changelog: v0.14.3...v0.14.4

v0.14.3

Choose a tag to compare

@rtsaimonad rtsaimonad released this 05 May 19:04
Immutable release. Only release title and notes can be modified.

Tag: v0.14.3
Commit: 7fcd693f7

Robustness fixes

  • [Execution] Fix DbCache assert-fail when reading finalized state older than latest finalized block
    • Ref: PR #2190
    • Replaces assertion with explicit checks; fixes incorrect truncated value propagation when walking the chain back past the latest finalized block
  • [Execution] Raise MIN_HISTORY_LENGTH floor from 257 to 300
    • Ref: PR #2217
    • Execution requires 256 history blocks for the block hash buffer; the old floor of 257 left only a one-block margin. Under disk pressure, history could shrink below 256 after a restart, forcing a full statesync. New floor gives ~44 blocks of headroom; also bumps the stored cap on existing DBs at init time so nodes carried over from an older binary aren't pinned at 257.
  • [Execution] Fix evm-as PushLabel encoding at offset zero for pre-Shanghai targets
    • Ref: PR #2213
    • Fixes incorrect PUSH0 encoding in the EVM assembler for pre-Shanghai code paths

Performance changes

  • [Execution] Extend trie span optimization to fnext, child_off, and SharedPtr arrays
  • [Execution] Remove inflight read coalescing from rwdb find path
  • [Execution] Elide DB fetch in State::is_touched

Full Changelog: v0.14.2...v0.14.3

v0.14.2

Choose a tag to compare

@rtsaimonad rtsaimonad released this 21 Apr 17:30
Immutable release. Only release title and notes can be modified.

monad (execution) v0.14.2 Changelog

Tag: v0.14.2
Commit: 169e5c45b

Robustness fixes

  • [Execution] Fix possible UB in unaligned read
  • [Execution] Fix incorrect auto_expire_version initialization after DB reset
  • [Execution] Fix compaction progress reset during statesync
    • Ref: PR #2133
    • Fixes compaction head being incorrectly reset to 0 during statesync, causing compaction to restart from the beginning

Performance changes

  • [Execution] Optimize trie node array access (8-9x speedup on compaction hot path)
    • Ref: PR #2163
    • Hoists base pointers for packed node arrays via std::span<unaligned_t<T>>; reduces redundant pointer recomputation in compaction, expiration, and version tracking loops

Internal changes

  • [Execution] Replace system boost fiber with submodule (boost-1.83.0)
  • [Execution] Separate precompile gas cost calculation from runtime implementation
  • [Execution] Remove support for EVMC_FRONTIER
  • [Execution] Add block-level event recording for Ethereum and Monad replay
    • Ref: PR #2006
    • Emits BLOCK_START/BLOCK_END events during replay, making replay event streams usable for tooling