The Bee team is pleased to announce the v2.7.0 release! 🎉
This update brings support for multiple underlay addresses, AutoTLS for secure WebSocket connections, improved feed resolution, and significant performance and reliability improvements.
The release also includes various bug fixes, API changes, and an upgrade to Go 1.25, so make sure to check out the full list below.
For questions, comments, and feedback, reach out on Discord.
Features
-
Nodes can now advertise multiple underlay addresses, enabling better connectivity for diverse network configurations (e.g. in-browser nodes, multi-homed servers). Backward compatibility with v2.6.0 nodes is maintained (#5204)
-
Added AutoTLS support for secure WebSocket connections, allowing nodes to automatically obtain and use TLS certificates. This introduces the following new configuration flags (#5187):
p2p-wss-enable: false p2p-wss-addr: ":1635" nat-wss-addr: "" autotls-domain: "libp2p.direct" autotls-registration-endpoint: "https://registration.libp2p.direct" autotls-ca-endpoint: "https://acme-v02.api.letsencrypt.org/directory"
-
Both feed versions (legacy and wrapped) now race together automatically, removing the need for manual version selection. A new
Swarm-Feed-Resolved-Versionresponse header indicates which version was resolved (#5287) -
Added
reserveCapacityDoublingfield to/reservestateendpoint for better reserve state visibility (#5139) -
Added bootup time metrics for monitoring node startup performance (#5162)
-
Added metrics for
ReserveSampleperformance analysis (#5177) -
Added metrics for overdraft refresh logs in pushsync to reduce log spam and improve observability (#5297)
-
Improved storer performance by using buffered channels in the sampling pipeline, reducing sample generation time by 15–30% (#5170)
-
Added funding URL for mainnet users when chequebook deployment requires funds (#5284)
Bug fixes
- Fixed a panic when storage incentives are disabled (#5150)
- Fixed peers being incorrectly marked as healthy in underpopulated bins (#5145)
- Fixed postage snapshot import incorrectly running on ultra light nodes (#5169)
- Fixed gas price handling by replacing
SuggestGasPricewith customSuggestedFeeAndTipfor proper EIP-1559 compliance (#5144) - Fixed legacy
gasPriceto EIP-1559 dynamic fee mapping that was causing overpayment (#5225) - Fixed uncompressed ETH message signature handling (#5197)
- Fixed ENS error handling to provide clearer failure information (#5213)
- Added erasure
ReDecoderfor evicted chunks, fixing reliability issues during long-lived erasure-coded downloads (#5097) - Fixed pin eviction guard to prevent pinned content from being incorrectly evicted (#5222)
- Fixed
EstimateGasto use block-specific estimation for more accurate results (#5252) - Added chain availability check to prevent errors when the blockchain backend is unreachable (#5227)
- Fixed joiner redundancy at multiple levels for improved erasure coding reliability (#5292)
- Fixed chain backend being incorrectly used for ultra light nodes (#5310)
Improvements
- Upgraded to Go v1.25 with modernized codebase, incorporating the latest language features, performance improvements, and security patches (#5231, #5236, #5248)
Important
NAT address validation: nat-addr and the new nat-wss-addr are now validated on startup. Previously nat-addr was not validated at all, which could lead to silent misconfigurations. Ensure your values are correct before upgrading. (#5257)
- Added validation for redundancy level in bytes and bzz handlers (#5311)
- Updated misleading debug log message for bootnode connection failure (#5320)
- Updated dependencies:
gnark-cryptoto v0.18.1 (#5271),golang.org/x/cryptoto v0.45.0 (#5286) - Updated postage snapshot (#5325)
- Refactoring and code improvements, enhancing maintainability and performance (#5158, #5168, #5188, #5200, #5206, #5103, #5214, #5218, #5337)
- Migrated multiple test packages to use
synctestfor more reliable testing (#5250, #5260, #5258, #5259, #5261, #5262, #5263, #5264, #5265, #5266, #5267, #5296)
API Changes
- Added
reserveCapacityDoublingto/reservestateresponse (#5139) - Removed
swarm-feed-legacy-resolvequery parameter; both feed versions now race automatically. AddedSwarm-Feed-Resolved-Versionresponse header (#5287) - Removed body from
POST /tags(#5246)
New Contributors
- @socialsister made their first contribution in #5158
- @bytesingsong made their first contribution in #5154
- @chengehe made their first contribution in #5121
- @jishudashu made their first contribution in #5168
- @tanhuaan made their first contribution in #5183
- @youzichuan made their first contribution in #5188
- @pxwanglu made their first contribution in #5195
- @zhedazijingang made their first contribution in #5200
- @Olexandr88 made their first contribution in #5207
- @keeghcet made their first contribution in #5206
- @mickychang9 made their first contribution in #5212
- @jinjiadu made their first contribution in #5103
- @riskrose made their first contribution in #5079
- @joemicky made their first contribution in #5214
- @zhoujiaweii made their first contribution in #5218
- @akrem-chabchoub made their first contribution in #5231
- @sbackend123 made their first contribution in #5204
- @vicerace made their first contribution in #5293
Full Changelog: v2.6.0...v2.7.0