This release contains new features and bug fixes on top of v2.10.1.
Highlights
1. Pipelined state root computation for block import - #2180
Overlaps the state-root computation of block N with transaction execution of block N+1 during block import, improving sync and catch-up throughput. Targets import and sync, not block production.
This feature is disabled by default. To enable it, either pass the CLI flag:
bor server --pipeline.enable-import-srcor set it in config.toml:
[pipeline]
enable-import-src = true2. WIT2: BP-signed witness announcements - #2208
Block producers now sign a commitment over each witness, so peers can verify and relay the announcement without executing the block first, and can serve the witness body before importing it. This cuts witness-propagation latency for stateless validators several hops from a producer.
No flag or coordinated upgrade needed - the wit protocol negotiates per connection and mixed WIT1/WIT2 meshes work. A signed announcement isn't relayed past the first WIT1 hop, so upgrade each validator together with its sentries. Validators running Clef must whitelist the new mimetype application/x-bor-wit2-announce, or the producer falls back to unsigned WIT1 announcements.
Other changes
Fixes
eth,eth/fetcher,eth/protocols/eth: retry dangling tx-fetch peers instead of excluding them forever - fixes sentries sitting with a near-empty mempool for hours after a restart (POS-3689) by @marcello33 in #2367consensus/bor: don't leak the live tracer into non-import system transactions - a node-wide live tracer (--vmtrace) was being fired from RPC goroutines viaeth_simulateV1anddebug_trace*state regeneration by @nebojsa94 in #2353core/blockstm,core: exclude base-state-delegated senders from the BlockSTM v2 nonce pre-compute, where V2 and the serial processor could disagree; harden the witness parity harness by @cffls in #2383core,miner: fix nightly pipeline race failures by @pratikspatil024 in #2371
CI, build, and tests
- Remove support for publishing images to Docker Hub by @0xsajal in #2372
ci: add a pipeline-enabled kurtosis e2e leg (POS-3697) by @pratikspatil024 in #2368ci: run kurtosis E2E safely on fork PRs by @pratikspatil024 in #2380ci: bump kurtosis-pos pin and Actions versions in kurtosis workflows by @kamuikatsurgi in #2370ci: bump kurtosis-pos pin to v1.4.2 by @marcello33 in #2377tests/bor: harden test peering against simultaneous-connect collisions by @pratikspatil024 in #2369build: increase race-test package timeout by @pratikspatil024 in #2378eth: avoid a race in relay-fetch test setup by @pratikspatil024 in #2387chore(ci): upgrade to codegenie@v0.5.6 by @0xPolygonBot in #2379- v2.10.1 back-merge to master by @pratikspatil024 in #2390
Dependencies
- Bump
github.com/pion/dtls/v3from 3.0.11 to 3.1.4 by @dependabot in #2338 - Bump
github.com/pion/stun/v3from 3.1.1 to 3.1.5 by @dependabot in #2339 - Bump
github.com/rabbitmq/amqp091-gofrom 1.10.0 to 1.13.0 by @dependabot in #2384 - Bump
google.golang.org/grpcfrom 1.79.3 to 1.83.1 by @dependabot in #2381
Upgrade notes
- No hardfork, no resync, backwards compatible. #2180 is off by default and #2208 negotiates per connection with WIT1 peers.
- Docker Hub images are gone. Image publishing to Docker Hub was removed in #2372 ahead of the 1 September 2026 sunset - pull from GHCR instead. See the announcement.
New Contributors
- @0xPolygonBot made their first contribution in #2379
- @nebojsa94 made their first contribution in #2353
Full Changelog: v2.10.1...v2.10.2-beta