This release contains the changes from polkadot-stable2503
to polkadot-stable2503-1
.
ℹ️ Please note:
This is a patch release for the latest stable version: stable2503
. 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-stable2503-1
and matching the old pattern will be available under polkadot-v1.18.1.
The following crates were updated to the corresponding versions:
- sp-io@40.0.1
- substrate-wasm-builder@26.0.1
- sc-network@0.49.1
- staging-xcm-builder@20.1.0
- sc-rpc-spec-v2@0.49.1
- snowbridge-outbound-queue-primitives@0.2.1
- snowbridge-pallet-ethereum-client-fixtures@0.21.1
- snowbridge-pallet-outbound-queue-v2@0.2.1
- snowbridge-pallet-system@0.13.2
- xcm-emulator@0.19.1
- asset-hub-rococo-runtime@0.25.2
- asset-hub-westend-runtime@0.29.2
- penpal-runtime@0.28.1
- bridge-hub-rococo-runtime@0.19.1
- bridge-hub-westend-runtime@0.16.1
- emulated-integration-tests-common@20.0.1
- sc-tracing-proc-macro@11.1.0
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.
[#8373]: Update litep2p network backend to v0.9.4
This release brings several improvements and fixes to litep2p, advancing its stability and readiness for production use.
Performance Improvements
This release addresses an issue where notification protocols failed to exit on handle drop, lowering CPU usage in scenarios like minimal-relay-chains from 7% to 0.1%.
Robustness Improvements
- Kademlia:
- Optimized address store by sorting addresses based on dialing score, bounding memory consumption and improving efficiency.
- Limited
FIND_NODE
responses to the replication factor, reducing data stored in the routing table. - Address store improvements enhance robustness against routing table alterations.
- Identify Codec:
- Enhanced message decoding to manage malformed or unexpected messages gracefully.
- Bitswap:
- Introduced a write timeout for sending frames, preventing protocol hangs or delays.
Testing and Reliability
- Fuzzing Harness: Added a fuzzing harness by SRLabs to uncover and resolve potential issues, improving code robustness. Thanks to @R9295 for the contribution!
- Testing Enhancements: Improved notification state machine testing. Thanks to Dominique (@Imod7) for the contribution!
Dependency Management
- Updated all dependencies for stable feature flags (default and "websocket") to their latest versions.
- Reorganized dependencies under specific feature flags, shrinking the default feature set and avoiding exposure of outdated dependencies from experimental features.
[#8162]: Use client info for fetching the best block for tx_broadcast
This PR modifies the tx broadcast logic. Previously, we relied on the import notification stream to fetch the latest available block.
In this revision, we use the available information of the client.info()
to prefix the import notification stream.
The change is needed because chains could be started with InstantSeal, which would not produce blocks until they encounter transactions.
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).)
[#8218]: [xcm-builder][origin_conversion] LocationAsSuperuser converter introduced
Introduces a LocationAsSuperuser
struct that implements ConvertOrigin
to allow specific Location
s defined through XCM configuration to act as Root on the local chain. Implementation is generic over Location
but was created for purposes of allowing AssetHub system chain (by other system chains and relay chains) to execute Root level extrinsics like authorize_upgrade
on them.
[#8259]: [stable2503] Backport - Snowbridge - Update TransferToken command gas limit.
Transfering certain ERC20 tokens require more gas than 100_000 gas. An example is LDO token which requires 140_000 gas.
This change updates the gas limit to 200_000 and also updates the default fees for testnet runtimes.
NOTE: make sure to update the relevant runtime fees to account for this change.
[#8198]: Remove #[no_mangle]
from the panic handler
Fixes #8190
Remove useless #[no_mangle]
from the panic handler which screws up the panic handling machinery on recent versions of Rust.
[#7913]: Fix assert_expected_events macro
This PR fixes the assert_expected_events macro used in integration tests. Before this PR, the macro did not correctly assert field values. This change might result in tests failing that previously passed, due to false negatives.
[#8170]: xcm-emulator
improved callback triggering (on_initialize
, on_finalize
, on_idle
, OnSystemEvent
).
This PR fixes several issues related to xcm-emulator
:
- Corrects parent head propagation to the
PersistedValidationData
andOnSystemEvent
callback. - Triggers
on_initialize
for all pallets, not justParachainSystem
. - Triggers
on_finalize
for all pallets, not justParachainSystem
. - Triggers
on_idle
for all parachain pallets.
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
[#8373]: Update litep2p network backend to v0.9.4
This release brings several improvements and fixes to litep2p, advancing its stability and readiness for production use.
Performance Improvements
This release addresses an issue where notification protocols failed to exit on handle drop, lowering CPU usage in scenarios like minimal-relay-chains from 7% to 0.1%.
Robustness Improvements
- Kademlia:
- Optimized address store by sorting addresses based on dialing score, bounding memory consumption and improving efficiency.
- Limited
FIND_NODE
responses to the replication factor, reducing data stored in the routing table. - Address store improvements enhance robustness against routing table alterations.
- Identify Codec:
- Enhanced message decoding to manage malformed or unexpected messages gracefully.
- Bitswap:
- Introduced a write timeout for sending frames, preventing protocol hangs or delays.
Testing and Reliability
- Fuzzing Harness: Added a fuzzing harness by SRLabs to uncover and resolve potential issues, improving code robustness. Thanks to @R9295 for the contribution!
- Testing Enhancements: Improved notification state machine testing. Thanks to Dominique (@Imod7) for the contribution!
Dependency Management
- Updated all dependencies for stable feature flags (default and "websocket") to their latest versions.
- Reorganized dependencies under specific feature flags, shrinking the default feature set and avoiding exposure of outdated dependencies from experimental features.
[#8162]: Use client info for fetching the best block for tx_broadcast
This PR modifies the tx broadcast logic. Previously, we relied on the import notification stream to fetch the latest available block.
In this revision, we use the available information of the client.info()
to prefix the import notification stream.
The change is needed because chains could be started with InstantSeal, which would not produce blocks until they encounter transactions.
Rust compiler versions
This release was built and tested against the following versions of rustc
.
Other versions may work.
- Rust Stable:
1.84.1
Runtimes
The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.18.2 and rustc 1.84.1 (e71f9a9a9 2025-01-27)
.
Westend Bridgehub
🏋️ Runtime Size: 1.61 MB (1687949 bytes)
🔥 Core Version: bridge-hub-westend-1018002 (bridge-hub-westend-0.tx6.au1)
🗜 Compressed: Yes: 72.46%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x537bbbe2770fb8eea40d15070fd9ba16d1a4488671c67d82ddb291d8bb033011
🗳️ authorizeUpgrade hash: 0xadb6d1a19f5639eeb05246c35ebd5b00b55229beb8369c71ea08faaa802f1b0d
🗳️ Blake2-256 hash: 0x19c18ee597711ccb8cc338e489399cf2ead54dc729e5df20b9a031d9e89414d6
📦 IPFS: QmYD2AJ6wTaC3PpQLNdfbJEzwUcdZt9MK8U8sP6qx5syaN
Docker images
The docker images for the polkadot
node binary, the polkadot-parachain
binary and the polkadot-omni-node
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:stable2503-1
or
docker pull parity/polkadot-parachain:stable2503-1
or
docker pull parity/polkadot-omni-node:stable2503-1