Bee v2.8.0 is a feature release that strengthens how nodes verify each other. The headline change extends a peer's signed address record so that the overlay nonce and a timestamp are now part of the signature, and adds an optional on-chain chequebook check before a peer is trusted. The release also hardens P2P address handling, improves transaction reliability, and refreshes the toolchain (Go 1.26, latest libp2p).
💬 Join us on Discord if you have questions or feedback!
Important
📢 Network-wide upgrade required
v2.8.0 raises the handshake protocol from 14.0.0 to 15.0.0 and the hive gossip protocol from 1.1.0 to 2.0.0. Older nodes can no longer handshake or exchange peer records with v2.8.0 nodes, so plan to upgrade across your fleet.
The new chequebook verification is opt-in and off by default. To enable it on a full node, set --chequebook-verification (requires --chequebook-enable and a chain backend) and optionally tune --chequebook-min-balance (default 11 BZZ). With the flag off, nodes behave as before and skip the on-chain checks.
New Features
-
Stronger peer address records — A peer's address record (
BzzAddress) now also carries a signed timestamp and the peer's chequebook contract address, and the overlay nonce is now part of the signature. Nodes verify this signature before storing a record received over hive gossip, and reject records with stale or future-dated timestamps. This makes it harder to impersonate peers or flood the network with fake identities. -
Optional on-chain chequebook check — When
--chequebook-verificationis enabled, a peer is only trusted after three on-chain checks pass: the chequebook's owner matches the peer's Ethereum address, the contract code matches the expected chequebook contract, and the balance is at least--chequebook-min-balance. A node also keeps each chequebook tied to a single peer. -
Caps on peer address lists — Peer underlay addresses are now sorted by preferred transport and trimmed to a maximum count and byte size, keeping handshake and gossip messages bounded.
-
Configurable blockchain RPC HTTP transport — Added configuration for the HTTP transport used by the blockchain RPC client. (#5420)
Bug Fixes
- Improved transaction gas estimation — More reliable gas estimation and clearer error handling. (#5344)
- Faster node shutdown — Reduced the time it takes a node to shut down. (#5408)
- Deduplicate concurrent reserve sampling — Concurrent
ReserveSamplecalls are now coalesced to avoid redundant work. (#5373) - Fix transaction monitor data race — Prevented concurrent map access in the transaction monitor. (#5309)
- Add stabilization detector to the node — Wired the stabilization detector into the node so it is correctly initialized. (#5414)
- Quieter puller logs — Stopped the puller from emitting very large log lines built from joined errors. (#5331)
- p2p-forge logging — Redirected the p2p-forge logger output to stdout. (#5393)
- Fix flaky topology tests — Stabilized the oversaturated topology and block-list stream tests. (#5345)
Improvements
- Stamp issuer write coalescing — Coalesces stamp issuer writes to reduce redundant disk writes. (#5392)
- Prefer TCP for bootnode discovery — Bootnode discovery now prefers TCP for more reliable connections. (#5406)
- Less noisy pullsync logs — Removed an uninformative pullsync log line. (#5398)
Maintenance
- Toolchain update — Updated to Go 1.26 and golangci-lint 2.11.3. (#5377)
- libp2p upgrade — Upgraded to the latest libp2p release. (#5379)
- Postage snapshot — Updated the postage snapshot to v0.0.7.
What's Changed
- test: reserve sample deterministic test + benchmarks by @acud in #5374
- fix: fixes for topology oversaturated and block list streams tests by @martinconic in #5345
- test: fix soc flaky test by @acud in #5382
- ci: fix sonarqube warnings by @acud in #5385
- test: fix flaky reserve worker startup by @acud in #5384
- feat: export ReserveSample duration breakdown metrics by @gacevicljubisa in #5391
- fix(transaction): prevent concurrent map access in monitor by @mfw78 in #5309
- fix(puller): prevent massive log lines from joined errors by @gacevicljubisa in #5331
- chore: upgrade to latest libp2p version by @martinconic in #5379
- fix: deduplicate concurrent ReserveSample calls with singleflight by @gacevicljubisa in #5373
- fix(p2p/libp2p): redirect p2p-forge zap logger output to stdout by @gacevicljubisa in #5393
- chore(pullsync): remove uninformative logline by @acud in #5398
- chore: update postage snapshot to v0.0.6 by @gacevicljubisa in #5401
- docs: add ai disclosure sections by @acud in #5405
- chore: activate pre-push hook for local lint checks by @martinconic in #5410
- fix: add stabilization detector to bee struct by @akrem-chabchoub in #5414
- chore(p2p): prefer tcp when discovering bootnodes by @acud in #5406
- chore: use go 1.26 and golangci-lint 2.11.3 by @janos in #5377
- fix: speed up node shutdown by @sbackend123 in #5408
- fix(transaction): improve gas estimation reliability and error handling by @gacevicljubisa in #5344
- feat: blockchain rpc http transport config by @gacevicljubisa in #5420
- perf: stamp issuer write coalescing by @martinconic in #5392
Full Changelog: v2.7.1...v2.8.0