Skip to content

Releases: paritytech/polkadot-sdk

Polkadot stable2412-8

28 Jul 14:34
6d12651
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2412-7 to polkadot-stable2412-8.

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

The following crates were updated to the corresponding versions:

- pallet-identity@39.2.0
- pallet-im-online@38.1.1
- pallet-migrations@9.1.1
- pallet-scheduler@40.2.2
- staging-xcm-executor@18.0.4
- pallet-alliance@38.1.1
- pallet-xcm@18.1.3
- emulated-integration-tests-common@19.1.1
- polkadot-network-bridge@21.0.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.

[#8973]: Add polkadot_parachain_peer_connectivity metric

Adds polkadot_parachain_peer_connectivity histogram metric to better understand connectivity patterns.

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

[#9325]: Fix pallet-im-online benchmarking for runtimes with MaxKeys < 1000

Fixes benchmarking for pallet-im-online when runtime configuration has MaxKeys < 1000.
Previously, the benchmark code used a hardcoded constant MAX_KEYS = 1000 which would cause benchmark failures for runtimes configured with fewer maximum keys. This change updates the benchmark to dynamically use the MaxKeys value from the pallet's Config trait.

[#9139]: Expose more constants for pallet-xcm

Exposes more constants (UniversalLocation, MaxLockers, MaxRemoteLockConsumers), similar as AdvertisedXcmVersion.

[#9137]: Pallet XCM - transfer_assets pre-ahm patch

Pallet XCM's transfer_assets extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM|WND|PAS has to be done.
This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM|WND|PAS will change from the Relay Chain to Asset Hub.
After the migration, another patch will remove this error case and use the correct reserve.
The pallet uses the UniversalLocation configuration to figure out the correct asset being transferred. It's very important to have that configuration correct.

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

[#8694]: Fix pallet_migrations benchmark when FailedMigrationHandler emits events

When FailedMigrationHandler emits events, the UpgradeFailed event is not the last one, so assert_last_event fails. Fixed by checking that the UpgradeFailed event is emitted, even if it is not the last one.

[#8179]: Do not make pallet-identity benchmarks signature-dependent

  • Includes a benchmark_helper configuration function in pallet-identity to handle signing operations.
  • Abstracts away the explicit link with SR25519 schema in the benchmarks, allowing chains with a different one to be able to run them and calculate the weights.
  • Adds a default implementation that leaves the code equivalent.
  • The requirement is for the AccountId type of the runtime to implement the Decode trait

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.

[#9139]: Expose more constants for pallet-xcm

Exposes more constants (UniversalLocation, MaxLockers, MaxRemoteLockConsumers), similar as AdvertisedXcmVersion.

[#9137]: Pallet XCM - transfer_assets pre-ahm patch

Pallet XCM's transfer_assets extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM|WND|PAS has to be done.
This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM|WND|PAS will change from the Relay Chain to Asset Hub.
After the migration, another patch will remove this error case and use the correct reserve.
limited_reserve_transfer_assets, transfer_assets_using_type_and_then or execute should be used instead, since they provide the ability to specify the reserve you want to use.

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 stable2506

24 Jul 15:12
6fd693e
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2503 to polkadot-stable2506.

ℹ️ Please note:

The tag corresponding to the current stable release polkadot-stable2506 and matching the old pattern will be available under polkadot-v1.19.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.

[#8533]: fatxpool: add fallback for ready at light

Add fallback for ready_at_light for the case of not finding a best view that can be used to return a set of ready transactions. Optimised as well how the best view is searched.

[#8948]: make sure dispute_coordinator/approval-voting parallel can receive priority messages

#8834, changed relay_chain_selection to send priority messages, but did not configured the subsystems to tell they can receive priority messages, with can_receive_priority_messages flag.

If can_receive_priority_messages is not specified orchestra falls back when sending a priority message to the normal queue,
so this resulted in the messages not being processed ahead of the others in the queue.

Fix this configuration mistake and add a test to make sure priority messages are consumed ahead of normal ones by the subsystems.

[#7867]: benchmark/storage Make read/write benchmarks more accurate

Improve the benchmark accuracy of read/write costs by making sure for both reads and write we compute the amortized cost of a single key operation, by adding a batch functionality to make sure the cost of common operations like root computation is spread across multiple keys. Additionally, also add a pov-recorder flag, so that we are able to replicate the same environment as parachains do.

[#8973]: Add polkadot_parachain_peer_connectivity metric

Adds polkadot_parachain_peer_connectivity histogram metric to better understand connectivity patterns.

[#8443]: Stabilize V16 metadata

Metadata V16 is stabilized. V16 metadata exposes information about Pallet View Functions and V5 transactions,
and can be obtained, where applicable, by using the Runtime APIs Metadata_metadata_at_version(16).

[#8923]: fatxpool: fix: remove invalid txs from the dropped stream controller

While testing mortal transaction I encountered exactly the same problem as in #8490.
This PR should fix the problem.

fixes: #8490

[#8072]: RFC-0008: Store parachain bootnodes in the relay chain DHT

Implement RFC-0008 "DHT bootnodes".

With this mechanism, every parachain node is eligible to act as a bootnode. If its peer ID is close to the parachain key for the current relay chain epoch, it becomes discoverable by other parachain nodes via the relay chain DHT. This removes the need to specify bootnodes in the parachain chainspec, eliminating a single point of failure and simplifying things for parachain operators.

The mechanism is enabled by default. The embedded DHT bootnode can be disabled using the --no-dht-bootnode flag, and discovery of such nodes can be disabled with the --no-dht-bootnode-discovery flag.

[#8606]: Use hashbrown hashmap/hashset in validation context

Discovered while profiling #6131 (comment) with the benchmark #8069 that when running in validation a big chunk of the time is spent inserting and retrieving data from the BTreeMap/BTreeSet.

By switching to hashbrown HashMap/HashSet in validation TrieCache and TrieRecorder and the memory-db paritytech/trie#221 read costs improve with around ~40% and write with about ~20%

[#9050]: dispute-coordinator: handle race with offchain disabling

Fixes a potential race with off-chain disabling when we learned about disablement after importing a dispute from that validator.

[#8594]: omni-node: fix benchmark pallet to work with --runtime

polkadot-omni-node benchmark pallet can use one of --runtime or --chain now, like frame-omni-bencher does.

[#7955]: Add ApprovedPeer UMP signal

Add a new ApprovedPeer UMP signal variant for specifying a peerid that should be credited for authoring and supplying the candidate.
Will be used by the new collator protocol implementation for promoting the reputation of collators. Candidates should still not emit any UMP signals until the CandidateReceiptV2 node feature is enabled.

[#8370]: fix unneeded collator connection issue

This PR fixes an issue where collators continued attempting to connect to validators even after their core assignment was removed, leading to unnecessary connections and log spam An unneeded collator connected.
The fix ensures collators only connect to validators if there are cores assigned to the parachain.

[#8314]: Add RPCs in the statement store to get the statements and not just the statement data.

In statement-store, statements can contain a proof with the signature of the statement, this proof is useful to assert that the statement comes from the expected account. This proof also signs for all the statements fields, those can also be useful information for the receiver.

This PR adds broadcasts_stmt, posted_stmt, and posted_clear_stmt RPCs to get the full statements from the statement store.

[#8688]: bound trusted local cache to shared limits sizes

Since there is no point in letting local cache grow past the shared cache limits, bound it to those limits.

[#7556]: Add trie cache warmup

Warm up the Trie cache based on a CLI flag to enhance the performance of smart contracts on AssetHub by reducing storage access time.

[#8837]: Cache locally controlled validator indices in dispute-coordinator

dispute-coordinator uses keystore.key_pair() to obtain the set of locally controlled validator IDs. This operation happens on each import and is expensive because it involves key generation from a seed phrase. This patch lazily determines the set of locally controlled validator IDs and caches the result for each session.

[#8833]: Check artifact integrity before execution

In case of a corrupted artifact, we can find it out before execution and re-prepare the artifact.

[#9102]: polkadot-omni-node: pass timestamp inherent data for block import

This should allow aura runtimes to check timestamp inherent data when syncing/importing blocks
that include timestamp inherent data.

Runtime developers can check timestamp inherent data while using polkadot-omni-node-lib/polkadot-omni-node/polkadot-parachain binaries.
This change is backwards compatible and doesn't require runtimes to check the timestamp inherent, but they are able to do it now if needed.

[#8134]: separate validation and collation protocols

This PR completes the removal of validation protocol versions 1 and 2 by separating validation from collation. Previously, a shared Versioned enum prevented full removal.
With this change, outdated validation messages are now eliminated.

[#8831]: dispute-coordinator: increase lru_observed_blocks_capacity

Under increase load with finality lagging behind there is a risk for blocks to arrive late or out of sequence in that case we will end up scrapping from the received block un till last finalized block and then process all the dispute in-between.

This couple with other inefficiencies like #8823 will increase unnecessarily the load on dispute-coordinator.

Decided to make this super large to err on the cautious side, the Hash size is only 32 bytes, so this will make the LRU grow up to 65k, which I don't think is a significant increase.

[#9094]: bitfield_distribution: fix subsystem clogged at begining of a session

handle_peer_view_change gets called on NewGossipTopology with the existing view of the peer to cover for the case when the topology might arrive late, but in that case in the view will contain old blocks from previous session, so since the X/Y neighbour change because of the topology change you end up sending a lot of messages for blocks before the session changed.

Fix it by checking the send message only for relay chains that are in the same session as the current topology.

[#8332]: parachain informant

Adds a new cumulus-relay-chain-streams crate to make it easier to reuse relay chain streams.

[#8839]: net/discovery: File persistence for AddrCache

Persisting the AddrCache periodically (every 10 minutes) and on worker shutdown. Read AddrCache from file upon launch of worker.

AddrCache is saved as authority_discovery_addr_cache.json in the
folder configured by net_config_path of NetworkConfiguration.

This reduces the time it takes for a node to reconnect to peers after restart.

[#9264]: gossip-support: make low connectivity message an error

All is not well when a validator is not properly connected, e.g: of things that might happen:

Read more

Polkadot stable2409-10

17 Jul 13:37
3a7b924
Compare
Choose a tag to compare

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

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2409-10 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-10 and matching the old pattern will be available under polkadot-v1.16.10.

The following crates were updated to the corresponding versions:

- pallet-migrations@8.0.1
- pallet-xcm@17.0.4
- polkadot-network-bridge@18.0.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.

[#8973]: Add polkadot_parachain_peer_connectivity metric

Adds polkadot_parachain_peer_connectivity histogram metric to better understand connectivity patterns.

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

[#8694]: Fix pallet_migrations benchmark when FailedMigrationHandler emits events

When FailedMigrationHandler emits events, the UpgradeFailed event is not the last one, so assert_last_event fails. Fixed by checking that the UpgradeFailed event is emitted, even if it is not the last one.

[#9139]: Expose more constants for pallet-xcm

Exposes more constants (UniversalLocation, MaxLockers, MaxRemoteLockConsumers), similar as AdvertisedXcmVersion.

[#9137]: Pallet XCM - transfer_assets pre-ahm patch

Pallet XCM's transfer_assets extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM|WND|PAS has to be done.
This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM|WND|PAS will change from the Relay Chain to Asset Hub.
After the migration, another patch will remove this error case and use the correct reserve.
The pallet uses the UniversalLocation configuration to figure out the correct asset being transferred. It's very important to have that configuration correct.

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.

[#9139]: Expose more constants for pallet-xcm

Exposes more constants (UniversalLocation, MaxLockers, MaxRemoteLockConsumers), similar as AdvertisedXcmVersion.

[#9137]: Pallet XCM - transfer_assets pre-ahm patch

Pallet XCM's transfer_assets extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM|WND|PAS has to be done.
This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM|WND|PAS will change from the Relay Chain to Asset Hub.
After the migration, another patch will remove this error case and use the correct reserve.
limited_reserve_transfer_assets, transfer_assets_using_type_and_then or execute should be used instead, since they provide the ability to specify the reserve you want to use.

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

10 Jul 09:00
1530a88
Compare
Choose a tag to compare

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

This is a patch release for the latest stable version: stable2503. You can consider upgrading to it to have the latest fixes for this version.

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

⚠️ The sc-network and sc-network-types crates all the dependant crates had to be major bumped in this release.

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.

[#9102]: polkadot-omni-node: pass timestamp inherent data for block import

This should allow aura runtimes to check timestamp inherent data when syncing/importing blocks that include timestamp inherent data.

Runtime developers can check timestamp inherent data while using polkadot-omni-node-lib/polkadot-omni-node/polkadot-parachain binaries.
This change is backwards compatible and doesn't require runtimes to check the timestamp inherent, but they are able to do it now if needed.

[#9050]: dispute-coordinator: handle race with offchain disabling

Fixes a potential race with off-chain disabling when we learned about disablement after importing a dispute from that validator.

[#8837]: Cache locally controlled validator indices in dispute-coordinator

dispute-coordinator uses keystore.key_pair() to obtain the set of locally controlled validator IDs. This operation happens on each import and is expensive because it involves key generation from a seed phrase. This patch lazily determines the set of locally controlled
validator IDs and caches the result for each session.

[#8948]: make sure dispute_coordinator/approval-voting parallel can receive priority messages

#8834, changed relay_chain_selection to send priority messages, but did not configured
the subsystems to tell they can receive priority messages, with can_receive_priority_messages flag.

If can_receive_priority_messages is not specified orchestra falls back when sending a priority message to the normal queue,
so this resulted in the messages not being processed ahead of the others in the queue.

Fix this configuration mistake and add a test to make sure priority messages are consumed ahead of normal ones by the subsystems.

[#8832]: increase session index cache

A 10 session index cache is not enough when you run under intense pressure and finality is lagg since you will end requesting the session index for blocks older than that. So let's make this cache larger to achieve its purpose even under intense load when it actually matters more to be faster.

The session_index_cache keeps a Hash and a u32, so that's about 36 bytes per entry, with this increase it can grow up to 65k which is not that big in my book.

[#8973]: Add polkadot_parachain_peer_connectivity metric

Adds polkadot_parachain_peer_connectivity histogram metric to better understand connectivity patterns.

[#8834]: extend overseer to send priority messages

Extend overseer to send priority messages, the new functionality is used for sending messages on the grandpa call path when we call dispute-coordinator and approval-voting in finality_target_with_longest_chain to make sure we don't block unnecessarily.

[#8831]: dispute-coordinator: increase lru_observed_blocks_capacity

Under increase load with finality lagging behind there is a risk for blocks to arrive late or out of sequence, in that case we will end up scrapping from the received block un till last finalized block and then process all the dispute in-between.

This couple with other inefficiencies like #8823 will increase unnecessarily the load on dispute-coordinator.

Decided to make this super large to err on the cautious side, the Hash size is only 32 bytes, so this will make the LRU grow up to 65k, which I don't think is a significant increase.

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

[#9102]: polkadot-omni-node: pass timestamp inherent data for block import

This should allow aura runtimes to check timestamp inherent data when syncing/importing blocks that include timestamp inherent data.

Runtime developers can check timestamp inherent data while using polkadot-omni-node-lib/polkadot-omni-node/polkadot-parachain binaries.
This change is backwards compatible and doesn't require runtimes to check the timestamp inherent, but they are able to do it now if needed.

[#8725]: Snowbridge: register polkadot native asset with fee

To enforce a fee for PNA registration.

[#6827]: Introduction of Approval Slashes

Introduces a more aggressive slashing scheme.
Lazy or spammy validators will from now on be slashable in disputes.
Even if your validator is not a backer but it approves an invalid block it will be slashed 2%.
If your validator raises or supports fake alarms (disputes against valid blocks) you will be slashed (0%) and disabled for the remainder
of the era, which will potentially reduce era point gains.

[#8980]: Fix revive-fixtures build script

Fix compilation issue with pallet-revive-fixtures build.rs script.

[#8787]: Westend governance authorize_upgrade integration tests

Integration tests covering authorize_upgrade with whitelisting via Collectives for Westend network

[#8932]: pallet-balances: Do not create account in benchmarking

This particular benchmark is about benchmarking the account creation, so we should not create it before :)

Closes: #8927

[#9130]: Modified ToParachainDeliveryHelper utilize WithdrawAsset based worst-case fee estimation instead of ClearOrigin

This PR contains modified ToParachainDeliveryHelper to utilize WithdrawAsset based worst-case fee estimation instead of ClearOrigin.

[#8694]: Fix pallet_migrations benchmark when FailedMigrationHandler emits events

When FailedMigrationHandler emits events, the UpgradeFailed event is not the last one, so assert_last_event fails. Fixed by checking that the UpgradeFailed event is emitted, even if it is not the last one.

Changelog for Node Operator

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

[#8345]: tx/metrics: Add metrics for the RPC v2 transactionWatch_v1_submitAndWatch

This PR adds metrics for the following RPC subscription: transactionWatch_v1_submitAndWatch

Metrics are exposed in two ways:

  • simple counters of how many events we've seen globally
  • a histogram vector of execution times, which is labelled by initial event -> final event
    • This helps us identify how long it takes the transaction pool to advance the state of the events, and further debug issues

Part of: #8336

[#6827]: Introduction of Approval Slashes

Introduces a more aggressive slashing scheme.
Lazy or spammy validators will from now on be slashable in disputes.
Even if your validator is not a backer, but it approves an invalid block it will be slashed 2%.
If your validator raises or supports fake alarms (disputes against valid blocks) you will be slashed (0%) and disabled for the remainder
of the era, which will potentially reduce era point gains.

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

or

docker pull parity/polkadot-parachain:stable2503-7

Polkadot stable2412-7

24 Jun 05:55
47bffc0
Compare
Choose a tag to compare

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

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

The following crates were updated to the corresponding versions:

- sc-network-types@0.15.5
- pallet-broker@0.18.1
- pallet-scheduler@40.2.1
- sc-network@0.48.5
- pallet-xcm@18.1.2
- sc-offchain@43.0.1
- pallet-xcm-bridge-hub@0.14.4
- coretime-rococo-runtime@0.13.3
- coretime-westend-runtime@0.13.3
- sc-cli@0.50.2
- cumulus-client-consensus-aura@0.21.1
- polkadot-service@22.2.0
- cumulus-relay-chain-minimal-node@0.22.3
- cumulus-relay-chain-inprocess-interface@0.22.1
- polkadot-omni-node-lib@0.4.3

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.

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

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

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

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

[#8627]: [stable2412] Weight update for pallet scheduler

Update pallet scheduler weights and add sanity check test.

Changelog for Node Operator

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

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

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

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