Skip to content

Releases: paritytech/polkadot-sdk

Polkadot stable2409-9

12 Jun 13:22
637c620
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2409-7 to polkadot-stable2409-9.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2409 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2409-9 and matching the old pattern will be available under polkadot-v1.16.9.

The following crates were updated to the corresponding versions:

- frame-benchmarking@38.1.0
- pallet-scheduler@39.1.0
- pallet-xcm@17.0.3
- asset-hub-westend-runtime@0.26.6
- westend-runtime@18.1.0
- frame-benchmarking-cli@43.1.0
- cumulus-client-consensus-aura@0.18.2

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.

[#8669]: cumulus-aura: Improve equivocation checks

Instead of just checking for the slot, we also take the block number and the relay parent into account (as we actually allow to build multiple blocks per slot). Then this pr also ensures that we are still able to import blocks from availability recovery. This ensures that a network doesn't get stuck on a storm of equivocations. The next step after this pull request would be to implement on chain slashing for equivocations and probably disabling of the offending author.

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).)

[#7785]: pallet scheduler: fix weight and add safety checks

Changes:

  • Add runtime integrity test for scheduler pallet to ensure that lookups use sensible weights
  • Check all passed storage names in the omni bencher to be known by FRAME metadata
  • Trim storage names in omni bencher to fix V1 bench syntax bug
  • Fix V1 bench syntax storage name sanitization for specific Rust versions

I re-ran the benchmarks with the omni-bencher modifications and it did not change the proof size. I reverted the commit afterwards to reduce the noise for reviewers.

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.

[#8173]: Expose current advertised xcm version

Exposes AdvertisedXcmVersion via a metadata constant.

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: "1.81.0"

Polkadot stable2503-6

06 Jun 18:26
598fedd
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2503-5 to polkadot-stable2503-6.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2503 and contains only patches and fixes to the crates (list below).

The tag corresponding to the current patch release polkadot-stable2503-6 and matching the old pattern will be available under polkadot-v1.18.6.

The following crates were updated to the corresponding versions:

- sc-network-types@0.15.4
- sc-network@0.49.2
- pallet-broker@0.19.2
- sc-offchain@44.0.1
- sc-cli@0.51.1
- snowbridge-inbound-queue-primitives@0.2.2
- snowbridge-outbound-queue-primitives@0.2.2
- coretime-rococo-runtime@0.15.2
- coretime-westend-runtime@0.15.2
- snowbridge-pallet-system@0.13.3
- snowbridge-test-utils@0.2.1
- snowbridge-pallet-inbound-queue@0.13.2
- snowbridge-pallet-inbound-queue-v2@0.2.2
- snowbridge-pallet-system-v2@0.2.2
- bridge-hub-westend-runtime@0.16.2
- cumulus-client-consensus-aura@0.22.1
- polkadot-service@23.1.0
- cumulus-relay-chain-minimal-node@0.23.2
- cumulus-relay-chain-inprocess-interface@0.23.1
- polkadot-omni-node-lib@0.5.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.

[#8461]: Use litep2p as the default network backend

This PR makes the litep2p backend the default backend.
Litep2p is a lightweight alternative to libp2p, that is designed to be more efficient and easier to use. At the same time, litep2p brings performance improvements and reduces the CPU usage significantly.
Libp2p is the old network backend, that may still be used for compatibility reasons until the whole ecosystem is migrated to litep2p.

[#8669]: cumulus-aura: Improve equivocation checks

Instead of just checking for the slot, we also take the block number and the relay parent into account (as we actually allow to build multiple blocks per slot). Then this pr also ensures that we are still able to import blocks from availability recovery. This ensures that a network doesn't get stuck on a storm of equivocations. The next step after this pull request would be to implement on chain slashing for equivocations and probably disabling of the offending author.

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).)

[#8630]: Broker: Introduce min price and adjust renewals to lower market

pallet-broker now provides an additional AdaptPrice implementation:
MinimumPrice. This price adapter works exactly the same as the CenterTargetPrice adapter, except that it can be configured with a
minimum price. If set, it will never drop the returned end_price (nor thetarget_price) below that minimum.

Apart from having an adapter to ensure a minimum price, the behaviour of renewals was also adjusted: Renewals are now either bumped by renewal bump or set to the end_price of the current sale - whatever number is higher.
This ensures some market coupling of renewal prices, while still maintaining some predictability.

[#8473]: Snowbridge: Remove asset location check

Since the TokenIdOf conversion is XCM version-agnostic and we store the TokenId as the key in storage, checking whether the key exists is sufficient to verify if the token is registered.
There is no need to verify the asset location.

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

[#8461]: Use litep2p as the default network backend

This PR makes the litep2p backend the default backend.
Litep2p is a lightweight alternative to libp2p, that is designed to be more efficient and easier to use. At the same time, litep2p brings performance improvements and reduces the CPU usage significantly.
Libp2p is the old network backend, that may still be used for compatibility reasons until the whole ecosystem is migrated to litep2p.

[#8650]: litep2p/peerset: Reject non-reserved peers in the reserved-only mode

This PR rejects non-reserved peers in the reserved-only mode of the litep2p notification peerset.

Previously, litep2p ignored completely the reserved-only state while accepting inbound connections. However, it handled it properly during the slot allocation phase.

  • the main changes are in the report_inbound_substream function, which now propagated a Rejected response to litep2p on the reserved-only state
    • in response, litep2p should never open an inbound substream after receiving the rejected response
    • the state of peers is not advanced while in Disconnected or Backoff states
    • the opening state is moved to Cancelled
  • for consistency purposes (and fuzzing purposes), the report_substream_opened is more robustly handling the Disconnected state
    • while at it have replaced a panic with debug_assert and an instant reject

Testing Done

  • started 2 nodes in Kusama and Polkadot with litep2p
  • added the reserved_only_rejects_non_reserved_peers test to ensure litep2p handles peers properly from different states

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: 1.84.1

Polkadot stable2503-5

28 May 10:20
f4dba53
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2503-4 to polkadot-stable2503-5.

ℹ️ 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 at a regular cadence.

The tag corresponding to the current patch release polkadot-stable2503-5 and matching the old pattern will be available under polkadot-v1.18.5.

The following crates were updated to the corresponding versions:

- pallet-session@40.0.1
- pallet-beefy@41.1.1
- pallet-revive@0.6.1
- pallet-revive-mock-network@0.5.0
- snowbridge-core@0.13.2
- pallet-revive-eth-rpc@0.5.0
- snowbridge-inbound-queue-primitives@0.2.1
- snowbridge-pallet-system-frontend@0.2.1
- snowbridge-pallet-outbound-queue-v2@0.2.2
- penpal-runtime@0.29.0
- snowbridge-pallet-inbound-queue-v2@0.2.1
- snowbridge-pallet-system-v2@0.2.1
- polkadot-node-core-dispute-coordinator@22.0.1
- polkadot-statement-distribution@22.0.1
- cumulus-relay-chain-minimal-node@0.23.1
- frame-support-procedural@33.0.1
- frame-benchmarking@40.2.0
- frame-benchmarking-pallet-pov@30.0.1
- pallet-scheduler@41.2.0
- pallet-staking@40.1.1
- westend-runtime@22.3.0
- asset-hub-westend-runtime@0.30.2
- frame-benchmarking-cli@47.2.0
- frame-omni-bencher@0.11.1
- frame-election-provider-solution-type@16.1.1
- sp-npos-elections@36.2.0
- staging-xcm@16.2.0
- frame-election-provider-support@40.1.1
- staging-xcm-executor@19.1.2
- pallet-election-provider-multi-phase@39.2.0
- staging-xcm-builder@20.1.1
- xcm-runtime-apis@0.7.1
- pallet-xcm@19.1.2
- pallet-xcm-bridge-hub@0.16.3
- xcm-simulator@20.1.0
- xcm-simulator-example@20.0.1
- xcm-emulator@0.19.3
- emulated-integration-tests-common@20.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.

[#8510]: statement-distribution: skip leafs where we can't fetch the state

Fix statement-distribution to not exit early when it cannot process one of the hashes in handle_active_leaves.

[#8514]: Allow block-announce to exist in the background of minimal relay chains

This PR fixes an issue with the collators that would not get advertised.
The issue relates to the /block-announces/1 protocol for the litep2p network backends.
Previously, the notification service handle was dropped, causing the litep2p backend to terminate the long-running task that handled the /block-announces/1 protocol.
This represents a subtle difference between libp2p and litep2p, where libp2p would continue to operate the protocol under the hood even without the respective handle.

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).)

[#8546]: [stable2503] Backport #8546

Improve try-state for pallet-xcm-bridge-hub, it removes try_as and uses try_into implementation instead.

[#8495]: [pallet-revive] tracing prepare support for future tracing APIS

  • Fix eth_getStorageAt to use BigEndian for key encoding
  • Refactor eth-rpc client storage and runtime API to a separate file
  • Make debug_trace methods Return a composite Trace enum, so we can introduce other trace types.

companion evm-test-suite PR paritytech/evm-test-suite#93

[#8648]: Charge deposit based on key length

We were only charging storage deposit based on value length, but not based on key length. Since we allow for variable length keys, this has to be done. Needs to be back ported since changing this in an already deployed system will be nasty.

[#8585]: fix epmb solution duplicate issue + add remote mining apparatus to epm

Prevents the NPoS election process from accepting duplicate voters and targets.

[#8615]: Bridges: Fix - Improve try-state for pallet-xcm-bridge-hub

Improve try-state for pallet-xcm-bridge-hub, it removes try_as and uses try_into implementation instead.

[#7785]: pallet scheduler: fix weight and add safety checks

Changes:

  • Add runtime integrity test for scheduler pallet to ensure that lookups use sensible weights
  • Check all passed storage names in the omni bencher to be known by FRAME metadata
  • Trim storage names in omni bencher to fix V1 bench syntax bug
  • Fix V1 bench syntax storage name sanitization for specific Rust versions

I re-ran the benchmarks with the omni-bencher modifications, and it did not change the proof size. I reverted the commit afterwards to reduce the noise for reviewers.

[#8265]: [FRAME] Omni bencher fixes

Changes:

  • Add --pallets option to selectively run multiple pallets. In the past, we only had --pallet to run a single one.
  • Add --exclude-extrinsics [pallet::extrinsic] to add (Pallet, Extrinsic) tuples that should be excluded.
  • Fix storage overlay reversion before the benchmark runs.
  • Test root hash for V2 benchmarks to be deterministic
  • Changed DB reps to 1 for speedup since it should not be needed to run multiple times. (TODO test)

Checked that it fixes the Kusama benchmark issue when patching to a fixed stable2412 fork:

(before)

The following 5 benchmarks failed:
- pallet_nomination_pools::apply_slash_fail
- pallet_nomination_pools::migrate_delegation
- pallet_nomination_pools::pool_migrate
- pallet_offences::report_offence_babe
- pallet_offences::report_offence_grandpa
Error: Input("5 benchmarks failed")

(after)

The following 1 benchmarks failed:
- pallet_nomination_pools::apply_slash_fail
Error: Input("1 benchmarks failed")

This one needs fixing but is not breaking the other ones any more.

[#7691]: Ensure Consistent Topic IDs for Traceable Cross-Chain XCM

This PR ensures every XCM processed with the same topic ID across multiple chains to improve traceability.

[#8427]: BEEFY: adjust equivocation slash fraction

Use 50% slash fraction for fork voting and future block voting (in accordance with the https://eprint.iacr.org/2025/057.pdf paper).
In order to account for the possible risk of accidental/non-malicious double voting, keep the current formula for double voting proof.

[#8306]: Fix faulty pre-upgrade migration check in pallet-session

Fixes a pre-upgrade migration check for v1 of pallet-session.

[#8240]: Snowbridge V2 Audit Fixes

This PR addresses audit findings from the Snowbridge V2 review. It includes a minor change to when the nonce is set
in the Inbound Queue V2. In the Outbound Queue V2 pallet, it fixes an issue where the reward address was not used to
accumulate rewards and improves the generation of message IDs. It also resolves non-sequential call indexes in the
System V2 pallet and improves documentation across the affected pallets.

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

[#8514]: Allow block-announce to exist in the background of minimal relay chains

This PR fixes an issue with the collators that would not get advertised.
The issue relates to the /block-announces/1 protocol for the litep2p network backends.
Previously, the notification service handle was dropped, causing the litep2p backend to terminate the long-running task that handled the /block-announces/1 protocol.
This represents a subtle difference between libp2p and litep2p, where libp2p would continue to operate the protocol under the hood even without the respective handle.

[#8503]: populate disabled dispute state on startup

Populating off-chain disabled state on startup from the disputes database makes the disputes spam handling more resilient with validator restarts.

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.

[#8173]: Expose current advertised xcm version

Exposes AdvertisedXcmVersion via a metadata constant.

[#8351]: XCM: treat BelowMinimum deposit errors as non-fatal and burn non-depositable dust

Treat TokenError::BelowMinimum error as non-fatal in xcm-executor, ignore failures to deposit dust. Any dust that cannot be deposited, shall be dropped (effectively burned).

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):

...

Read more

Polkadot stable2412-6

22 May 06:45
bbc435c
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2412-5 to polkadot-stable2412-6.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2412 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2412-6 and matching the old pattern will be available under polkadot-v1.17.6.

The following crates were updated to the corresponding versions:

- frame-election-provider-solution-type@14.0.2
- sp-npos-elections@35.1.0
- staging-xcm@15.1.0
- frame-benchmarking@39.1.0
- frame-election-provider-support@39.0.1
- pallet-scheduler@40.2.0
- staging-xcm-executor@18.0.3
- pallet-election-provider-multi-phase@38.2.0
- sc-network@0.48.4
- staging-xcm-builder@18.2.1
- xcm-runtime-apis@0.5.3
- pallet-beefy@40.1.1
- pallet-xcm@18.1.1
- pallet-xcm-bridge-hub@0.14.3
- xcm-simulator@18.1.0
- xcm-simulator-example@18.0.1
- xcm-emulator@0.17.2
- asset-hub-westend-runtime@0.27.4
- westend-runtime@21.2.0
- emulated-integration-tests-common@19.1.0
- frame-benchmarking-cli@46.2.0
- cumulus-relay-chain-minimal-node@0.22.2

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.

[#8514]: Allow block-announce to exist in the background of minimal relay chains

This PR fixes an issue with the collators that would not get advertised.
The issue relates to the /block-announces/1 protocol for the litep2p network backends.
Previously, the notification service handle was dropped, causing the litep2p backend to terminate the long-running task that handled the /block-announces/1 protocol.
This represents a subtle difference between libp2p and litep2p, where libp2p would continue to operate the protocol under the hood even without the respective handle.

[#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.

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).)

[#8585]: fix epmb solution duplicate issue + add remote mining apparatus to epm

Prevents the NPoS election process from accepting duplicate voters and targets.

[#7691]: Ensure Consistent Topic IDs for Traceable Cross-Chain XCM

This PR ensures every XCM processed with the same topic ID across multiple chains to improve traceability.

[#8427]: BEEFY: adjust equivocation slash fraction

Use 50% slash fraction for fork voting and future block voting (in accordance with the https://eprint.iacr.org/2025/057.pdf paper).
In order to account for the possible risk of accidental/non-malicious double voting, keep the current formula for double voting proof.

[#8589]: [stable2412] Backport #8546

Improve try-state for pallet-xcm-bridge-hub, it removes try_as and uses try_into implementation instead.

[#7785]: pallet scheduler: fix weight and add safety checks

Changes:

  • Add runtime integrity test for scheduler pallet to ensure that lookups use sensible weights
  • Check all passed storage names in the omni bencher to be known by FRAME metadata
  • Trim storage names in omni bencher to fix V1 bench syntax bug
  • Fix V1 bench syntax storage name sanitization for specific Rust versions

I re-ran the benchmarks with the omni-bencher modifications and it did not change the proof size. I reverted the commit afterwards to reduce the noise for reviewers.

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

[#8514]: Allow block-announce to exist in the background of minimal relay chains

This PR fixes an issue with the collators that would not get advertised.
The issue relates to the /block-announces/1 protocol for the litep2p network backends.
Previously, the notification service handle was dropped, causing the litep2p backend to terminate the long-running task that handled the /block-announces/1 protocol.
This represents a subtle difference between libp2p and litep2p, where libp2p would continue to operate the protocol under the hood even without the respective handle.

[#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.

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: 1.81.0

Polkadot stable2503-4 Kusama validators fix

14 May 17:12
0548e83
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2503-3 to polkadot-stable2503-4.

The tag corresponding to the current patch release polkadot-stable2503-4 and matching the old pattern will be available under polkadot-v1.18.4.

🚨Urgent stability fix for Kusama - please deploy as quickly as possible.

ℹ️ Polkadot validators can upgrade to this release too, but at normal cadence.

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:stable2503-4

or

docker pull parity/polkadot-parachain:stable2503-4

Polkadot stable2503-3-kusama-only

10 May 08:20
f3226bb
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2503-2 to polkadot-stable2503-3.

🚨 This is an emergency release to restore finality on Kusama

ℹ️ The binary will need to be reverted to the latest stable afterwards, it will be communicated additionally, when it will need to be done.

The tag corresponding to the current patch release polkadot-stable2503-3 and matching the old pattern will be available under polkadot-v1.18.3.

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:stable2503-3

or

docker pull parity/polkadot-parachain:stable2503-3

Polkadot stable2503-2

07 May 10:54
050919b
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2503-1 to polkadot-stable2503-2.

ℹ️ 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-2 and matching the old pattern will be available under polkadot-v1.18.2.

The following crates were updated to the corresponding versions:

- polkadot-dispute-distribution@22.1.0
- xcm-emulator@0.19.2

Changelog

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).)

[#8400]: assert_expected_events macro fix to properly check event was received

Fixes an issue where assert_expected_events macro doesn't properly verify if the expected event was received

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

[#8447]: Fix a potential cause of slow parachain blocks

This fix removes a needless reputation change, which might be causing the longer parachain block times on Polkadot.

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:stable2503-2

or

docker pull parity/polkadot-parachain:stable2503-2

Polkadot stable2503-1

05 May 11:16
0bc730c
Compare
Choose a tag to compare

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 Locations 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 and OnSystemEvent callback.
  • Triggers on_initialize for all pallets, not just ParachainSystem.
  • Triggers on_finalize for all pallets, not just ParachainSystem.
  • 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

Polkadot stable2412-5

30 Apr 13:31
d77b878
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2412-4 to polkadot-stable2412-5.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2412 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2412-5 and matching the old pattern will be available under polkadot-v1.17.5.

The following crates were updated to the corresponding versions:

- sp-io@39.0.
- substrate-wasm-builder@25.0.1
- pallet-nomination-pools@37.0.2
- staging-xcm-builder@18.2.0
- pallet-multisig@39.1.1
- pallet-nomination-pools-runtime-api@35.0.1
- pallet-xcm-benchmarks@18.1.1
- snowbridge-core@0.12.2
- snowbridge-pallet-system@0.12.2
- people-westend-runtime@0.13.2
- asset-hub-rococo-runtime@0.24.3
- asset-hub-westend-runtime@0.27.3
- bridge-hub-rococo-runtime@0.18.4
- bridge-hub-westend-runtime@0.15.4

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.

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).)

[#8210]: [xcm-builder][origin_conversion] LocationAsSuperuser converter introduced

Introduces a LocationAsSuperuser struct that implements ConvertOrigin to allow specific Locations 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.

[#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.

[#8335]: Backport fix for pallet-multisig benchmarks

Fixes the benchmarks for pallet-multisig that generates incompatible weights for stable2412.

[#8174]: Fix version conversion in XcmPaymentApi::query_weight_to_asset_fee.

The query_weight_to_asset_fee function of the XcmPaymentApi was trying
to convert versions in the wrong way.
This resulted in all calls made with lower versions failing.
The version conversion is now done correctly and these same calls will now succeed.

[#8156]: bp-runtime: make macro expansion not rely on sp-std in scope.

Make macro in bp-runtime no longer require sp-std in scope.

[#8258]: [stable2412] 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.

[#8081]: Add expensive scenario for asset exchange

This PR introduces an implementation for worst_case_asset_exchange() in the AssetHubWestend benchmarking setup.

[#8194]: xcm: minor fix for compatibility with V4

Following the removal of Rococo, Westend and Wococo from NetworkId, fixed xcm::v5::NetworkId encoding/decoding to be compatible with xcm::v4::NetworkId

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

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.

[#6540]: Only allow apply slash to be executed if the slash amount is atleast ED

This change prevents pools::apply_slash from being executed when the pending slash amount of the member is lower
than the ED. With this change, such small slashes will still be applied but only when member funds are withdrawn.

[#8194]: xcm: minor fix for compatibility with V4

Following the removal of Rococo, Westend and Wococo from NetworkId, fixed xcm::v5::NetworkId encoding/decoding to be compatible with xcm::v4::NetworkId

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: 1.81.0

Polkadot stable2409-7

29 Apr 09:30
0c96447
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2409-6 to polkadot-stable2409-7.

ℹ️ Please note:

⚠️ This is a patch release for the previous stable version: stable2409 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2409-7 and matching the old pattern will be available under polkadot-v1.16.7.

The following crates were updated to the corresponding versions:


- sp-io@38.0.2
- staging-xcm@14.2.2
- substrate-wasm-builder@24.0.2
- staging-xcm-executor@17.0.2
- staging-xcm-builder@17.0.5
- pallet-xcm-benchmarks@17.0.1
- polkadot-runtime-common@17.0.1
- cumulus-pallet-parachain-system@0.17.2
- cumulus-pallet-xcmp-queue@0.17.3
- cumulus-primitives-utility@0.17.1
- parachains-runtimes-test-utils@19.0.1
- asset-hub-westend-runtime@0.26.5

Changelog

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).)

[#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.

[#7856]: Fix XCM decoding inconsistencies

This PR adjusts the XCM decoding logic in order to deduplicate the logic used for decoding v3::Xcm, v4::Xcm
and v5::Xcm and also to use decode_with_depth_limit() in some more places.

[#8080]: Add expensive scenario for asset exchange

This PR introduces an implementation for worst_case_asset_exchange() in the AssetHubWestend benchmarking setup.

[#7967]: Fix XCM Barrier Rejection Handling to Return Incomplete with Weight

This PR addresses an issue with the handling of message execution when blocked by the barrier. Instead of returning an Outcome::Error, we modify the behaviour to return Outcome::Incomplete, which includes the weight consumed up to the point of rejection and the error that caused the blockage.

This change ensures more accurate weight tracking during message execution, even when interrupted. It improves resource management and aligns the XCM executor’s behaviour with better error handling practices.

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: "1.81.0"