github 0xPolygon/bor v2.10.3

3 hours ago

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

Full Changelog: v2.10.2...v2.10.3

Don't miss a new bor release

NewReleases is sending notifications on new releases.