github paritytech/polkadot-sdk polkadot-stable2606
Polkadot stable2606

latest release: polkadot-v1.24.0
4 hours ago

This release contains the changes from polkadot-stable2603 to polkadot-stable2606.

ℹ️ Please note:

The tag corresponding to the current stable release polkadot-stable2606 and matching the old pattern will be
available under polkadot-v1.24.0.

The node version for this release is: 1.24.0

Changelog

Full changelog can be found here

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.

[#12080]: fix(statement-network): split peer metric by kind

Impl #12060

Summary

  • Change substrate_sync_statement_peers_connected from a plain gauge to a GaugeVec labelled by kind
  • Report statement protocol peers as kind="full" or kind="light"

[#11415]: Statement store e2e integration tests lite person setup

Summary

  • Add a lite person registration test that exercises the full PeopleLite::attest flow on a live parachain, including ring-VRF key generation, attestation, and subsequent statement submission.

[#10477]: Block Bundling Node Side

Implements the node-side logic for block bundling (aka 500ms blocks) in parachains.
The main changes are in the slot-based collator: instead of building one block per core, blocks are built as requested and distributed over the available cores.

[#11701]: statement-store: Test flooding detection

Fixed a bug with double peer state cleanup. Added two zombienet integration tests that verify statement-store flooding detection

[#11107]: Add runtime metadata detection for Aura authority ID

Adds optional runtime metadata-based detection for Aura authority ID types in polkadot-omni-node-lib.

When metadata is available, the node detects whether Aura uses sr25519 or ed25519 directly from the runtime. If detection fails or metadata is unavailable, it falls back to chain spec ID heuristics.

A warning is emitted when the Aura authority ID type is not found in metadata.

[#11685]: Pass NodeExtraArgs through Dev Chain

Enables the statement store when running polkadot-omni-node in dev mode with --enable-statement-store.

The dev Aura node path now wires the statement store the same way as the regular node path: it registers the statement network protocol, builds the store, exposes the RPCs, and passes the statement store extension into offchain workers.

Also wires up the storage monitor in dev mode and emits warnings when collation-specific flags (--authoring-policy, --export-pov, --max-pov-percentage) are passed in dev mode where they have no effect.

NodeExtraArgs is now destructured in start_dev_node so the compiler will enforce that any newly added fields are explicitly handled.

[#12038]: Network: Add bitswap client

Adds a Bitswap client API to sc-network for fetching CID-addressed blocks from a peer over the native litep2p Bitswap protocol. The public API is block-fetch only and reports per-CID outcomes as either delivered bytes or "missing"; on-wire presence (HAVE / DONT_HAVE) is handled internally and is not part of the public surface.

[#11387]: docs/async_back: Align docs to latest behavior

Tiny PR to update the async backing documentation / guidelines:

  • older params are no longer used async_backing_params
  • UNINCLUDED_SEGMENT_CAPACITY is now 3
  • no need for experimental feature flags

Closes: #8804

[#12207]: statement-store: remove unused Proof::OnChain variant

Removes the Proof::OnChain variant from sp_statement_store::Proof because it was unused.

[#12113]: Aura: Fetch slot duration at parent and not best block

Fetch the slot duration from the parent we are building on top of and not from the best block.

[#11967]: Experimental collator protocol — leaf-authoritative capacity tracking

Reworks the experimental collator protocol's validator side around a leaf-authoritative capacity model. The leaf's per-core claim queue is the single source of truth; capacity at every scheduling parent (SP) on a path to that leaf is derived via offset arithmetic.

Behavior changes vs. master:

  • Rotation-boundary bug fixed. After a group rotation, candidates for both the pre-rotation core's para (advertised at the pre-rotation leaf) and the post-rotation core's para (at the post-rotation leaf) are accepted. Previously, rotation caused claim-queue state for the old core to be overwritten and ancestor-rooted advertisements to be wrongly rejected.

  • Fork-aware view cleanup. When a leaf is dropped, SPs are removed from per_scheduling_parent (with their in-flight fetches cancelled) only when no remaining leaf still references them. Previously, sibling-fork retention in implicit-view storage could leave SPs orphaned with leaked in-flight fetches.

  • Free-slot accounting tightened to the current leaf. Assignments and free CQ positions now reflect only what the current leaf's CQ actually predicts. Previously, claim-queue state for already-produced ancestor blocks lingered until those blocks were pruned, so paras and slots that had already been backed on-chain were still reported as open — keeping peers connected past their relevance and offering capacity for slots that could no longer be filled.

Internals: the previous ClaimQueueState / PerLeafClaimQueueState machinery is gone (~2200 LoC deleted). Capacity is now computed per-(leaf, core) by build_leaf_core_cqs as a Vec<LeafCoreCq>, where each LeafCoreCq holds the leaf's CQ as
Vec<Option<ParaId>> (consumed positions cleared to None) and an sps_by_depth: Vec<Option<Hash>> masking cross-core ancestors. The fetch planner walks free CQ positions back-to-front and picks the best advertisement among same-core SPs whose
window reaches that position.

Test coverage in validator_side_experimental/tests.rs:

  • core_rotation_accepts_candidates_for_both_cores — regression for the original rotation-boundary bug.
  • Five active-fork tests covering: assignment union across leaves, longest-window capacity at a common ancestor across different-length forks, no double-counting of in-flight candidates across sibling forks, and reclamation of capacity / peer disconnection when a
    fork is dropped.
  • Two linear multi-SP tests pinning over-fetch and under-fetch invariants when ancestor and leaf SPs share the same per-core CQ.
  • Tests for cross-SP reputation arbitration and cross-core slot-reservation correctness.
  • Three previously-existing tests rewritten to assert the same intent against the new model.

No public API changes; behavior change is contained to the experimental validator side.

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

[#11922]: Update merkle mountain lib

Updates the merkle mountain crate to its latest version.

[#11616]: Move era reward minting from staking to DAP

Introduces dual-mode era rewards in pallet-staking-async, controlled by Config::DisableMinting:

  • true (non-minting): staking expects an external source to fund a general reward pot. At era boundary, the balance is snapshotted into an era-specific pot. Payouts transfer from the pot. Unclaimed rewards returned via UnclaimedRewardHandler.
  • false (legacy minting): EraPayout computes inflation, tokens minted on payout, remainder sent to RewardRemainder. Kept for Kusama compatibility.

Switching from legacy to non-minting is irreversible.

New config: DisableMinting, UnclaimedRewardHandler, GeneralPots, EraPots, StakerRewardCalculator. New storage: MaxCommission, DisableMintingGuard.
New extrinsic: set_max_commission.

Runtimes using non-minting mode provide an IssuanceCurve impl to DAP and register StakerRewardRecipient as a budget recipient. DAP storage version bumped to V2 with migration.

[#12225]: pallet-revive: map account in prepare_dry_run

Summary

  • Map the origin account in prepare_dry_run when it is not already mapped, so dry-running contract calls/instantiations does not fail with AccountUnmapped for callers that never registered a mapping.

[#12115]: pallet-revive: recalibrate contains_storage benchmark

The contains_storage benchmark now exercises the persistent storage path, matching how WeightInfo::contains_storage is dispatched from the precompile. The transient path remains benchmarked separately as seal_contains_transient_storage.
Also the clear_storage, contains_storage, take_storage and the transient clear/contains benchmarks now size their pre-existing value by n.

[#11770]: Fix PSM migration to run on first deployment

Replaces the versioned MigrateToV1 with an idempotent InitializePsm migration.

The previous MigrateToV1 used VersionedMigration<0, 1> which never ran on fresh deployments because BeforeAllRuntimeMigrations initializes the on-chain storage version to the in-code version (1) before migrations execute, causing the version check to skip.

InitializePsm instead checks whether each external asset already exists and skips it if so. This makes it safe to run multiple times with no storage version dependency.

[#12027]: Extend PGAS filter to allow batches

Just as the title says.

[#11881]: Make pallet-dap-satellite more generic

The DAP satellite pallet is being converted into a generic Accumulate-and-Forward pallet, with the purpose of pooling tokens of a given type into an accumulation account, which is then periodically sent (forwarded) to a specified destination.

Notable changes:

  • Crate renamed from pallet-dap-satellite to pallet-accumulate-and-forward
  • The SendToDap trait is replaced by the Forwarder trait
  • The pallet IDs value changes from *b"dap/satl" to *b"acf/dott" (at this point we are only forwarding DOT tokens, but new IDs should be added for other future tokens)
  • Multiple other events and constants get renamed accordingly
  • The old treasury is now drained via DrainLegacyTreasuryToAccumulationAccount

[#11819]: pallet-psm: support external assets with different decimal precision

Previously pallet-psm rejected any external stablecoin whose decimals did not match pUSD. This change normalizes to pUSD units internally so the PSM can approve assets with arbitrary decimal precision within a safe range.

Core changes:

  • New storage: per-asset AssetDecimals snapshot and pallet-wide StableDecimals snapshot. Storage version bumped to 2.
  • Conversion helpers external_to_pusd / pusd_to_external with checked arithmetic and MAX_DECIMALS_DIFF = 24 to prevent overflow.
  • mint and redeem use round-trip rounding. Truncation dust stays in the caller's wallet on both paths (symmetric behavior), no value is trapped in the reserve and no hidden dust is routed to the fee destination.
  • PsmDebt now denominates in pUSD units so aggregate ceilings and issuance checks are meaningful across mixed-decimal assets.
  • Runtime drift guard: mint/redeem return DecimalsMismatch if live metadata diverges from the registration snapshot; that asset halts until governance intervenes.
  • New errors: DecimalsRangeExceeded, ConversionOverflow, AmountTooSmallAfterConversion.

Migrations:

  • InitializePsm now also seeds StableDecimals from live metadata if missing, and snapshots AssetDecimals for any new assets it adds.
  • New one-shot PopulateDecimals migration backfills StableDecimals and AssetDecimals for chains that approved external assets before this upgrade. Out-of-range assets are auto-disabled (migration does not fail); try-runtime post_upgrade surfaces the anomaly to operators.

[#12123]: Fix migrations for recovery & parachain-system pallets

Changes:

  • pallet-recovery: be more lenient towards broken accounts to keep their recovery config
  • parachain-system: clear old storage value to prevent decoding error

[#11726]: eth-rpc: Bulk INSERT/DELETE and commit per-block writes atomically

Summary

  • Query SQLite's max variable limit at startup and use it to chunk bulk INSERTs and DELETEs, avoiding bind-parameter overflows
  • Replace per-row individual inserts with batched bulk inserts
  • Commit transaction hashes, logs, and block mapping in a single SQLite transaction per block, same for deletes
  • Use INSERT OR REPLACE for logs (previously plain INSERT) to match transaction_hashes and prevent UNIQUE constraint failures if the EXISTS dedup guard is bypassed

[#12216]: [revive] test: dry-run max_storage_deposit from an unfunded account

Summary

Adds a regression test that verifies a bare_call dispatched with the runtime-api dry-run ExecConfig from an account with no balance still reports the same max_storage_deposit as a funded run on the same call.

[#11811]: Wired pallet_dap weights on Asset Hub Westend

Replaced type WeightInfo = () with the generated weights::pallet_dap::WeightInfo

[#12209]: Remove deprecated AssetsToBlockAuthor from parachains-common

Removes deprecated parachains_common::AssetsToBlockAuthor, which forwarded asset transaction fees to the block author via HandleCredit. Use MaybeResolveAssetTo<BlockAuthor<Runtime>, ...> instead (already used by system parachain runtimes in this repo).

[#12135]: revive automap: batch map accounts for free

Changes:

  • Add TX to pallet revive to allow anyone to map accounts

The new TX batch_map_accounts:

  • Maps a batch of accounts without taking a deposit
  • Releases existing mapping deposits of accounts
  • Is free to send when at least 90% of accounts were newly mapped or had an existing deposit released

[#11522]: eth-rpc: Add trace logging for receipt lookup debugging

Add trace logging to receipt handling to help diagnose intermittent receipt retrieval failures for finalized transactions, observed while running revive differential test benchmarks.

Changelog for Node Operator

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

[#11662]: HOP: ephemeral data pool service for Substrate nodes

New --enable-hop flag activates the HOP data pool for ephemeral peer-to-peer data exchange. Related flags:

  • --hop-max-pool-size <MiB> — pool capacity (default: 10240 MiB / 10 GiB)
  • --hop-max-user-size <MiB> — per-user hard cap (default: 256 MiB)
  • --hop-retention-secs <seconds> — data lifetime (default: 86400, 24h)
  • --hop-check-interval <seconds> — maintenance cycle (default: 300, 5 minutes)
  • --hop-promotion-buffer-secs <seconds> — start promoting this many seconds before expiry (default: 7200, 2h)
  • --hop-submit-rate-per-min <requests> — sustained submit rate (default: 60)
  • --hop-submit-burst <requests> — submit burst (default: 120)
  • --hop-bandwidth-per-min-mib <MiB> — sustained bandwidth (default: 128)
  • --hop-bandwidth-burst-mib <MiB> — bandwidth burst (default: 256)
  • --hop-disable-rate-limit — turn off rate limiting (dev / tests)
  • --hop-data-dir <path> — storage directory (default: <chain-data>/hop)

Pool state (blobs + metadata) persists across restarts. Orphan and corrupt files are cleaned up automatically on startup.

[#10468]: Publish indexed transactions with BLAKE2b hashes to IPFS DHT

Add --ipfs-bootnodes flag for specifying IPFS bootnodes. If passed along with --ipfs-server, the node will register as a content provider in IPFS DHT of indexed transactions with BLAKE2b hashes of the last two weeks (or pruning depth if smaller).

[#12082]: ParityDB: Do not skip storing on store + ref in same tx

Fixes a bug in the ParityDB adapter where a store + reference on the same unknown key within a single transaction would skip storing the value entirely.

ParityDB internally transformed the reference into a dereference, making the value disappear from the database after commit. The fix maps changes directly to parity_db::Operation variants so the Set is always emitted regardless of other operations in the same transaction.

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.

[#11736]: Asset Hub Westend: Add MonetaryGuard governance track for PSM emergency actions

Adds a new MonetaryGuard governance track to Asset Hub Westend for fast PSM circuit breaker activation in case of a depeg or exploit.

[#11847]: [revive] pgas as storage deposit

Storage deposits backed by PGAS

PGAS is a protocol-level gas token or gas allowance mechanism for users verified through Polkadot's Proof of Personhood ecosystem.

This PR adds a second payment backend for pallet-revive storage deposits: instead of always charging the user in native currency (DOT), a runtime can opt in to having deposits denominated in PGAS.

New trait: Deposit

substrate/frame/revive/src/deposit_payment.rs

A new sealed Deposit<T: Config> trait abstracts over how storage deposits are charged, held, refunded. It has two implementations in-crate:

  • (): the default, charges and refunds the native currency. Identical to the existing pre-PR behavior.
  • PGasDeposit<Mutator, Holder, Freezer, Id, RefundPercent>: the PGAS-backed backend.

The trait is wired into Config::Deposit and called from charge_deposit / refund_deposit in place of the direct T::Currency calls that used to live there.

Account lifecycle: init_account / deinit_account

The trait includes init_account(to) and deinit_account(contract) methods. Rather than transferring the ED from the origin at contract creation (and back to origin on destruction), the EDs are minted on init and burned on deinit:

New storage: NativeDepositOf

substrate/frame/revive/src/lib.rs

pub(crate) type NativeDepositOf<T: Config> = StorageDoubleMap<
    _, Identity, T::AccountId,
    Blake2_128Concat, T::AccountId,
    BalanceOf<T>, ValueQuery,
>;

Keyed (holder_account, user) -> native_amount. It records how much native currency a user has contributed to a given account's hold. The holder is either a contract (for storage deposits on contract accounts) or the pallet account (for code-upload deposits).

It exists because in the mixed PGAS/DOT world, a user's refund cap needs to be tracked explicitly. The map caps how much of a refund can come back as DOT ; anything beyond that is settled in PGAS.

PGasDeposit<Mutator, Holder, Freezer, Id, RefundPercent>

substrate/frame/revive/src/deposit_payment.rs

Parameterized by five type parameters that the runtime wires up:

  • Mutator: fungibles::Mutate — the fungibles impl backing PGAS (e.g. pallet-assets).
  • Holder: fungibles::MutateHold — the holds backend (e.g. pallet-assets-holder).
  • Freezer: fungibles::freeze::Mutate — the freezes backend (e.g. pallet-assets-freezer), used to pin each contract's PGAS ED.
  • Id: Get<AssetId> — the PGAS asset id on that fungibles instance.
  • RefundPercent: Get<Perbill> — the fraction of PGAS returned on refund/collect; the rest is burned.

Charge semantics:

  • If the user has enough reducible PGAS, the full amount is paid in PGAS via fungibles::MutateHold::transfer_and_hold, which emits the TransferOnHold event. No DOT is touched.
  • Otherwise the charge falls through to DOT, and the contribution is recorded in NativeDepositOf so it can be refunded as DOT later.

Refund / collect semantics:

  • DOT is returned first, capped by NativeDepositOf[holder][user] (and by Precision::BestEffort on the actual DOT hold).
  • Any shortfall is taken from the PGAS hold. RefundPercent of that PGAS is transferred to the user's free balance; the remainder is burned.
  • Sub-ED refunds: if the RefundPercent portion would land below PGAS's ED on the user's account (e.g. the user has no PGAS account and the refund is too small to create one), that portion is folded into the burn rather than aborting the whole refund.

The RefundPercent burn is what prevents free-PGAS harvesting: a user can't deposit storage, release it, and walk away with an allowance they can spend on execution.

Migration (v4)

substrate/frame/revive/src/migrations/v4.rs

A three-phase multi-block migration brings live chains over:

  • Phase 1: record each existing code-upload deposit under NativeDepositOf[pallet_account][owner] so it can still be refunded in DOT.
  • Phase 2: flip each contract's storage deposit from DOT to PGAS via Deposit::migrate_native_to_pgas — mint + freeze the PGAS ED under FreezeReason::PGasMinBalance, burn the native StorageDepositReserve hold, re-hold the same amount in PGAS. Needed because pre-PR DOT deposits weren't tracked per-contributor.
  • Phase 3: rewrite DeletionQueue from TrieId to DeletionQueueItem { trie_id, account_id } so the on-idle sweep can also clear the contract's NativeDepositOf rows. Runs on every runtime.

[#11529]: Westend Asset Hub: Integrate PSM pallet and add remote tests

Adds the PSM pallet to Asset Hub Westend, enabling 1:1 minting and redemption of pUSD against USDT.

[#11761]: asset-conversion-pallet: quote respects minimum balance

Quote functions (quote_price_exact_tokens_for_tokens, quote_price_tokens_for_exact_tokens) now return None when the computed output exceeds what the pool can actually withdraw while staying alive.

Swap execution withdraws from pools with Preserve preservation, meaning the pool must retain at least min_balance. The quote functions did not account for this, so they could return a price for a swap that would fail at execution.

Both quote functions now check the output against reducible_balance(Preserve, Polite) — the same preservation level the swap uses.

[#11822]: Remove deprecated CurrencyAdapter from pallet-transaction-payment

The deprecated CurrencyAdapter type has been removed from pallet-transaction-payment.
Use FungibleAdapter instead.

[#11052]: update multi asset bounties pallet account derivation logic

The account IDs for bounty and child-bounty funding accounts have changed. Off-chain code that derives or hardcodes these addresses must use the new derivation: raw-byte prefix b"mbt" for bounties and b"mcb" for child bounties, SCALE-encoded as fixed [u8; 3] arrays (no length prefix), with the same pallet ID and index encoding as before.

[#10150]: Deprecate ValidateUnsigned trait and #[pallet::validate_unsigned] attribute.

Deprecate the ValidateUnsigned trait and #[pallet::validate_unsigned] attribute as part of phase 2 of Extrinsic Horizon.

[#11823]: Refactor asset-conversion tx payment fee correction

The AssetTxFeePaid event now reports the correct fee amount when paying transaction fees in the native asset through the asset-conversion extension.

Rust compiler versions

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

  • Rust Stable: 1.93

Runtimes

The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.18.4 and rustc 1.93.0 (254b59607 2026-01-19).

Westend

🏋️ Runtime Size:          1.73 MB (1811721 bytes)
🔥 Core Version:          westend-1024001 (parity-westend-0.tx27.au2)
🗜 Compressed:            Yes: 80.57%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x1357dda3b0671910cc2116372fac9e3025217b9eb420191c3f754179a27e8908
🗳️ authorizeUpgrade hash: 0x16cf4e5163536a4f6d07cf0fc0e04940a82e063cfc47a5d51ee1edb6ff763cb6
🗳️ Blake2-256 hash:       0xcbc9f8a9aa312a9d7df6c5515e8482aab1cd5dfe7acfb44728274c50b4559d30
📦 IPFS:                  QmUtnyx8WcdqYNZonSkqEpUCkxKrjfxr5v7C9YLRE2UrJb

Westend Assethub

🏋️ Runtime Size:          2.43 MB (2548226 bytes)
🔥 Core Version:          westmint-1024001 (westmint-0.tx16.au1)
🗜 Compressed:            Yes: 82.18%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xd9c8687dc2437658b45c5fc33797073123b0f42a59073f5cf91f779d95cd89c9
🗳️ authorizeUpgrade hash: 0x7de2183ec69e3fd088be1a22afa5055c50574269d740a4f881db7332e97147f5
🗳️ Blake2-256 hash:       0xfb8aacd58ec59ce8cc0a277a3800ae91443cd5b5ae5a39f829419f397e9fdfeb
📦 IPFS:                  QmQRWXf4TbdCEbTozTGomQVBbtRvZSgtWYuSUMuPj8DSW3

Westend Bridgehub

🏋️ Runtime Size:          1.33 MB (1390915 bytes)
🔥 Core Version:          bridge-hub-westend-1024001 (bridge-hub-westend-0.tx6.au1)
🗜 Compressed:            Yes: 79.8%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x54a065fbcc549579d71c4a183c52457f5d760869a8ca917ae1baab8e881dcfcc
🗳️ authorizeUpgrade hash: 0x14bfe79a1244bade551b0385995ae0865c56a63e5e49e05e5bb667e5818a1b32
🗳️ Blake2-256 hash:       0xdfdc2c90c4c3803c60af79c967d1e40731667ea362366757ee3f735f26dc26f5
📦 IPFS:                  QmbTJaRqoqLpXfZy4taAeN5RTRSuQAoURZxxTCKgdAb41w

Westend Collectives

🏋️ Runtime Size:          1.21 MB (1266070 bytes)
🔥 Core Version:          collectives-westend-1024001 (collectives-westend-0.tx6.au1)
🗜 Compressed:            Yes: 80.95%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xfa80fd271d06e5657c72896315c121e52ad88090a8e6a82d1c1f4b097fd071c4
🗳️ authorizeUpgrade hash: 0x3fc59bdf3533f52447145699b7647cfceae15d3024e1d5ce28a87e4c5bd618d7
🗳️ Blake2-256 hash:       0x2a64aabf9958705551d1778111e6d98f938c07fccecc7fb403355a67f7a792d7
📦 IPFS:                  QmUhV5icwXqFcjcsoBesy9DGiRvoQP6aPqUNo66BErJPvR

Westend Coretime

🏋️ Runtime Size:          1.09 MB (1138013 bytes)
🔥 Core Version:          coretime-westend-1024001 (coretime-westend-0.tx2.au1)
🗜 Compressed:            Yes: 79.96%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x39d7ce5978d7506ee0123e11c5802cb07e283bb531cde6b143f849b65a90ee37
🗳️ authorizeUpgrade hash: 0xce39bc8429959702336a5f544671ea7deea12d795bff07a2a8c0f78d89b0f2f8
🗳️ Blake2-256 hash:       0xbcbd511727a4cd1344b0bc0b9d24e859171750478c47aacef4e4f291f59daa22
📦 IPFS:                  QmaeYd5v9RAYe1gNDSfr9MTH7ytjdKWPxojDrjyZZkAf8Q

Westend Glutton

🏋️ Runtime Size:          541.84 kB (554841 bytes)
🔥 Core Version:          glutton-westend-1024001 (glutton-westend-0.tx1.au1)
🗜 Compressed:            Yes: 78.11%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xfd9546aada05a21e26720636e84f45beabb59f1795a4eb00157d86ab7ffc32ac
🗳️ authorizeUpgrade hash: 0xde617d99c2af29642a0523e2e98770c0681bd61aa9d7f6d5ed54163082637d62
🗳️ Blake2-256 hash:       0x17ebaa36857373a9ccf6d088ad0ed726a34393d8d862545ed7645078980050de
📦 IPFS:                  QmWigPhTFCsnCwh7Uj4SvhirvCE85UNc7ETVK5jLTDWb8f

Westend People

🏋️ Runtime Size:          1.08 MB (1136014 bytes)
🔥 Core Version:          people-westend-1024001 (people-westend-0.tx2.au1)
🗜 Compressed:            Yes: 79.91%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x90c54144ae525bc8c6364115a5695756db72cf1d9b34865c461229c59e327c25
🗳️ authorizeUpgrade hash: 0x4a82f9b0c6e54468711c8e8d00b0840be1e1880aab9718948eb85e9dc7cb69db
🗳️ Blake2-256 hash:       0x0f3851703ca6bc1c8ebad918f3739fb9ce0c6fdc756a3f63c7354d0b5b42fb19
📦 IPFS:                  QmYLUjjtBuzPWGoe3FdJBWHQRcKfgNbF9n8wm7kme2e411

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

or

docker pull parity/polkadot-parachain:stable2606

Don't miss a new polkadot-sdk release

NewReleases is sending notifications on new releases.