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:
[txpool] strandedlifetime: Sets how long a pending chain can remain below the base fee before being evicted (Default: `3h`, `0` to disable).[cache] addresscachepersist: Persists the address cache to disk on shutdown for faster restarts (Default: `false`).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