github paritytech/polkadot-sdk polkadot-stable2407
Polkadot stable2407

latest releases: polkadot-stable2412-rc2, polkadot-stable2412-rc1, polkadot-stable2409-2...
4 months ago

This release contains the changes from polkadot-v1.14.1 to polkadot-stable2407.

ℹ️ Please note:

Starting from this release (related post on the Polkadot forum, the process for Polkadot node releases is changing. The new process is described in the RELEASE.md.

Therefore, the naming of the releases and final release tags will be adapted to replicate the schedule of the stable releases. Since each stable release will be done quarterly, it will be named based on the model: Polkadot stableYYMM, and the tags will follow accordingly: polkadot-stableYYMM, where YYMM represents the date (last month of the quarter) of the release.

The old tags based on the version will be kept during the transition period. The tag corresponding the current stable release polkadot-stable2407 and matching the old attern is available under polkadot-v1.15.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.

[#4848]: Optimize logic for gossiping assignments

Optimize the logic for gossiping assignments by obtaining the list of peer ids from the topology instead of iterating through all connected validators, this gives us a 15% to 20% reduction in cpu usage.

[#4922]: Optimize finalization performance

Finalization algorithm was replaced with a more efficient version, data structures refactored to be faster and do fewer memory allocations. As the result some APIs have changed in a minor, but incompatible way.

[#4755]: Send PeerViewChange with high priority

  • orchestra updated to 0.4.0, which introduces support for prioritizing system messages.
  • PeerViewChange sent with high priority and should be processed first in a queue.
  • To count them in tests added tracker to TestSender and TestOverseer. It acts more like a smoke test though.

[#4522]: Added runtime support for reporting BEEFY fork voting

This PR renames the submit_report_equivocation_unsigned_extrinsic in BeefyApi to
submit_report_double_voting_unsigned_extrinsicand bumps the BeefyApi version from 3 to 4.

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

[#4978]: Add MAX_INSTRUCTIONS_TO_DECODE to XCMv2

Added a max number of instructions to XCMv2. If using XCMv2, you'll have to take this limit into account.
It was set to 100.

[#5011]: Use BadOrigin from sp_runtime

This PR refactor usages of deprecated frame_support::error::BadOrigin to sp_runtime::traits::BadOrigin

[#5113]: Make the candidate relay parent progression check more strict for elastic scaling

Previously, the relay chain runtime was checking if the relay parent of a new candidate does not move backwards from the latest included on-chain candidate. This was fine prior to elastic scaling.
We now need to also check that the relay parent progresses from the latest pending availability candidate, as well as check the progression within the candidate chain in the inherent data.
Prospective-parachains is already doing this check but it's also needed in the runtime.

[#4943]: Update definition of frozen balance (docs PR)

This PR fixes a bug in the docs located in the definition of frozen balances. In addition, it extends that definition for completeness.

[#4863]: Make tracing::log work in the runtime

Make tracing::log work in the runtime as log works in the runtime.

[#4902]: Removed pallet::getter usage from the pallet-vesting

This PR removed pallet::getters from pallet-vestings storage items.
When accessed inside the pallet, use the syntax StorageItem::<T>::get().

[#4912]: Removed pallet::getter usage from the pallet-babe

This PR removed pallet::getters from pallet-babes storage items.
When accessed inside the pallet, use the syntax StorageItem::<T>::get().
When accessed outside the pallet, use the public functions of storage.

[#4839]: Removed pallet::getter usage from pallet-insecure-randomness-collective-flip

This PR removed the pallet::getters from pallet-insecure-randomness-collective-flip.
The syntax StorageItem::<T, I>::get() should be used instead.

[#4972]: Remove pallet::getter usage from pallet-session

This PR removes the pallet::getters from pallet-session.
The syntax StorageItem::<T, I>::get() should be used instead.

[#4935]: Bridges V2 refactoring backport and pallet_bridge_messages simplifications

This introduces several simplifications to the pallet_bridge_messages::Config configuration.
Types like BridgedChainId, MaxUnrewardedRelayerEntriesAtInboundLane, MaxUnconfirmedMessagesAtInboundLane, MaximalOutboundPayloadSize, InboundRelayer, TargetHeaderChain, and SourceHeaderChain were removed.
Now, you only need to provide specific bridging chain configurations for ThisChain, BridgedChain, and BridgedHeaderChain.

If you previously specified implementations for the bp_runtime::Chain* traits, those will fit here exactly, for example:

type ThisChain = bp_bridge_hub_rococo::BridgeHubRococo;
type BridgedChain = bp_bridge_hub_westend::BridgeHubWestend;
type BridgedHeaderChain = pallet_bridge_parachains::ParachainHeaders<
      Runtime,
      BridgeParachainWestendInstance,
      bp_bridge_hub_westend::BridgeHubWestend,
>;

[#4885]: Removed pallet::getter usage from the pallet-transaction-storage

This PR removed pallet::getters from pallet-transaction-storages storage items.
When accessed inside the pallet, use the syntax StorageItem::<T, I>::get().

[#4777]: XCM builder pattern allows clear_origin before buy_execution.

Added clear_origin as an allowed command after commands that load the holdings register, in the safe xcm builder.
Previously, although it's logically allowed, an XCM could not be built like this:

let xcm = Xcm::builder()
    .withdraw_asset((Parent, 100u128))
    .clear_origin()
    .buy_execution((Parent, 1u128))
    .deposit_asset(All, [0u8; 32])
    .build();

You had to use the unsafe_builder.
Now, it's allowed using the default builder.

[#3286]: Assets: can_decrease/increase for destroying asset is not successful

Functions can_decrease and can_increase do not return successful consequence results for assets undergoing destruction; instead, they return the UnknownAsset consequence variant.
This update aligns their behavior with similar functions, such as reducible_balance, increase_balance, decrease_balance, and burn, which return an AssetNotLive error for assets in the process of being destroyed.

[#4840]: Removed pallet::getter usage from pallet-membership

This PR removed the pallet::getters from pallet-membership.
The syntax StorageItem::<T, I>::get() should be used instead.

[#4871]: Removed pallet::getter usage from the pallet-tips

This PR removed pallet::getters from pallet-tipss storage items.
When accessed inside the pallet, use the syntax StorageItem::<T, I>::get().

Changelog for Node Operator

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

[#5153]: Grandpa: Ensure voting doesn't fail after a re-org

Ensures that a node is still able to vote with Grandpa, when a re-org happened that changed the best chain. This ultimately prevents that a network may runs into a potential finality stall.

[#4097]: Introduce experimental slot-based collator

Introduces an experimental collator that is fit fot elastic-scaling.
It can be activated on test-parachain and polkadot-parachain binaries via --experimental-use-slot-based flag. The current implementation is MVP status and purely for testing. Behaviour can change any time and should not be relied upon in environments with
any stability requirements.

[#5040]: Update libp2p-websocket to v0.42.2

Fixes a panic coming from the libp2p-websocket which stops the node.
This fix ensures that polling multiple time after error results in an error instead of panics.

[#4663]: Add elastic scaling MVP guide

Adds a guide for parachains that want to use the experimental elastic scaling MVP.
Will be viewable at: https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/guides/enable_elastic_scaling_mvp/index.html

[#4932]: Remove relay-chain consensus authoring support for asset-hub chains from polkadot-parachain.

The polkadot-parachain node had special handling for asset-hub parachains. They started out using relay-chain consensus and later migrated to Aura as soon as it became available. The codepath for authoring with relay chain consensus has been removed, since all asset hub chains have long migrated.

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.

[#4978]: Add MAX_INSTRUCTIONS_TO_DECODE to XCMv2

Added a max number of instructions to XCMv2. If using XCMv2, you'll have to take this limit into account.
It was set to 100.

[#4566]: [pallet_contracts] Add support for transient storage in contracts host functions

This PR implements transient storage, which behaves identically to regular storage but is kept only in memory and discarded after every transaction.
This functionality is similar to the TSTORE and TLOAD operations used in Ethereum.
The following new host functions have been introduced: get_transient_storage, set_transient_storage, take_transient_storage, clear_transient_storage and contains_transient_storage.
These functions are declared as unstable and thus are not activated.

[#4888]: Allow any asset over the bridge lane between the two Asset Hubs

Allow all Rococo-native, Westend-native and Ethereum-native assets to flow over the bridge between the Rococo and Westend AssetHubs.

On Rococo Asset Hub, we allow Westend Asset Hub to act as reserve for any asset
native to the Westend ecosystem.
We also allow Ethereum contracts to act as reserves for the foreign assets identified by the same respective contracts locations (on the other side of Snowbridge).

On Westend Asset Hub, we allow Rococo Asset Hub to act as reserve for any asset
native to the Rococo or Ethereum ecosystems (practically providing Westend access to Ethereum assets through double bridging: Ethereum <> Rococo <> Westend).

[#4563]: Try State Hook for Bounties.

Invariants for storage items in the bounties pallet. Enforces the following Invariants:
1.BountyCount should be greater or equals to the length of the number of items in Bounties.
2.BountyCount should be greater or equals to the length of the number of items in BountyDescriptions.
3. Number of items in Bounties should be the same as BountyDescriptions length.

[#4738]: Add CheckMetadata SignedExtension to Rococo and Westend Coretime chains

This brings support for the new Ledger app and similar hardware wallets to the Coretime Chain on Rococo and Westend. These hardware wallets will be able to decode the transaction using the metadata. The runtime will ensure that the metadata used for this decoding process is correct and that the online wallet did not try to trick you.

Rust compiler versions

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

  • Rust Stable: "1.77.0"

Runtimes

The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.15.0 and rustc 1.77.0 (aedd173a2 2024-03-17).

Rococo

🏋️ Runtime size:             1.913 MB (2,005,448 bytes)
🗜 Compressed:               Yes, 78.63%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
🔥 Core version:             rococo-1015000 (parity-rococo-v2.0-0.tx26.au0)
🗳️ system.setCode hash:      0x3f749bbd8e64f6ec8e2bbd6471bd56d7abc150806364cf0c02c8a7e4e2b38828
🗳️ authorizeUpgrade hash:    0x50b21f76bbf1553770e246d51124100df9c06476a0e91bf61108df7ec84f48a4
🗳️ Blake2-256 hash:          0x0ce6518b38ec0fd1f09b9e746b52400f8f82ad77d51b98dcfdcb5374feae2c98
📦 IPFS:                     Qmce5U3fxbKWtUW7vFyeEr3opHvg6HfB7nd2aF6NugXyWA

Rococo Assethub

🏋️ Runtime size:             1.373 MB (1,439,393 bytes)
🗜 Compressed:               Yes, 80.30%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
🔥 Core version:             statemine-1015000 (statemine-0.tx16.au1)
🗳️ system.setCode hash:      0x52ee6c1c59296d028f2ef2829bdcb459f3d9ca987cca942f5dbd9e97cb60d497
🗳️ authorizeUpgrade hash:    0xb847b1715231150b65fdc208da05fa21fb37b8e5881456a473b9d25bec76e266
🗳️ Blake2-256 hash:          0x6ecd9b2d10d0658a632893272e66363a0a080e190a445043bef6733b0d335efd
📦 IPFS:                     QmR4wDH8umqL6QsQeRMUMSvqkHgUFtHJ3uadWg4WK167WR

Rococo Bridgehub

🏋️ Runtime Size:          1.37 MB (1437433 bytes)
🔥 Core Version:          bridge-hub-rococo-1015000 (bridge-hub-rococo-0.tx5.au1)
🗜 Compressed:            Yes: 78.29%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x27d8fedcf29c2080c706933b252c5cb57f034f17d9c8affb7cd9d0e3bd20beed
🗳️ authorizeUpgrade hash: 0x8ed691fd441550ea8ee9e0deefee2afb6f641baa056c85a0c6510ad020d30861
🗳️ Blake2-256 hash:       0x7c119c3617c96696585e1075f726b45026b5f0d2e8d9fdf2424e2f25ca97c2eb
📦 IPFS:                  QmX81zt5WmKVS7m8VN2N7fQM9heGfq1iAD4KhUfXNUVmqa

Rococo Contracts

🏋️ Runtime Size:          1.46 MB (1529099 bytes)
🔥 Core Version:          contracts-rococo-1015000 (contracts-rococo-0.tx7.au1)
🗜 Compressed:            Yes: 80.15%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x126f64988245f5d570443d823600b6abd6362dce7a88c0578bad29e1d6985430
🗳️ authorizeUpgrade hash: 0xa48b9db725e1228dcc4f58b46808fa1f1a5d9ba7f0a552c94d7779f6e150f828
🗳️ Blake2-256 hash:       0xdeacc101a10ce5ea15be1918f120f7372e3ade679975e99f67fa5591460146d0
📦 IPFS:                  QmTDVK71hSVfb4kV4dExPbeC64pcBC5B8rue1TuLWzxkz9

Rococo Coretime

🏋️ Runtime Size:          1.02 MB (1073898 bytes)
🔥 Core Version:          coretime-rococo-1015000 (coretime-rococo-0.tx2.au1)
🗜 Compressed:            Yes: 78.86%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x976cac3add76de43b284dc50756763ab85cc039e38595f9b889bb9d955cb70f4
🗳️ authorizeUpgrade hash: 0xda8e4176b15193c3f1faf95108cc216dba02cfa08a32d432029cc9d9f18ea15b
🗳️ Blake2-256 hash:       0x1341e1afe082b9b7b7ef1e1558fcad4207ff039b47d89538e6e2f723eadad417
📦 IPFS:                  QmenV9nBVYRHDeLGNktikxXiYA71oEuaALy9EtmRjsTWSx

Rococo People

🏋️ Runtime Size:          1.00 MB (1051628 bytes)
🔥 Core Version:          people-rococo-1015000 (people-rococo-0.tx1.au1)
🗜 Compressed:            Yes: 78.92%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x40fff71666bbc1ac52cfde2f29f7514c78fa3ebbdcffd85566eb330fe3a19d1e
🗳️ authorizeUpgrade hash: 0x6b36ac6f69993443d26b753fdbde22ce5033fa8de44865ed11033e558475fba4
🗳️ Blake2-256 hash:       0xefb29caed3fd582c5b96b28adf85b32dbb3c74c9e51efe92b0238dd31a6d4e14
📦 IPFS:                  QmdVFWdc4dAN1Q8WHmTAM5x9KHRL29aTbDg97We96Suczh

Westend

🏋️ Runtime size:             1.857 MB (1,947,504 bytes)
🗜 Compressed:               Yes, 78.99%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
🔥 Core version:             westend-1015000 (parity-westend-0.tx26.au2)
🗳️ system.setCode hash:      0x0d4c4972a9da597197ee15a2a5e062998abee3df732b81f1a08c781dc7b72ff7
🗳️ authorizeUpgrade hash:    0x8339f575063092bef3392f8b983b4a39bbf89e382954055dc6d9e51704d5d94b
🗳️ Blake2-256 hash:          0x8a1fd0183a88a84fd56f22a6c39e00f910401cfbcf351765901db37d26ac545f
📦 IPFS:                     QmR2tu4ghndFEXW9vooPpEs7a6mF54yzRKZiZ46McB6daE

Westend Assethub

🏋️ Runtime size:             1.373 MB (1,439,393 bytes)
🗜 Compressed:               Yes, 80.30%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
🔥 Core version:             statemine-1015000 (statemine-0.tx16.au1)
🗳️ system.setCode hash:      0x52ee6c1c59296d028f2ef2829bdcb459f3d9ca987cca942f5dbd9e97cb60d497
🗳️ authorizeUpgrade hash:    0xb847b1715231150b65fdc208da05fa21fb37b8e5881456a473b9d25bec76e266
🗳️ Blake2-256 hash:          0x6ecd9b2d10d0658a632893272e66363a0a080e190a445043bef6733b0d335efd
📦 IPFS:                     QmR4wDH8umqL6QsQeRMUMSvqkHgUFtHJ3uadWg4WK167WR

Westend Bridgehub

🏋️ Runtime Size:          1.09 MB (1144944 bytes)
🔥 Core Version:          bridge-hub-westend-1015000 (bridge-hub-westend-0.tx5.au1)
🗜 Compressed:            Yes: 78.58%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x873185a09e2df9d50364584ff806a896a6ceb5799405dede13b247303e056b77
🗳️ authorizeUpgrade hash: 0x2cb2baf40e7468141d6ad959d656555f0efc2fcaf7eb5560291e798e5980e7b4
🗳️ Blake2-256 hash:       0x09dd121038bab83dc205570f51124c2d1442424dadcefabbefcf2dbf4a779f03
📦 IPFS:                  QmNPnD2GCySyvEP37VUr39S75vbLPWTTeJS7xCR73q5T9Q

Westend Collectives

🏋️ Runtime Size:          1.21 MB (1269831 bytes)
🔥 Core Version:          collectives-westend-1015000 (collectives-westend-0.tx6.au1)
🗜 Compressed:            Yes: 79.96%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x10bd4212803ce583ebca14fa60d4ff48222847103e3db214b20f4d1cd7b1d87e
🗳️ authorizeUpgrade hash: 0x2aabe0137dcfa5f33290e65ffb6b46f8db0a0dce5a19dc79ebb2590cd2926d80
🗳️ Blake2-256 hash:       0x6d3f09f154c481693ae6d7004ca7556c19297e28b1c31b4a74fe7c46f6d0514c
📦 IPFS:                  QmZv5wD71WsGtzgiyCKXiYzy16QrmJ2GisgM5gFaxHswAV

Westend Coretime

🏋️ Runtime Size:          1.02 MB (1066682 bytes)
🔥 Core Version:          coretime-westend-1015000 (coretime-westend-0.tx2.au1)
🗜 Compressed:            Yes: 78.86%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x8b49304d8bc7d9baf6600704c01e4a3dcd79ab033bbed29c64aac6ddb34c61ab
🗳️ authorizeUpgrade hash: 0x197fd8fabf1e9527f2d43d6ff9a0053256ddaae1f14a80c82f20701a28f81193
🗳️ Blake2-256 hash:       0x538bdd12a141a2ddf06611d23f7d8266cbe283132ddfb13a8de18bc307769b7b
📦 IPFS:                  QmT8pijop2JbF6P7dZijrzu3wPVegx5jQc9gR41F1pvMsQ

Westend Glutton

🏋️ Runtime Size:          616.72 kB (631519 bytes)
🔥 Core Version:          glutton-westend-1015000 (glutton-westend-0.tx1.au1)
🗜 Compressed:            Yes: 76.5%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x0af64debe5babefe9e6c5d6c442488cf504594f99553cc21d04a40ea791a8457
🗳️ authorizeUpgrade hash: 0x0b275eb737bb06d39f8b57adc5900b6c7d84936097dde732f0745ba442095a9e
🗳️ Blake2-256 hash:       0xe9e64017efc31de723157f3e1bac1aaadadfb861ab187b77da3be768329a3acc
📦 IPFS:                  QmQ1an2VgHvcmrtTXVbedqDHMWVmyiwvmMZZzerbD7uVzU

Westend People

🏋️ Runtime Size:          1.01 MB (1054891 bytes)
🔥 Core Version:          people-westend-1015000 (people-westend-0.tx1.au1)
🗜 Compressed:            Yes: 78.85%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x73b2f9dcdb28100ccaef6d68ce5e99ca56b5eae38d55ea61caf14090e108e2f0
🗳️ authorizeUpgrade hash: 0x2696feddf1c9ebec97dba0b46e3ddbec1f054d2d7f4d24c0daf9da7e19abe757
🗳️ Blake2-256 hash:       0xde05888ce94535035be3cdbcf527680dab30a8f2ed2bb14e958b2dce53e1d792
📦 IPFS:                  QmZFvZjzPa3ECaTsrgZ4dawrrWgq5CvjMnwM634wPcL19z

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

or

docker pull parity/polkadot-parachain:stable

Don't miss a new polkadot-sdk release

NewReleases is sending notifications on new releases.