This release contains the changes from polkadot-stable2512-1 to polkadot-stable2512-2-rc1.
⚠️ Warning: Pre-release Version
The currently published version is a pre-release and is not yet a final stable version. This release is provided for testing purposes only, and there is no guarantee that everything will work as expected. Errors and unusual behaviours of some features are to be expected.
Please use this version at your own risk and report any issues you encounter. We recommend waiting for the official release if you need a stable version.
The following crates were updated to the corresponding versions:
Click to see crates list
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).)
[#10793]: Snowbridge: Fix fork version slot selection for sync committee signature verification
Fixes fork version selection for sync committee signature verification to use signature_slot - 1 per the Ethereum Altair light-client spec. This prevents valid light client updates from being rejected at fork activation boundaries.
[#10880]: Remove failing assertion related to VoterList count mismatch
Updated bags-list so that on_insert queues items into PendingRebag instead of failing, and removed the invariant that required VoterList's count to equal the combined number of Nominators and Validators. This is safe while bags-list is locked. After unlocking, on_idle drains PendingRebag, and the counts converge back to consistency over time.
[#10986]: [Pool] Use active era for withdrawals
Standardising using active era in pools and staking. Current Era should only be used for election logic
[#10666]: staking-async: allow session keys handling on AssetHub
Added session keys handling on AssetHub for staking-async:
- Validators can now call
set_keysandpurge_keyson AssetHub, which forwards the request to the RelayChain via XCM. - Session keys are validated on AssetHub before forwarding. Only validated keys are sent to RC (no proof), as RC trusts AH's validation.
- Proof of ownership is not yet supported since the related change has not been backported to stable2512.
- Staking proxies can call
set_keysandpurge_keyson behalf of validators. TheProxyType::Stakingfilter on runtime has been updated to include these calls. - Validators are still allowed to call
set_keysandpurge_keysvia relay-chain pallet-session's extrinsics. This option will be deprecated in the future. - No key deposit is required on AssetHub.
- XCM delivery fees are charged from user's liquid balance before sending messages.
- Workflow change: unlike the current flow for new validators on RC (bond -> set_keys -> validate), users on Asset Hub MUST call bond and validate BEFORE
calling set_keys. Attempting to set keys before declaring intent to validate will fail with NotValidator.
[#10980]: Add StakingOperator proxy type to Westend AssetHub
Introduces StakingOperator proxy type that allows validator operational tasks (validate, chill, kick) and session key management (set_keys, purge_keys) without access to fund management operations.
This enables pure proxy stashes to delegate validator operations: now that pallet_staking_async_rc_client provides
set_keys/purge_keys on AssetHub, pure proxies can fully utilize StakingOperator.
[#10947]: benchmarking: fix DB read/write counts
PR #10802 added reset_read_write_count() at the end of commit_db() to prevent warmup operations from appearing in benchmarking results. However, commit_db is called twice: one on on_before_start() closure before benchmark, and one after benchmark execution after benchmark.
This PR whitelists warmup key so that it doesn't appear in the read/write count.
We also regenerate staking-async and pallet-conviction-voting benchmarks (testing both v1 and v2)
[#10957]: pallet-dap: mark funds as inactive and expect buffer account to be pre-funded
In pallet-dap, mark funds in the issuance buffer as inactive so they do not participate in governance.
In production, the buffer account must be pre-funded (e.g., via genesis allocation or transfer) before the pallet receives any funds.
Removed the InitBufferAccount migration since the buffer account is now expected to be pre-funded externally.
For delegated staking, redirect slashes to DAP for Westend AssetHub.
Removed DAP dependency from main staking-async crate, keep it only for test runtimes.
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
- Rust Stable:
1.88.0
Runtimes
The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.18.3 and rustc 1.88.0 (6b00bc388 2025-06-23).
Westend
🏋️ Runtime Size: 1.84 MB (1930332 bytes)
🔥 Core Version: westend-1021002 (parity-westend-0.tx27.au2)
🗜 Compressed: Yes: 81.02%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x06edfdb7de82f80e39020f461e1d236cad7535416952c725c65854ad05372311
🗳️ authorizeUpgrade hash: 0xff50006b6c3d1e6a4a09b86e7222f67b6ca8a10c1b96f71e5381fe72e46171f3
🗳️ Blake2-256 hash: 0xc5033b3a2749393b2e6e8963d31dcc36353ea41feb5ba085d4f18b3bac8b9d62
📦 IPFS: QmZEyTWx3beRfCN3dXnxgcYhcV545v6FisNH4Qyc5wzWut
Westend Assethub
🏋️ Runtime Size: 2.34 MB (2457225 bytes)
🔥 Core Version: westmint-1021003 (westmint-0.tx16.au1)
🗜 Compressed: Yes: 82.15%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xca3c9b3b31888fdbaa4f399dfe8a38bb417ea3797f06508f52616b9d12700887
🗳️ authorizeUpgrade hash: 0xbd10b33e9402a0fdca1f7094697aabca362055d535d4f6a648d81deb9ccb5b70
🗳️ Blake2-256 hash: 0xbfd53f79b6df48dd84cfb49738a3900e9a5e5a0f17b2d5d1866e86a90974e5ab
📦 IPFS: QmScgRemUb1komeDh3nM4mnqFQC3KZtN18Qe5ACs67JZ5J