Polkadot v1.12.0
This release contains the changes from polkadot-v1.11.0
to polkadot-v1.12.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.
[#4442]: Improve mock relay in --dev mode to support async backing
Support async backing in --dev mode. Improve the relay mock MockValidationDataInherentDataProvider to mach expectations of async backing runtimes.
[#4185]: State trie migration on asset-hub westend and collectives westend
On westend and rococo asset-hub and collectives westend the state version is switched to one
and a manual migration will be operate as describe in https://hackmd.io/JagpUd8tTjuKf9HQtpvHIQ
2.2 Running the signed migration
with account 5F4EbSkZz18X36xhbsjvDNs6NuZ82HyYtq5UiJ1h9SBHJXZD
.
[#4157]: Bridge: added free headers submission support to the substrate-relay
Bridge finality and parachains relayer now supports mode, where it only submits some headers
for free. There's a setting in a runtime configuration, which introduces this "free header"
concept. Submitting such header is considered a common good deed, so it is free for relayers.
[#4457]: sc-service: export all public functions
A PR #3166 converted private functions used in spawn_tasks()
to public to make it possible to have custom
implementation of the spawn_tasks()
. However, not all functions were included in the list of exports from
sc-service
crate.
[#4211]: Re-prepare PVF artifacts only if needed
When a change in the executor environment parameters can not affect the prepared artifact,
it is preserved without recompilation and used for future executions. That mitigates
situations where every unrelated executor parameter change resulted in re-preparing every
artifact on every validator, causing a significant finality lag.
[#3962]: Change fork calculation algorithm.
This PR changes the fork calculation and pruning algorithm to enable future block header pruning.
During the finalization of the block we prune known stale forks, so forks are pruned faster.
[#4035]: Prospective parachains rework
Changes prospective-parachains from dealing with trees of unincluded candidates to maintaining only candidate chains
and a number of unconnected candidates (for which we don't yet know the parent candidate but which otherwise seem potentially viable).
This is needed for elastic scaling, in order to have full throughput even if a candidate is validated by a backing group before the parent candidate
is fetched from the other backing group.
Also simplifies the subsystem by no longer allowing parachain cycles.
[#4329]: Deprecate NativeElseWasmExecutor
Deprecates the NativeElseWasmExecutor
as native execution is already
discouraged and should be removed entirely. The executor should be
replaced by WasmExecutor
which can be found in sc-executor
.
The NativeElseWasmExecutor
will be removed at the end of 2024.
[#4295]: Make parachain template async backing ready
Promotes the parachain template (both node and runtime) to use async backing APIs so that
developers starting a new project from the template could get async backing integrated out
of the box.
[#3444]: Rate-limiting of statement distribution v2 requests to 1 per peer
A new malicious node variant that sends duplicate statement
distribution messages to spam other peers.
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).)
[#4220]: Refactor XCM Simulator Example
This PR refactors the XCM Simulator Example to improve developer experience when trying to read and understand the example. 3 monolithic files have been broken down into their respective components across various modules. No major logical changes were made.
[#4364]: Fix dust unbonded for zero existential deposit
When a staker unbonds and withdraws, it is possible that their stash will contain less currency than the existential deposit. If that happens, their stash is reaped. But if the existential deposit is zero, the reap is not triggered. This PR adjusts pallet_staking to reap a stash in the special case that the stash value is zero and the existential deposit is zero.
[#4311]: Not allow reap stash for virtual stakers.
Add guards to staking dispathables to prevent virtual stakers to be reaped.
[#4312]: Add Deposited
/Withdrawn
events for pallet-assets
New events were added to pallet-assets
: Deposited
and Withdrawn
. Make sure
to cover those events on tests if necessary.
[#4414]: Rococo Asset Hub: undeploy state-trie migration
The state-trie migration on the Rococo Asset Hub is completed and is now removed.
[#3865]: Balances: add failsafe for consumer ref underflow
Pallet balances now handles the case that historic accounts violate a invariant that they should have a consumer ref on reserved > 0
balance.
This disallows such accounts from reaping and should prevent TI from getting messed up even more.
[#4346]: Allow for 0 existential deposit in benchmarks for pallet_staking, pallet_session, and pallet_balances
Changes were made to benchmarks for pallet_staking
, pallet_session
, and pallet-balances
to accommodate runtimes with 0 existential deposit. This should not affect the vast majority of runtimes. For runtimes with 0 existential deposit, the benchmarks for pallet_staking
and pallet_session
will still fail when using U128CurrencyToVote
in the pallet-staking
config; developers can use or write another CurrencyToVote
implementation for benchmarking to work around this.
[#3872]: XcmDryRunApi - Runtime API for dry-running extrinsics and XCM programs.
This PR introduces a new runtime API, the XcmDryRunApi, that allows dry-running
extrinsics and XCM programs to get their execution effects.
These effects include:
- Local execution result, either pass or fail
- Emitted events
- Forwarded XCMs
- In the case of extrinsics, the XCM program that they execute
This API can be used on its own to test extrinsics or XCM programs,
or used alongside the XcmPaymentApi to estimate execution and delivery
fees.
This PR also adds a new configuration item to XCM: XcmRecorder.
This can be set to either (), the xcm pallet, or some custom implementation.
If set to (), the dry run API will not return the local XCM program executed
by running an extrinsic.
After this PR, it is necessary to add the new configuration item to your xcm
configs.
[#4281]: Add support for versioned notification for HRMP pallet
The configuration of the HRMP pallet has been expanded to include the VersionWrapper
type,
which controls the encoding of XCM notifications related to the opening/closing of HRMP channels.
If your runtime does not concern itself with the XCM version used for notifications,
you can set it as type VersionWrapper = ()
to always use the latest XCM.
If your runtime does care about the XCM version when sending to child parachains,
you can provide an instance of the pallet_xcm
with type VersionWrapper = XcmPallet
,
which can manage XCM versions for destinations.
[#3904]: Introduce pallet-delegated-staking
Adds a new pallet delegated-staking
that allows delegators to delegate their funds to agents who can stake
these funds on behalf of them. This would be used by Nomination Pools to migrate into a delegation staking based
pool.
[#4406]: Adds benchmarking and try-runtime support in polkadot-sdk-frame
crate
Adds benchmarking and try-runtime support in polkadot-sdk-frame
crate
[#4091]: Removed pallet::getter
usage from the authority-discovery pallet
This PR removed pallet::getter
s from pallet-authority-discovery
s storage items.
When accessed inside the pallet, use the syntax StorageItem::<T, I>::get()
.
When accessed outside the pallet, use the getters current_authorities() and next_authorities() instead.
[#4326]: CheckWeight checks for combined extrinsic length and proof size
The CheckWeight
SignedExtension
will now perform an additional check. The extension was verifying the extrinsic length and
weight limits individually. However, the proof size dimension of the weight and extrinsic length together are bound by the PoV size limit.
The CheckWeight
extension will now check that the combined size of the proof and the extrinsic lengths will not
exceed the PoV size limit.
[#4034]: Introduces TypeWithDefault<T, D: Get<T>>
This PR introduces a new type TypeWithDefault<T, D: Get<T>>
to be able to provide a
custom default for any type. This can, then, be used to provide the nonce type that returns
the current block number as the default, to avoid replay of immortal transactions.
[#3964]: Burn extrinsic call and fn burn_from
Preservation
argument
pallet-balances extrinsic calls has been expanded with burn
call.
An argument flag is allowed to specify whether the account should be kept alive or not.
This in turn required a change to the fungible's pub trait Mutate
burn_from
function which now
also accepts Preservation
as an argument.
In order to keep the behavior same as before, developers should simply specify Preservation::Expandable
.
[#4461]: Fix extrinsics count logging in frame-system
Fixes the issue of the number of extrinsics in the block always being 0 in the log of frame-system.
[#4175]: Snowbridge: deposit extra fee to beneficiary on Asset Hub
Snowbridge transfers arriving on Asset Hub will deposit both asset and fees to beneficiary so the fees will not get trapped.
Another benefit is when fees left more than ED, could be used to create the beneficiary account in case it does not exist on asset hub.
[#4102]: Bridge: make some headers submissions free
Adds FreeHeadersInterval
configuration constant to the pallet_bridge_grandpa
.
Transactions that improve best known header by at least FreeHeadersInterval
headers
are now free for the submitter. Additionally, we allow single free parachain header
update per every free relay chain header. Bridge signed extensions are adjusted
to support that new scheme. Bridge runtime APIs are extended to support that new
scheme. Bridge fees are decreased by ~98% because now they do not include cost of
finality submissions - we assume relayers will be submitting finality transactions
for free.
[#4349]: Store Header in RemoteExt Snapshot
Replaces the block hash in the RemoteExt snapshot with the block header.
[#4213]: [pallet-contracts] stabilize xcm_send and xcm_execute
xcm_send
and xcm_execute
are currently marked as unstable. This PR stabilizes them.
[#4417]: Removed pallet::getter
usage from pallet-contracts-mock-network
This PR removed the pallet::getter
s from pallet-contracts-mock-network
s storage items.
[#4302]: migrations: take() should consume read and write operation weight
take()
consumes only 1 read worth of weight in single-block-migrations
example, while take()
is get() + kill()
,
i.e should be 1 read + 1 write. Since this could mislead developers writing migrations following the example,
this PR fixes the weight calculation.
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
[#4394]: Add Kusama People Chain genesis chainspec
Adds the Kusama People Chain chain spec with the genesis head data and add to
polkadot-parachain
.
[#4426]: Remove warning about BadCertificate
The node was printing the following warning from time to time:
Sending fatal alert BadCertificate
This is not an user error and thus, the warning will now not be printed
anymore.
[#3701]: add option to whitelist peers in rpc rate limiting
This PR adds two new CLI options to disable rate limiting for certain ip addresses and whether to trust "proxy headers".
[#3444]: Rate-limiting of statement distribution v2 requests to 1 per peer
Added rate-limiting in the statement distribution request-response
protocol. Requesters will not issue another request to a peer if one
is already pending with that peer and receiving nodes will reject
requests from peers that they are currently serving.
This should reduce the risk of validator-validator DoS attacks and
better load-balance statement distribution.
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.
[#4312]: Add Deposited
/Withdrawn
events for pallet-assets
New events were added to pallet-assets
: Deposited
and Withdrawn
. These indicate
a change in the balance of an account.
[#4185]: State trie migration on asset-hub westend and collectives westend
On westend and rococo asset-hub and collectives westend the parachain state will migrate
and warpsync will be broken during migration.
[#3872]: XcmDryRunApi - Runtime API for dry-running extrinsics and XCM programs.
This PR introduces a new runtime API, the XcmDryRunApi, that allows dry-running
extrinsics and XCM programs to get their execution effects.
These effects include:
- Local execution result, either pass or fail
- Emitted events
- Forwarded XCMs
- In the case of extrinsics, the XCM program that they execute
This API can be used on its own to test extrinsics or XCM programs,
or used alongside the XcmPaymentApi to estimate execution and delivery
fees.
[#4202]: Treat XCM ExceedsStackLimit errors as transient in the MQ pallet
Fixes an issue where the MessageQueue can incorrectly assume that a message will permanently fail to process and disallow retrial of it.
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.85 MB (1943800 bytes)
🔥 Core Version: rococo-1012000 (parity-rococo-v2.0-0.tx26.au0)
🗜 Compressed: Yes: 78.76%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x89bbc8fe950571d1946de6775679494253b682ffa35c4dfc0756c615e912646b
🗳️ authorizeUpgrade hash: 0x315809ef0b91593bea670c3a0cca6cc63754c77e532421ccfee22ef11336257b
🗳️ Blake2-256 hash: 0x63710598c3c0243ef6f81d1e3b747d868397978a4d7ecd9a44dc46d20b40c544
📦 IPFS: QmNxu1kcnStM1vw41wSoSNnkvmPhtfLJWhUNqdgQVvE8F9
Rococo Assethub
🏋️ Runtime Size: 1.33 MB (1390290 bytes)
🔥 Core Version: statemine-1012000 (statemine-0.tx15.au1)
🗜 Compressed: Yes: 80%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xac8cc997003ffdda2a3013bc0ca07e803a42d9eecd7445bd2cc9904f33a06a07
🗳️ authorizeUpgrade hash: 0x2aacfa8a706cd424fabde4791c2687df55b129720fae83db197444796df24d11
🗳️ Blake2-256 hash: 0x958227a6e1e1d9f73c6e9383c4e1048ce1ea0945f74f751aa8b9d3d5b4c7ebdd
📦 IPFS: Qmbmq8ED79CgWaAtmKP6HZ6aAStZNFWaadjkwYRGYtvxfo
Rococo Bridgehub
🏋️ Runtime Size: 1.32 MB (1383597 bytes)
🔥 Core Version: bridge-hub-rococo-1012000 (bridge-hub-rococo-0.tx5.au1)
🗜 Compressed: Yes: 78.19%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xc39b2b03f667a58213e120353c90113a703c5c3a43fb0e2bbcfdfec90a1e23f1
🗳️ authorizeUpgrade hash: 0xce324e56939a7ba404e5da4e6b42e12fea540f60ee997d2c0f589d11db39af97
🗳️ Blake2-256 hash: 0xab8049b598f22bef6ef34bd16a17e00dce93fc9c10113f2ac3f704baba533ec3
📦 IPFS: QmbZG9cYPqQF3MkpYQ7wqmMXQ3QFCLYr34ujvVdZetpuzR
Rococo Contracts
🏋️ Runtime Size: 1.25 MB (1307808 bytes)
🔥 Core Version: contracts-rococo-1012000 (contracts-rococo-0.tx7.au1)
🗜 Compressed: Yes: 79.49%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x5f22541ab2559d26baa960938ff9a798d1071b0a2eee83bd656d271662f03d66
🗳️ authorizeUpgrade hash: 0x3551877e0e0a885923623b275b96788205077389e2509e6e61d31a38903c7250
🗳️ Blake2-256 hash: 0xb119a6530ff97a616b7dd02e0d7a0241535890eeb71f48e6d2eb202551e4d4d0
📦 IPFS: QmeoXzFZHedLLDX8ePKVAApwWFjhQk3wxEaQ5KRn5sof8N
Rococo Coretime
🏋️ Runtime Size: 969.38 kB (992640 bytes)
🔥 Core Version: coretime-rococo-1012000 (coretime-rococo-0.tx1.au1)
🗜 Compressed: Yes: 78.59%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x41e93b52235de85117a4d513aea7fad4fa12cd7fec170e48331f7215ce84fa8c
🗳️ authorizeUpgrade hash: 0x3983391d792a3e56a2100adf9173703365d79a20c2d4893d1fe96b7740bc7992
🗳️ Blake2-256 hash: 0xf438e7d29cc1ffd7cd3bfad879b5dee3e9c1794ce00c976d440aefed87db1139
📦 IPFS: QmXMtmvtQD8zH3XEKNx8CDGFjorouP2Tt3VqwPeWMdmqd8
Rococo People
🏋️ Runtime Size: 955.84 kB (978785 bytes)
🔥 Core Version: people-rococo-1012000 (people-rococo-0.tx1.au1)
🗜 Compressed: Yes: 78.79%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x9145ea79796ac6b8f0df11b01d6d50e7f66982f1f2268724b4e58141c1b4ba14
🗳️ authorizeUpgrade hash: 0xfce0cb9376c1be9a0127e26066a33e23f560d52c0db7b621cb4d70a02fdbc45a
🗳️ Blake2-256 hash: 0xaaacc23fedab5b9bee2749ca12abd1108de573a28ae5b61c918d12a0bec1f499
📦 IPFS: QmRZXLeCSuXmQhiea2A9SAW2TDtV8cHWGNVB4JynjbzLw9
Westend
🏋️ Runtime Size: 1.78 MB (1867240 bytes)
🔥 Core Version: westend-1012000 (parity-westend-0.tx26.au2)
🗜 Compressed: Yes: 79.13%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xb5b4b9cda7193b70e3868327b2687586c42e46adb04731548cd6358f734bd87a
🗳️ authorizeUpgrade hash: 0x292d6f73f46b5e0941713c91dfbc7e16a35fa78ac490ac70a41ee05c53865ae5
🗳️ Blake2-256 hash: 0xdb12035957b7058c1e5e7e0f6a4fb45d61db72b3b109063a3431552a5f03231e
📦 IPFS: QmUeiDf2Y6QDeHB6472j6mqsDP3m3PWaZy5eCNDqYS69Mk
Westend Assethub
🏋️ Runtime Size: 1.34 MB (1409593 bytes)
🔥 Core Version: westmint-1012000 (westmint-0.tx15.au1)
🗜 Compressed: Yes: 80.03%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xf3d898a8a2f3a039346126b4752f8a93c4ea916093b34f9ad5bbaa9ada7fce2a
🗳️ authorizeUpgrade hash: 0xfa5d3bda4213cb44b53545d8f3ff9a72cb4b269b63655b426615c3fda00f8036
🗳️ Blake2-256 hash: 0x46afc87debac40956d0a1805bd488b52363e0496e0b12e45bb3b35c0c95997bb
📦 IPFS: Qmec29b1Kgu9ScyAP36CiiEZYmLkXu5SjWjMAkjTngE7bE
Westend Bridgehub
🏋️ Runtime Size: 1.04 MB (1089911 bytes)
🔥 Core Version: bridge-hub-westend-1012000 (bridge-hub-westend-0.tx5.au1)
🗜 Compressed: Yes: 78.52%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x47723bb29f326b615de852439f90316f8162853c12fa33db5e8848165a96de8f
🗳️ authorizeUpgrade hash: 0xa4513a9e7e834a979e131f5a80b372f4567446fbb5a3252a211956a5e91af13e
🗳️ Blake2-256 hash: 0xa2afb36a29236e1b942161c9624d37fa34399f8952456fe19562ff896913fe1b
📦 IPFS: QmciqZXRx3ozuwv8s41pdsQw6roeQ4k3tbJ1ucE55GQPxf
Westend Collectives
🏋️ Runtime Size: 1.13 MB (1188124 bytes)
🔥 Core Version: collectives-westend-1012000 (collectives-westend-0.tx6.au1)
🗜 Compressed: Yes: 79.66%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x478045a800c54fd425262f89e008b8631c616166d2fef91dcd48aaeae0329cbd
🗳️ authorizeUpgrade hash: 0x11c3a2365e856218c5c06385192957e662072118b5088a7603d0fbf1d1234825
🗳️ Blake2-256 hash: 0xade6c1f2f834de92f713dd648ad9fa063f3e073550a0d6976e1c0238b8a66947
📦 IPFS: Qmev6PkacH9ctqva4iqN9u5sw2grDQujMBKXrSPoXysKub
Westend Coretime
🏋️ Runtime Size: 961.10 kB (984165 bytes)
🔥 Core Version: coretime-westend-1012000 (coretime-westend-0.tx1.au1)
🗜 Compressed: Yes: 78.73%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x36963852bbbc7ab65b723373fef4fa1d66c000555ca761e54022eb79894fc935
🗳️ authorizeUpgrade hash: 0x6f1a4f23bbcc1948fbdef604972e60726f3a8d16aa002e12cb52d05133a4057e
🗳️ Blake2-256 hash: 0x16c9ca2f327e19e64c1922f82649a85cf9843915855f40fa38c342923b518dd1
📦 IPFS: QmeSkGbWsUfMGNxY5wHxs1DRju2vWgLxbHg8UTyqiK1dyL
Westend Glutton
🏋️ Runtime Size: 586.09 kB (600155 bytes)
🔥 Core Version: glutton-westend-1012000 (glutton-westend-0.tx1.au1)
🗜 Compressed: Yes: 76.32%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x1f319b0f001650a8912c92386b166738f0918a8f83071d441d2071242a7ed209
🗳️ authorizeUpgrade hash: 0xd4d1057397be68636734feb790ccdbe3936e02ec84340f7a06fdab982a80a1da
🗳️ Blake2-256 hash: 0xb052af91539456778278ba639f0e1747ccde644cdbb32888179d380a0fd72c20
📦 IPFS: QmVgKdEJzBD7jkCHn1vzTfBLUDAXnzy5EW2LNqynYJ5Pn8
Westend People
🏋️ Runtime Size: 956.12 kB (979064 bytes)
🔥 Core Version: people-westend-1012000 (people-westend-0.tx1.au1)
🗜 Compressed: Yes: 78.81%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x44132c7b465616a3ac0a8d4949ac0fd2324dff59087cc8bdbd14695df7c7cf11
🗳️ authorizeUpgrade hash: 0x18b9d8d99f3ae4928b2422d743c5e6b1c707d09bb1f4f7d3475f80d6a6fa72b2
🗳️ Blake2-256 hash: 0x3676a6f3a205430e116887cd3e8855fa1527e8eca5ad06abd80ffb61daf558a2
📦 IPFS: QmWUaiGKM7NTf5JytPvD9GYRMYxjj7PfFiuXxdNhfHycPB
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:latest
or
docker pull parity/polkadot-parachain:latest