github category-labs/monad-bft v0.14.2

5 hours ago

Tags or hashes:

Highlights

  • RPC: Debug trace improvementsdebug_* call tracer now includes a log index field reflecting global log order across nested call frames; eth_call now surfaces an explicit reserve balance violation error 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 index field 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_call now returns an explicit reserve balance violation error instead of a generic failure when a transaction exceeds the sender's reserve balance
  • [RPC] Move eth call gas limit config to EthCallHandler
  • [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
  • [RPC] Lower RPC batch request limit to match Geth's default

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
  • [Consensus] Enforce stale message timeout in leanudp
  • [RPC] Fix eth call stats tracking memleak in RPC
  • [Consensus] Relax statesync assertion for stale DoneSync edge case
  • [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
  • [Consensus] Fair queue forwarded ingress in txpool client
  • [Consensus] Move forwarded tx pacing into executor, simplify ingress batching
  • [Consensus] Drop already-obsolete consensus messages before certificate validation
  • [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
  • [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
  • [Consensus] Raptorcast: enforce type-level safety for BroadcastGroup in build target
  • [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

Don't miss a new monad-bft release

NewReleases is sending notifications on new releases.