This release contains the changes from polkadot-stable2506
to polkadot-stable2506-1
.
ℹ️ Please note:
This is a patch release for the latest stable version: stable2506
. If your nodes are already running on this version, you can consider upgrading to it to have the latest fixes.
The tag corresponding to the current patch release polkadot-stable2506-1
and matching the old pattern will be available under polkadot-v1.19.1.
Changelog
Changelog for Node Dev
ℹ️ These changes are relevant to: Those who build around the client side code. Alternative client builders, SMOLDOT, those who consume RPCs. These are people who are oblivious to the runtime changes. They only care about the meta-protocol, not the protocol itself.
[#9338]: fatxpool: instant seal support
This PR introduces creation of view for known best block during instantiation of fatxpool
. This is intended to fix an instant-seal nodes, where block building is triggered via transaction import.
[#9355]: substrate-prometheus-endpoint: directly require the feature "tokio/net"
The crate substrate-prometheus-endpoint
use tokio items given by the feature "net" but it doesn't explictly requires it in the Cargo.toml
. It compiles on master because hyper-util
enables the feature "tokio/net". But upgrading hyper-util
break this indirect enabling.
This fix the issue by directly setting "net" feature as required, as it is used.
We should also backport this ideally. It is not a breaking change given the code doesn't compile without the feature and only compiles if indirectly enabled by another crate.
[#9189]: fatxpool
: avoid premature revalidation of transactions
After this PR transactions will be revalidated in mempool on finalized blocks only if height of finalized block is greater then the height of the block at which transactions was originally submitted.
[#9281]: litep2p/discovery: Ensure non-global addresses are not reported as external
This PR ensures that external addresses discovered by the identify protocol are not propagated to the litep2p backend if they are not global. This leads to a healthier DHT over time, since nodes will not advertise loopback / non-global addresses.
We have seen various cases were loopback addresses were reported as external:
2025-07-16 16:18:39.765 TRACE tokio-runtime-worker sub-libp2p::discovery: verify new external address: /ip4/127.0.0.1/tcp/30310/p2p/12D3KooWNw19ScMjzNGLnYYLQxWcM9EK9VYPbCq241araUGgbdLM
2025-07-16 16:18:39.765 INFO tokio-runtime-worker sub-libp2p: 🔍 Discovered new external address for our node: /ip4/127.0.0.1/tcp/30310/p2p/12D3KooWNw19ScMjzNGLnYYLQxWcM9EK9VYPbCq241araUGgbdLM
This PR takes into account the network config for allow_non_global_addresses
.
Closes: #9261
Changelog for Runtime Dev
ℹ️ These changes are relevant to: All of those who rely on the runtime. A parachain team that is using a pallet. A DApp that is using a pallet. These are people who care about the protocol (WASM, not the meta-protocol (client).)
[#9354]: Remove whitespaces added by macros due to token re-parsing
Normalize result of stringify
in scenarios when used inside nested macros to stringify token streams for benchmarking framework
[#9489]: Remove free balance check in prepare_unlock
The free balance check during unlocking is unnecessary since a lock can cover both free and reserved balances. Removing it allows locks to be cleared even if part of the locked funds is reserved or already slashed.
[#9179]: Fix subsume_assets incorrectly merging two AssetsInHolding
Fix subsume_assets incorrectly merging two AssetsInHolding instances under certain conditions, which caused asset values to be overridden rather than summed.
[#8857]: [FRAME] Custom log level for the runtime benchmarks
Changes:
- Add
--runtime-log
option to omni-bencher CLI - Read env var
RUNTIME_LOG
as fallback to the--runtime-log
option - Set custom log level for runtime benchmarks that can be different form CLI level
- Fix issue where old runtimes have a space in the pallet or instance name from breaking change in
quote
macro
[#9445]: pallet-xcm: fix authorized_alias benchmarks
Depending on runtime configuration of ED and storage deposits, the old benchmark code did not set up enough funds to cover authorized aliases storage deposits. Fix it by adding more funds as part of benchmark setup.
[#9250]: implement InspectMessageQueues for UnpaidRemoteExporter
Add missing implementation of InspectMessageQueues
for UnpaidRemoteExporter
[#9195]: XCMv5 asset exchange test scenarios
Emulated test scenarios added to cover asset exchanging via Transact or ExchangeAsset instruction using XCMv5 capabilities
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
[#8838]: fatxpool
: fork aware transaction pool is now default
This PR changes the default transaction pool to the fork aware implementation. The old implementation can be still used with --pool-type=single-state
command line argument.
Changelog for Runtime User
ℹ️ These changes are relevant to: Anyone using the runtime. This can be a token holder or a dev writing a front end for a chain.
Rust compiler versions
This release was built and tested against the following versions of rustc
.
Other versions may work.
- Rust Stable:
1.84.1
Docker images
The docker images for the polkadot
node binary and the polkadot-parachain
binary can be found at Docker hub (will be available a few minutes after the release has been published):
You may also pull it with:
docker pull parity/polkadot:stable2506-1
or
docker pull parity/polkadot-parachain:stable2506-1