Polkadot stable2407
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_extrinsic
and 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::getter
s from pallet-vesting
s 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::getter
s from pallet-babe
s 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::getter
s 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::getter
s 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::getter
s from pallet-transaction-storage
s 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::getter
s 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::getter
s from pallet-tips
s 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