0xPolygon/bor - v2.10.3 New

Published: Oct 15, 2026

Release Summary

Bor v2.10.3 has been released, focusing on security and stability improvements over v2.10.2. This is a non-breaking update with no hardfork or database changes, allowing for a seamless, rolling upgrade of nodes.

This version is the public release of `v2.10.3-priv`, which has already been running on most validator nodes and major RPC providers.

Key Highlights:

Important Notes for Node Operators:

Release Notes

v2.10.3 is a security and stability release on top of `v2.10.2`. It's the public release of `v2.10.3-priv`, which most validators and major RPC providers already run.

No hardfork, no database schema change, no resync required. Nodes can be upgraded one at a time, in any order.

## Highlights

- **Execution**: parallel (BlockSTM V2) balance reads are resolved correctly across a self-destruct boundary (#2403). Shared block caches are size-capped and per-tx code hashes memoized, which lowers importer memory under heavy keccak / ecrecover load. Log counting while tracing no longer copies logs (#2460).
- **Txpool**: pending chains stranded behind a head that can't be mined are evicted after `txpool.strandedlifetime`. Filtered addresses also apply to SetCode (type 4) authorizations. The pool signer is no longer swapped when `allow-unprotected-txs` is set (#2464).
- **Storage trie preload**: segmented BFS queue for the preload, plus optional address-cache persistence across restarts. On a mainnet sentry, preload on restart drops from about 1h25m to about 4s.
- **P2P**: static peers stay dialed across jails and full dynamic slots (#2438), and are kept out of the peer dropper.
- **RPC**: the execution slot is re-acquired between batch items, and the RPC execution pool request timeout from config is applied.
- **Heimdall client**: the configured request timeout is now honored (#2411).
- **Go toolchain 1.26.8**.

## Operator notes

- **Check `[heimdall] timeout` / `--bor.heimdalltimeout`.** Before this release the value was ignored. It's now honored, and the default is `30s`. If your config sets a low value explicitly (older templates had `5s`), remove it or raise it to `30s` unless you need something else.
- **New config** (defaults are safe):
  - `[txpool] strandedlifetime`: how long a pending head can stay below the base fee before its chain is evicted (default `3h`, `0` disables). On by default.
  - `[cache] addresscachepersist`: persist the address-biased trie caches on shutdown and reload them on startup (default `false`). Needs disk space for the snapshot, about 9 GB on mainnet with the default cache sizes. The first restart after enabling it still does a cold preload. If the snapshot is missing, bor falls back to the normal preload.

## What's Changed
* v2.10.3 candidate by @marcello33 in https://github.com/0xPolygon/bor/pull/2492

**Full Changelog**: https://github.com/0xPolygon/bor/compare/v2.10.2...v2.10.3

Links

Back to 0xPolygon/bor releases