Releases: category-labs/monad-bft
v0.14.2
Tags or hashes:
monad-bft(consensus): tagv0.14.2(6307011c)monad(execution): tagv0.14.2(169e5c45b)
Highlights
- RPC: Debug trace improvements —
debug_*call tracer now includes a logindexfield reflecting global log order across nested call frames;eth_callnow surfaces an explicitreserve balance violationerror instead of a generic failure. - Performance: 8-9x speedup on compaction hot path — Trie node array optimization reduces redundant pointer recomputation in compaction, expiration, and version tracking loops.
- Consensus: Fair queue forwarded ingress in txpool — Improves tx forwarding fairness between validators.
Notable RPC/SDK changes
- [RPC] Move callframe retrieval methods to ChainState
- Ref: monad-bft PR #2936, PR #2937
- Covers block and transaction callframes; deduplicates call frame decoding in debug trace handlers
- [RPC] Include log index in debug trace output; surface reserve balance error in
eth_call- Ref: monad-bft PR #2658
- Adds
indexfield to each traced log in the debug call tracer; the index reflects the global log order within a transaction across all nested call frames eth_callnow returns an explicitreserve balance violationerror instead of a generic failure when a transaction exceeds the sender's reserve balance
- [RPC] Move eth call gas limit config to EthCallHandler
- Ref: monad-bft PR #2926
- [RPC]
debug_*methods now count toward eth call rate limiting- Ref: monad-bft PR #2868
debug_traceCall,debug_traceTransaction, and related methods now update the eth call stats tracker; previously they bypassed it. Clients that rely on debug methods will now have those calls counted against their rate limit.
- [RPC] Enforce max response size earlier for debug RPC methods
- Ref: monad-bft PR #2959
- [RPC] Lower RPC batch request limit to match Geth's default
- Ref: monad-bft PR #2934
Notable robustness changes
- [Consensus] ConfirmGroup message fix
- Ref: monad-bft PR #2652
- Prevents oversized ConfirmGroup messages being rejected by full nodes; introduces NoConfirm response when group reaches max size
- [Consensus] Fix leak in leanudp identity usage map
- Ref: monad-bft PR #2930
- [Consensus] Enforce stale message timeout in leanudp
- Ref: monad-bft PR #2873
- [RPC] Fix eth call stats tracking memleak in RPC
- Ref: monad-bft PR #2910
- [Consensus] Relax statesync assertion for stale DoneSync edge case
- Ref: monad-bft PR #2905
- [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: monad (execution) PR #2133
- Fixes compaction head being incorrectly reset to 0 during statesync, causing compaction to restart from the beginning
- [Consensus] Decode exact forwarded transactions
- Ref: monad-bft PR #2810
- Ensures forwarded transactions are decoded with no trailing bytes; paired with PR #2802 for strict transaction parsing in the forwarding layer
Notable performance changes
- [Consensus] Front-load cheap consensus validation checks
- Ref: monad-bft PR #2928
- [Consensus] Fair queue forwarded ingress in txpool client
- Ref: monad-bft PR #2882
- [Consensus] Move forwarded tx pacing into executor, simplify ingress batching
- Ref: monad-bft PR #2884, PR #2886
- [Consensus] Drop already-obsolete consensus messages before certificate validation
- Ref: monad-bft PR #2927
- [Execution] Optimize trie node array access (8-9x speedup on compaction hot path)
- Ref: monad (execution) 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
Notable internal changes
- [Consensus] Raptorcast: direct UDP transport
- Ref: monad-bft PR #2898, PR #2900
- Adds a dedicated direct UDP socket for point-to-point traffic, bypassing Raptorcast erasure coding. Eliminates the ~2.5x bandwidth amplification inherent in Raptorcast for unicast sends. Falls back to the Raptorcast path gracefully for peers that don't support it.
- Note: Still in testing — not recommended for production use in this release.
- [Consensus] Wireauth: lower per-instance defaults
- Ref: monad-bft PR #2906
- [Execution] Replace system boost fiber with submodule (boost-1.83.0)
- [Execution] Separate precompile gas cost calculation from runtime implementation
- Ref: monad (execution) PR #2099, PR #2098
- Prep work for zkVM compilation
- [Execution] Remove support for EVMC_FRONTIER
- [Consensus] Raptorcast: enforce type-level safety for BroadcastGroup in build target
- Ref: monad-bft PR #2843
- [Execution] Add block-level event recording for Ethereum and Monad replay
- Ref: monad (execution) PR #2006
- Emits BLOCK_START/BLOCK_END events during replay, making replay event streams usable for tooling
- [Consensus] Configure shared peer scoring for txpool and raptorcast
- Ref: monad-bft PR #2907
- Adds optional peer scoring configuration to
node.toml; shares scoring source between txpool and raptorcast direct socket
v0.14.1
Patch release on top of v0.14.0. Execution layer unchanged.
Notable RPC/SDK changes
- [RPC] Fix
eth_fillTransactiongas estimation and reserve balance handling (#2949)- Maps reserve-balance failures to a dedicated
ReserveBalanceViolationresult instead of collapsing into a generic error - Makes omitted-gas fill estimation more permissive: applies a fill-only state override giving the sender an effectively unbounded balance during estimation
- Note:
eth_fillTransactionwith insufficient balance now returnsreserve balance violation(was:insufficient balance). Callers matching on the exact error string should update accordingly.
- Maps reserve-balance failures to a dedicated
Hashes
monad-bft(consensus):4ed79392monad(execution):54e132cfa— unchanged from v0.14.0
Upgrade instructions
v0.14.0
Tags or hashes:
monad-bft(consensus): tagv0.14.0(2d487de0)monad(execution): tagv0.14.0(54e132cfa)
Highlights
- RPC: ~400ms faster receipt queries — Receipts now tracked in chainstate buffer and available at Proposed time, eliminating trie lookups that added ~400ms on v0.13.0.
- RPC:
eth_fillTransaction— New endpoint to get a fully populated transaction (gas, nonce, etc.) without signing. Useful for wallets and dapps preparing transactions. - RPC: Websocket notifications on proposed blocks —
newHeadsandlogssubscriptions now emit on proposed blocks instead of voted, reducing notification latency for real-time applications.
Notable RPC/SDK changes
- [RPC]
eth_fillTransactionRPC endpoint- Ref: monad-bft PR #2662, PR #2932
- PR #2932 fixes several inconsistencies: preserves user-provided
maxFeePerGaswhen sufficient, treats0x0gas/fee as missing, allows gas fill for failed txs, rejects blob-style requests, handles EIP-2930 legacy-fee correctly
- [RPC] Use proposed blocks in websocket notifications
- Ref: monad-bft PR #2817
- Websocket
newHeadsandlogsnow emit on proposed blocks (earlier than voted)
- [RPC] Consolidate triedb usage to ChainState
- Ref: monad-bft PR #2876
- [RPC] Transaction receipts in chainstate buffer (~400ms faster receipt queries)
- Ref: monad-bft PR #2809, PR #2818
- [RPC] Simplify RPC block height buffer mapping
- Ref: monad-bft PR #2812
- [RPC] Use ChainStateBuffer for RPC logs
- Ref: monad-bft PR #2840
- [Execution] Add execution events Rust SDK with path resolution and descriptor info
- [Execution] Native transfer tracer scaffolding (not yet wired to RPC)
Notable robustness changes
- [Execution] Remove ASSERT that relied on suboptimality of reserve balance accounting
- [Consensus] RLP cleanup and stricter decoding enforcement
- Ref: monad-bft PR #2785
- [Consensus] Fix zero-length allocation leak in triedb sync read FFI
- Ref: monad-bft PR #2816
- [Consensus] Fix dataplane ban expiry TOCTOU underflow
- Ref: monad-bft PR #2851
- [Archive] Fix S3 client stuck after sustained outage
- Ref: monad-bft PR #2823
- [Archive] Relax checker replica matching for AWS args
- Ref: monad-bft PR #2943
- [Execution] Fix runloop_monad off-by-one when nblocks=1
- [Execution] Fix RangedGetMachine skipping keys past min prefix
- [Execution] Fix minor RLP errors, union type-punning, event padding bits
- [Execution] Fix CLI crash on unexpected arguments
- [Execution] Fix node writer reentrance causing non-contiguous writes
- [Execution] Fix undefined behavior in RLP encoding with empty inputs
- [Consensus] Panic on startup for invalid redundancy factor
- Ref: monad-bft PR #2899
- [Consensus] Fix ledger-tail: read author_address from persisted peers
- Ref: monad-bft PR #2888
- [RPC] Fix blocktags in
eth_getLogs- Ref: monad-bft PR #2804
- [Consensus] Exclude uninvited candidates when forming secondary group
- Ref: monad-bft PR #2874
- [Execution] Fix dangling pointer in events SDK, executor count, predecessor tx wait
- [Execution] Stricter RLP decoding: error for oversized bytes32
Notable performance changes
- [Consensus] Cache all successful Raptorcast decoding outcomes
- Ref: monad-bft PR #2887
- [Consensus] Weighted fair queue for transaction ingestion
- Ref: monad-bft PR #2828
- [Consensus] Gas-based peer scoring
- Ref: monad-bft PR #2829
- [Consensus] XOR decoder buffers in AVX2 chunks
- Ref: monad-bft PR #2863
- [Consensus] Lazy decoder for BLS signature
- Ref: monad-bft PR #2861
- [Execution] Improve fast list compaction offset calculation with hysteresis
- [Execution] Compaction offset refactor and runtime header performance optimizations
Notable internal changes
- [Consensus] Lightweight UDP framing protocol (leanudp)
- Ref: monad-bft PR #2827
- [Consensus] Support direct UDP port in peer discovery
- Ref: monad-bft PR #2842
- [Consensus] Add vote-delay readiness metrics
- Ref: monad-bft PR #2872
- [Consensus] Support larger Merkle trees
- Ref: monad-bft PR #2822
- [Consensus] Wireauth: GC idle timer, handshake buffering, split rate limits by cookie validity
- Ref: monad-bft PR #2708, PR #2695, PR #2778
- [Archive] Support per-source AWS profile with isolation
- Ref: monad-bft PR #2865
- [Consensus]
⚠️ Make auth UDP fields innode.tomlrequired- Ref: monad-bft PR #2891
- [Consensus] Lower max
raptor10_fullnode_redundancy_factorfrom 7 to 3- Ref: monad-bft PR #2852
⚠️ If yournode.tomlhasraptor10_fullnode_redundancy_factor> 3, you must lower it before upgrading
- [Ops]
⚠️ monad-ledger-tail: rename--node-config-pathto--peers-path- Ref: monad-bft PR #2916
- [Ops] Change systemd services from
Restart=notoRestart=always- Ref: monad-bft PR #2860
- [Execution] Refactor chain: remove
static_validate_headerandvalidate_transactionvirtual methods - [Execution] Add eventwatch example program for execution events
- [Consensus] Auth socket with codec abstraction, direct point-to-point routing
- Ref: monad-bft PR #2897, PR #2896
- [Consensus] Raptorcast: remove legacy packet parser
- Ref: monad-bft PR #2864
v0.14.0-rc.1
v0.14.0-rc.1 is ready for testing. This release includes ~400ms faster receipt queries, a new eth_fillTransaction RPC endpoint, lower-latency websocket notifications, and numerous robustness and performance improvements across consensus and execution.
Note: This is a pre-release for testing and validation only. Not recommended for production use. If you run into any issues, please include
Release: v0.14.0-rc.1in the name of any issues you create.
⚠️ Breaking Changes
- Auth UDP now required —
self_auth_portandauthenticated_bind_address_portfields innode.tomlare now required. Nodes without these fields will fail to start. (PR #2891) raptor10_fullnode_redundancy_factormax lowered from 7→3 (default is 3, most nodes unaffected). (PR #2852)
Tags or hashes:
monad-bft(consensus): tagv0.14.0-rc.1(d1d17916)monad(execution): tagv0.14.0-rc.1(54e132cfa)
Highlights
- ~400ms faster receipt queries — Receipts now tracked in chainstate buffer and available at Proposed time, eliminating trie lookups.
eth_fillTransaction— New RPC endpoint to get a fully populated transaction without signing.- Websocket notifications on proposed blocks —
newHeadsandlogssubscriptions now emit on proposed blocks instead of voted, reducing notification latency. - Archive: per-source AWS profile support — Archiver source/sink/fallback now supports
--profileflag for AWS credentials isolation. Reads from.aws/credentialsand.aws/config. (PR #2865)
Notable RPC/SDK changes
- [RPC]
eth_fillTransactionRPC endpoint- Ref: monad-bft PR #2662
- [RPC] Use proposed blocks in websocket notifications
- Ref: monad-bft PR #2817
- [RPC] Transaction receipts in chainstate buffer (~400ms faster receipt queries)
- Ref: monad-bft PR #2809, PR #2818
- [RPC] Consolidate triedb usage to ChainState
- Ref: monad-bft PR #2876
- [RPC] Use ChainStateBuffer for RPC logs
- Ref: monad-bft PR #2840
- [Execution] Add execution events Rust SDK with path resolution and descriptor info
Notable robustness changes
- [RPC] Fix blocktags in
eth_getLogs- Ref: monad-bft PR #2804
- [Consensus] RLP cleanup and stricter decoding enforcement
- Ref: monad-bft PR #2785
- [Consensus] Fix zero-length allocation leak in triedb sync read FFI
- Ref: monad-bft PR #2816
- [Consensus] Fix dataplane ban expiry TOCTOU underflow
- Ref: monad-bft PR #2851
- [Consensus] Exclude uninvited candidates when forming secondary group
- Ref: monad-bft PR #2874
- [Archive] Fix S3 client stuck after sustained outage
- Ref: monad-bft PR #2823
- [Consensus] Fix unstable ordering of OpenRPC schemas
- Ref: monad-bft PR #2893
- [Consensus] Fix ledger-tail: read author_address from persisted peers
- Ref: monad-bft PR #2888
- [Execution] Fix node writer reentrance causing non-contiguous writes
- [Execution] Fix undefined behavior in RLP encoding with empty inputs
- [Execution] Fix dangling pointer in events SDK, executor count, predecessor tx wait
- [Execution] Stricter RLP decoding: error for oversized bytes32
Notable performance changes
- [Consensus] Cache all successful Raptorcast decoding outcomes
- Ref: monad-bft PR #2887
- [Consensus] Weighted fair queue for transaction ingestion
- Ref: monad-bft PR #2828
- [Consensus] Gas-based peer scoring
- Ref: monad-bft PR #2829
- [Consensus] XOR decoder buffers in AVX2 chunks
- Ref: monad-bft PR #2863
- [Execution] Improve fast list compaction offset calculation with hysteresis
Notable internal changes
- [Node ops] Systemd services changed from
Restart=notoRestart=always— services now auto-restart on failure (affects monad-rpc, monad-archiver, monad-checker, monad-indexer, monad-ledger-tail)- Ref: monad-bft PR #2860
- [Consensus] Lightweight UDP framing protocol (leanudp)
- Ref: monad-bft PR #2827
- [Archive] Support per-source AWS profile with isolation (
--profileflag, reads from.aws/credentialsand.aws/config)- Ref: monad-bft PR #2865
- [Consensus] Auth socket with codec abstraction, direct point-to-point routing
- Ref: monad-bft PR #2897, PR #2896
- [Consensus] Raptorcast: remove legacy packet parser
- Ref: monad-bft PR #2864
Debian Package:
sudo apt update && sudo apt install monad=0.14.0~rc.1 -y --allow-downgrades --allow-change-held-packages
Note: The Debian package version is
0.14.0~rc.1(with~), while the git tag isv0.14.0-rc.1(with-).
Complete Changelog:
v0.13.1...v0.14.0-rc.1
v0.13.1
v0.13.1
Tags or hashes:
monad-bft(consensus): tagv0.13.1(7db6cea2)monad(execution): tagv0.13.1(722cbf5b5)
Note: This is a patch release based on v0.13.0, not latest master.
Notable robustness changes
- [RPC] Use latest voted as fallback for last_proposed
- Ref: monad-bft PR #2857
- Fixes State Archive node RPC returning stale block data when
last_proposedis unavailable - Affects: monad-rpc on State Archive nodes (nodes running without BFT consensus)
v0.13.0
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
v0.12.8
v0.12.8
| Network | Date released | Comment |
|---|---|---|
mainnet |
N/A | |
testnet |
N/A | |
devnet |
N/A |
Tags or hashes:
monad-bft(consensus): tagv0.12.8monad(execution): tagv0.12.8
Notable RPC/SDK changes
- [RPC] Improve
eth_getLogsperformance with block-oriented refactor and short-circuit for large responses- Ref: monad-bft PR #2656
- [RPC] Fix
eth_feeHistoryrewards ordering- Ref: monad-bft PR #2741
- [RPC] Add missing state tracer for system transactions
- [RPC]
eth_createAccessListblock tag as optional param- Ref: monad-bft PR #2750
Notable robustness changes
- [RPC] Fix consecutive logs assertion in RPC
- Ref: monad-bft PR #2763
- [Consensus] Add per-peer byte limit for TCP egress queue in dataplane
- Ref: monad-bft PR #2722
- [Consensus] Multi-socket TCP support with typed socket IDs in dataplane
- Ref: monad-bft PR #2694
- [Consensus] Early drop ping messages with mismatched node id
- Ref: monad-bft PR #2727
- [Consensus] Seed blocksync RNG from entropy
- Ref: monad-bft PR #2698
- [Consensus] Fix publisher group garbage cleaning logic
- Ref: monad-bft PR #2645
- [Consensus] Fix block size in ChainState
- Ref: monad-bft PR #2712
- [Consensus] Fix off-by-one bug in reorder_to_gso range merging
- Ref: monad-bft PR #2739
- [Execution] Statesync client: only copy state and code to current to avoid stale data
- [Execution] Deduct cold storage cost before accessing trie in SSTORE
- [Execution] Avoid potential UB on empty modexp precompile input
Notable internal changes
- [Execution] VM memory pool implementation
- [Execution] Combine EVM memory regions into one transaction wide memory region
- [Execution] Improve BYTE instruction performance
- [Execution] Store forwarding stall improvements
- [Node ops] Archive: fix set-start-block CLI parsing
- Ref: monad-bft PR #2714
- [Node ops] Archive: fix mongo replica names in checker
- Ref: monad-bft PR #2715
- [Consensus] Add bls12-381 security tests
- Ref: monad-bft PR #2713
- [Consensus] Refactor ValidatorSet types in raptorcast
- Ref: monad-bft PR #2711
- [Consensus] Recognize unspecified broadcast mode in raptorcast
- Ref: monad-bft PR #2721
- [Execution] Prepare libmonad_event for out-of-project builds
- [Consensus] Make txpool tx input stream generic
- Ref: monad-bft PR #2718
- [Node ops] Archive: make top-level args global in monad-archive-checker CLI
- Ref: monad-bft PR #2743
- [RPC] Move expensive RPC logs to debug level
- Ref: monad-bft PR #2737
- [Consensus] Drop tai64 dependency, implement tai64n in-place in wireauth
- Ref: monad-bft PR #2753
- [Node ops] Update bytes dependency
- Ref: monad-bft PR #2762
Prep for future activation (MONAD_NINE)
- [EVM] MIP-3: Linear memory implementation
- [Execution] MIP-4: Reserve balance precompile scaffolding
- [EVM] MIP-5: Activate Osaka in
MONAD_NEXT
v0.12.7
v0.12.7
| Network | Date released | Comment |
|---|---|---|
mainnet |
01-29-2026 | |
testnet |
01-20-2026 | |
devnet |
01-13-2026 |
Tags or hashes:
monad-bft: tagv0.12.7monad: tagv0.12.7
Notable RPC/SDK changes
- [RPC] Allow block hash as block identifier in
eth_estimateGas- Ref: monad-bft PR #2676
- [RPC] Use
RawValuefor RPC id to preserve original JSON types- Ref: monad-bft PR #2455
Notable robustness changes
- [Execution] Fix
modexpprecompile crash on truncated input padding- Ref: monad PR #2045
- [Consensus] Remove consecutive sequence number assertion
- Ref: monad-bft PR #2704
- [Consensus] Improve liveness when advancing round using TC from timeout messages
- Ref: monad-bft PR #2701
- [Consensus] Disallow creating an empty validator set
- Ref: monad-bft PR #2682
Notable internal changes
- [Consensus] Add security tests for
secp256k1- Ref: monad-bft PR #2706
- [Node ops] Update
rkyvand other dependencies- Ref: monad-bft PR #2702
- [Consensus] Return bound socket addresses synchronously in dataplane
- Ref: monad-bft PR #2653
- [Consensus] Rename state backend cache for clarity
- Ref: monad-bft PR #2699
v0.12.6
v0.12.6
| Network | Date released | Comment |
|---|---|---|
mainnet |
01-14-2025 | |
testnet |
01-07-2025 | |
devnet |
N/A |
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 #1962, monad PR #1940, 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