⚠️ 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.
v0.15.2
Tags or hashes:
monad-bft(consensus): tagv0.15.2(6373056bf)monad(execution): tagv0.15.2(2422a8592)
Highlights
- MIP-8 gas schedule — adds page-based storage gas schedule;
eth_createAccessListdeduplicates 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_contextviaBlockHeader::slot_number - Dual-timeline DB support — MPT database supports a secondary page-encoded timeline; statesync works with both slot- and page-encoded databases
Notable consensus/protocol changes
- [Consensus] Raptorcast: rollout deterministic stage 1 — enroll all nodes to "accept both publish v0". Ref: monad-bft PR #3143
- [Execution] MIP-8: Gas schedule for page-based storage — adds page-based gas schedule (activation in a future release). Ref: monad (execution) PR #2268, monad-bft PR #3150
- [Execution] Follow-up to MIP-12: Validate maximum block reward — blocks exceeding the cap are now rejected. Ref: monad (execution) PR #2365
- [Execution] EIP-7843: Thread Monad consensus round into
evmc_tx_contextviaBlockHeader::slot_number. Ref: monad (execution) PR #2324 - [Execution] AMSTERDAM EVM revision — new EVM revision targeting the Amsterdam hardfork. Ref: monad (execution) PR #2368
Notable RPC/SDK changes
- [RPC]
eth_createAccessListnow deduplicates storage keys by page under MIP-8. Ref: monad (execution) PR #2253 - [RPC] Fix
eth_getStorageAtreturning 0 on page-encoded nodes. Ref: monad-bft PR #3153, monad (execution) PR #2393 - [RPC]
eth_callexecution revert error code changed from-32603to3— aligns with standard EVM behavior. Ref: monad-bft PR #2683
Notable robustness changes
- [Consensus] Raptorcast: reject group invites with unreasonable round span. Ref: monad-bft PR #3145
- [Consensus] Wireauth: remove unsafe mutation before responder key is verified. Ref: monad-bft PR #3140
- [Consensus] Raptorcast: bound memory usage on
RoundInfoCache. Ref: monad-bft PR #3132 - [Consensus]
monad-state: limit forwarded txs per message. Ref: monad-bft PR #3015 - [Execution] Memory-bounded LRU cache for execution state reads. Ref: monad (execution) PR #2376
- [Execution] Statesync: reject messages with trailing bytes. Ref: monad (execution) PR #2370
- [Execution] Trim both timelines in tandem in dynamic history length adjustment. Ref: monad (execution) PR #2431
- [Execution] Expose dual-DB migration phase via FFI. Ref: monad (execution) PR #2433
- [Execution] Fix
monad-mpt --activate-secondarycorrupting DB metadata on nodes that previously ran--upgrade; addsmonad-mpt --repairto recover affected pools. Ref: monad (execution) PR #2403 - [Execution] DbCache read-through caching — reads now cached on miss, reducing redundant disk reads during page-encoded commit. Ref: monad (execution) PR #2414
Notable internal changes
- [Consensus] Prometheus config moved to
node.toml—prometheus_addrand options now in[prometheus]section; CLI flags removed. Ref: monad-bft PR #3141 - [Consensus] Expose triedb migration-phase as a Prometheus metric. Ref: monad-bft PR #3169
- [Execution] Dual-timeline: MPT database supports a secondary timeline. Ref: monad (execution) PR #2228, PR #2302
- [Execution] Page storage: TrieDb and runloop are page-encoding-aware; statesync works with page-encoded databases. Ref: monad (execution) PR #2354, PR #2383, PR #2385, PR #2386
- [Execution]
monad-cli --versionnow acceptslatest_finalized. Ref: monad (execution) PR #2364 - [Execution] Support binary snapshot dump/load on secondary timeline and page-encoded DB. Ref: monad (execution) PR #2366
Full Changelog: v0.15.1...v0.15.2