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