Skip to content

Polkadot v1.12.0

Compare
Choose a tag to compare
@github-actions github-actions released this 21 May 13:29
· 6 commits to release-polkadot-v1.12.0 since this release
b401690

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::getters from pallet-authority-discoverys 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::getters from pallet-contracts-mock-networks 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