v0.13.0 (MONAD_NINE)
Tags or hashes:
monad-bft(consensus): tagv0.13.0monad(execution): tagv0.13.0
Highlights
- Faster RPC responses for
latestblock queries — Thelatestblocktag now returns proposed blocks instead of waiting for finalization, reducing query latency foreth_getBalance,eth_call, and other state queries. - Faster websocket block notifications —
newHeadssubscriptions now emit voted blocks instead of waiting for finalization, providing earlier notifications to subscribers.
MONAD_NINE Activation
- [EVM] MIP-3: Linear memory implementation
- [Execution] MIP-4: Reserve balance precompile
- Ref: monad (execution) PR #2040 (scaffolding)
- Ref: monad (execution) PR #2065 (cached/incremental checks)
- Ref: monad (execution) PR #2086 (add dippedIntoReserve)
- Ref: monad (execution) PR #2106 (dippedIntoReserve argument length error)
- Ref: monad (execution) PR #2109 (fallback cost fix for clean spec)
- Ref: monad (execution) PR #2037 (skip reserve checks for init-selfdestruct)
- [EVM] MIP-5: Activate Osaka fork (CLZ opcode)
Hard Fork: This release activates MONAD_NINE at timestamp. Nodes must upgrade before activation.
Notable RPC/SDK changes
- [RPC] Latest blocktag uses proposed blocks
- Ref: monad-bft PR #2675
- [RPC] Use voted blocks in websocket notifications
- Ref: monad-bft PR #2799
- [RPC] Add experimental flag to RPC doc macro
- Ref: monad-bft PR #2773
- [RPC] Refactor RPC middleware for improved request handling
- Ref: monad-bft PR #2805
- [RPC] Add decompression guard to RPC
- Ref: monad-bft PR #2793
Notable robustness changes
- [Consensus] Add signature verifier for Raptorcast
- Ref: monad-bft PR #2747
- [Consensus] Fix reactivate logic in r10 decoder
- Ref: monad-bft PR #2740
- [Execution] Fix buffer overflow in C->Rust logging
- Ref: monad-bft PR #2769
- [Consensus] Add global connect rate limit to wireauth
- Ref: monad-bft PR #2765
- [Consensus] Validate ping/pong source address against name record in peer discovery
- Ref: monad-bft PR #2752
- [Consensus] Persist voted_head in ledger
- Ref: monad-bft PR #2744
- [Consensus] Add dual UDP packet sender for dataplane
- Ref: monad-bft PR #2746
- [Execution] Fix ThreadSanitizer race by joining bootstrap fiber before thread exit
- [Execution] Include account balance in selfdestruct tracer frame
- [Consensus] Ensure proposed head is on canonical chain
- Ref: monad-bft PR #2756
- [Execution] Fix sentinel collision in compact virtual chunk offset
- [Execution] Fix potential race condition in execute_block_transactions
Notable internal changes
- [Consensus] Remove unneeded channels when secondary raptorcast is disabled
- Ref: monad-bft PR #2808
- [Consensus] Upgrade alloy to stable release
- Ref: monad-bft PR #2792
- [Execution] Add
evm-assyntactic sugar for VM utilities - [Consensus] Parametrize wireauth metrics for better observability
- Ref: monad-bft PR #2692
- [Consensus] Cleanup block persist implementation
- Ref: monad-bft PR #2767
- [Consensus] Fix wip extension in block-persist
- Ref: monad-bft PR #2776
- [Consensus] Remove legacy
do_local_insert- Ref: monad-bft PR #2728
- [Execution] Remove unnecessary fiber yield calls from DB worker thread
- [Consensus] Add metrics for raptorcast deserialize failures
- Ref: monad-bft PR #2789
- [RPC] Reduce RPC event server broadcast channel size
- Ref: monad-bft PR #2815
- [Consensus] Pre-TFM base fee cleanup
- Ref: monad-bft PR #2664
- [Consensus] Remove pre-TFM reserve balance logic
- Ref: monad-bft PR #2622
- [RPC] Simplify hex encoding/decoding in RPC
- Ref: monad-bft PR #2806
- [Archive] Add exists(key) to kvstore
- Ref: monad-bft PR #2688