Hello Everyone,
We have released bor v2.10.3 for Polygon PoS mainnet and Amoy. It’s the public release of v2.10.3-priv / v2.10.3-beta-priv, with important security and stability fixes on top of v2.10.2. The source code is now public: release notes.
Action required
-
Operators still on
v2.10.2or older: please upgrade tov2.10.3as soon as possible. -
Operators already on
v2.10.3-priv(mainnet) orv2.10.3-beta-priv(Amoy): you’re running the same code. Switch to the publicv2.10.3at your next maintenance window, so you’re back on the standard release channel.
This release is not a hardfork and is not consensus-affecting. There is no activation block, no chain config or genesis change, no database schema change and no resync. Nodes can be upgraded one at a time, in any order, and v2.10.2, v2.10.3-priv and v2.10.3 nodes interoperate normally.
Release artifacts
Install through your usual public process:
-
GitHub release (binaries, Debian packages, network/role profile packages, checksums and signatures): https://github.com/0xPolygon/bor/releases/tag/v2.10.3
-
Docker image:
ghcr.io/0xpolygon/bor:v2.10.3
Check the version after the upgrade:
/usr/bin/bor version
# Version: 2.10.3
The public build reports 2.10.3. The private builds reported 2.10.3-private.
Configuration
No configuration change is required to upgrade, but please check the Heimdall timeout note below. The following settings are new or now behave differently. New keys use their defaults even though they won’t appear in your existing config.toml. If you already applied these settings for v2.10.3-priv, nothing changes.
Setting
Default
What changes
[heimdall] timeout (--bor.heimdalltimeout)
30s
The configured value is now actually applied to requests to Heimdall. Before, a hardcoded 30s was always used. Check your config.toml: older sample configs shipped timeout = "5s" under [heimdall], and that value would now take effect. We recommend removing the line (the default is 30s) or setting it to 30s.
[txpool] strandedlifetime
3h
New. Once a pending transaction has stayed below the base fee for this long, that account’s pending transactions are evicted. 0 disables it.
[cache] addresscachepersist
false
New, opt-in. Saves the address-specific trie caches on shutdown and reloads them on startup, in an addresscache/ folder under the trie journal directory ([cache] triejournaldirectory), skipping the preload walk. On mainnet the snapshot takes about 9 GB with the default cache sizes. The first restart after enabling it still does a full preload.
[jsonrpc.http] ep-requesttimeout / [jsonrpc.ws] ep-requesttimeout
0s (unchanged)
Now read from config.toml. A request that waits longer than this for an execution slot then runs without a slot bound, so very small values weaken that bound under load.
This release also includes peer-management improvements for configured static peers, transaction pool and tracing improvements, and a Go 1.26.8 toolchain.
Thank you to everyone who upgraded to the private release early.
Regards,
Polygon Labs