Important
Optional but highly recommended upgrade.
v2.4.4 is a hardening & maintenance release focused on runtime operability, mempool/consensus correctness, and observability.
v2.4.4 focuses on runtime operability, mempool/consensus correctness, and observability, alongside routine build, CI, and dependency maintenance. The build environment is updated to Go v1.26.5.
What's Changed
- Paolo/txpool metrics by @paologalligit in #1619
- Runtime feature toggles via admin server by @libotony in #1620
- Add inverted range early return + tests by @otherview in #1628
- bft: use post-housekeep state for PoS threshold by @libotony in #1630
- txpool: improve tx pricing logic and simplify re-pricing logic by @libotony in #1631
- feat: add offset limit to logs pagination and db metrics by @moglu2017 in #1632
- refactor code and clean up by @paologalligit in #1633
Bug Fixes & Correctness
- BFT: use post-housekeep state for the PoS threshold - corrects the state used when evaluating the PoS threshold (#1630).
- Events API: early return for inverted ranges - empty/inverted windows now resolve to an emptyRange fast path, with additional test coverage (#1628).
Performance & Txpool
- Improved transaction pricing logic - payer, cost, and priorityGasPrice are now published together via a single atomic snapshot, so readers never observe a torn state. Base-fee refreshes are now pure arithmetic, avoiding a per-tx ProvedWork lookup on every base-fee change. Re-pricing logic is simplified (#1631).
Warning
Notable Change — Filter (logs) API pagination limit
The Events (/logs/event) and Transfers (/logs/transfer) filter APIs now enforce an upper bound on the pagination offset, defaulting to 100,000. A request whose options.offset exceeds this bound is rejected with 403 Forbidden:
options.offset exceeds the maximum allowed value of 100000
This limit protects nodes from the escalating query cost of deep offset-based pagination. Offset-based paging is not intended for traversing large result sets. To iterate over results beyond this bound, do not increase the offset — instead scope each query with the block range option and advance the range window across successive requests.
The bound is configurable via the --api-logs-max-offset flag (default 100000).
Contributors
Thanks to everyone who contributed to this release:
Full Changelog: v2.4.3...v2.4.4