Skip to content

Polkadot v1.12.0-rc42

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 30 May 13:43
7aa822d

This release contains the changes from polkadot-v1.12.0 to v1.12.0-rc42.

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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#4457]: sc-service: export all public functions

A PR paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

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

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#4406]: Adds benchmarking and try-runtime support in polkadot-sdk-frame crate

Adds benchmarking and try-runtime support in polkadot-sdk-frame crate

[paritytech#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.

[paritytech#4349]: Store Header in RemoteExt Snapshot

Replaces the block hash in the RemoteExt snapshot with the block header.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#4213]: [pallet-contracts] stabilize xcm_send and xcm_execute

xcm_send and xcm_execute are currently marked as unstable. This PR stabilizes them.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#4311]: Not allow reap stash for virtual stakers.

Add guards to staking dispathables to prevent virtual stakers to be reaped.

[paritytech#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.

[paritytech#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.

[paritytech#4417]: Removed pallet::getter usage from pallet-contracts-mock-network

This PR removed the pallet::getters from pallet-contracts-mock-networks storage items.

[paritytech#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.

[paritytech#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.

[paritytech#4414]: Rococo Asset Hub: undeploy state-trie migration

The state-trie migration on the Rococo Asset Hub is completed and is now removed.

Changelog for Node Operator

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

[paritytech#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".

[paritytech#4394]: Add Kusama People Chain genesis chainspec

Adds the Kusama People Chain chain spec with the genesis head data and add to
polkadot-parachain.

[paritytech#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.

[paritytech#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.

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.

[paritytech#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.

[paritytech#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.

[paritytech#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.

[paritytech#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.86 MB (1948882 bytes)
🔥 Core Version:          rococo-1012000 (parity-rococo-v2.0-0.tx26.au0)
🗜 Compressed:            Yes: 78.67%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xf1afd87f3d1f444172493cd618ef0cd04b8a79955b33e04ba8c2d1c8e08dd20c
🗳️ authorizeUpgrade hash: 0xc673f924c18554157801574de5726bb8a3ec41bd7dbd2db002505aed6ee4f953
🗳️ Blake2-256 hash:       0x4b5f75d4c901e20d804385a097b5ed491d3eb629d331bc28ead39deba4588b1f
📦 IPFS:                  QmUrUhfQfGBznuJvJ9XN9p2ah14ryUWsbzQ48KYjRCRbuG

Rococo Assethub

🏋️ Runtime Size:          1.32 MB (1382084 bytes)
🔥 Core Version:          statemine-1012000 (statemine-0.tx16.au1)
🗜 Compressed:            Yes: 80.13%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xdc84d61b7ceeac4f9b17ff5be77e5d29f7d962b1a95f1a04a702c86a9dc22e6b
🗳️ authorizeUpgrade hash: 0x069fd4abe14a53c420483ad483b9f53562cb243e175f0cdda1e43aaf3f2d7a74
🗳️ Blake2-256 hash:       0x77537192ebfb2ed738ccf906057d8b70fd2a27cd90bee5639d2c957a4953360d
📦 IPFS:                  QmdXyjeLrT1t4GMfnRNpZfxx82sBvC1RMY4dDm1jyM3cZh

Rococo Bridgehub

🏋️ Runtime Size:          1.32 MB (1387427 bytes)
🔥 Core Version:          bridge-hub-rococo-1012000 (bridge-hub-rococo-0.tx5.au1)
🗜 Compressed:            Yes: 78.17%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x3fda16efde590d266e3c3a0b8d1ab8c25612c99cbaba971a98039104149ae451
🗳️ authorizeUpgrade hash: 0x1a81b3f103abe4e1dc867093bb37c6b0ac8f624fbc12d652ab7e6624e36918fe
🗳️ Blake2-256 hash:       0x11c77292df13e1ff8f95945880ba9da30c128d8d482ccedf940bce71ef44f09b
📦 IPFS:                  QmS6Av1FXVtjcjTxSc1rGcq2pkYmjxyiEuMMDRyJJy11we

Rococo Contracts

🏋️ Runtime Size:          1.25 MB (1306891 bytes)
🔥 Core Version:          contracts-rococo-1012000 (contracts-rococo-0.tx7.au1)
🗜 Compressed:            Yes: 79.58%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x5af6227a97c209340b4d00e0c00473bd384f4b9dbcf99a08ea6477de749de4f3
🗳️ authorizeUpgrade hash: 0xaa293713d2f1efa98758fa0cc3a9fbc6928abde6baf32b465d5a91115bc35624
🗳️ Blake2-256 hash:       0xf75b53cfd4c69fd0339c05f248956e21f3c3707ce4f65e8193f38201a2e0e1d6
📦 IPFS:                  Qmb5dar4ySKMkbb9BoxzsH2hFvuQHLauEEHZEzVSUUR7qT

Rococo Coretime

🏋️ Runtime Size:          965.44 kB (988608 bytes)
🔥 Core Version:          coretime-rococo-1012000 (coretime-rococo-0.tx1.au1)
🗜 Compressed:            Yes: 78.68%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x1c8be97ad1a5264676f1c4d5ccf2683c11d9034063ddc945eed561d5710fa679
🗳️ authorizeUpgrade hash: 0xd5f0b55d4e5503ba98f7639778436c8087d4b4c8a88bc1f55329f44a212b9f42
🗳️ Blake2-256 hash:       0x3265ee97431609a1413c6ee236b6a4097d0bf2d0deec28830ac4a3235b942404
📦 IPFS:                  QmNa7nyzoCkjpj8QoP6uWji98d5UBvGVGXHxMK8HeYswjC

Rococo People

🏋️ Runtime Size:          963.67 kB (986796 bytes)
🔥 Core Version:          people-rococo-1012000 (people-rococo-0.tx1.au1)
🗜 Compressed:            Yes: 78.59%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x1d0c444bb5095095b44ba441ead19b36d639ffe04c0159d35f2e7fdc3f378db5
🗳️ authorizeUpgrade hash: 0xbf800778e7f1b841dcedf436a43a879549fc4e115bd016dfe910bc38d586cfce
🗳️ Blake2-256 hash:       0x77e2b22b7a22ed7d5a6c20f807564f48a1f8f4a75a30433fef88c0b984efd886
📦 IPFS:                  QmcWJCXSHztm3Beav1kU94Bb18JQdm7XYyXYXfoEmgXKRV

Westend

🏋️ Runtime Size:          1.81 MB (1894438 bytes)
🔥 Core Version:          westend-1012000 (parity-westend-0.tx26.au2)
🗜 Compressed:            Yes: 79.2%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x15812e926b170deaad4ab66d4f10d3d04c908b0db180a8937695383f24eaaf9d
🗳️ authorizeUpgrade hash: 0x534fd390a1fd12e854b324cab8447e13ead9cdeb7334f1c6585b3fca0305823d
🗳️ Blake2-256 hash:       0x80e64a3492217fb3148bb8d40367c463d4197b7184346b1fb23317a5c4b9defd
📦 IPFS:                  QmeZM42KWsPtFR6LwV6TM7f6kzPztQDQ7ZaMwNbrRLauCT

Westend Assethub

🏋️ Runtime Size:          1.35 MB (1418605 bytes)
🔥 Core Version:          westmint-1012000 (westmint-0.tx16.au1)
🗜 Compressed:            Yes: 80.02%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xeca3d0a0f9d06023abc686149d90a4b773465167213e771f315192c9fb725ec6
🗳️ authorizeUpgrade hash: 0x4e472b201e94f16dd006bd7406ae9d29069e6988a5ff02eb8295ca100a701566
🗳️ Blake2-256 hash:       0x9a2ebbfde03499114c40a9982a436e6407a66b883ce8412b118a55bd69bf6e7e
📦 IPFS:                  QmTrC9VJTHY7pfSARnDbrqfBT9aefe5sqtXEAr2Mq7CRK2

Westend Bridgehub

🏋️ Runtime Size:          1.04 MB (1092711 bytes)
🔥 Core Version:          bridge-hub-westend-1012000 (bridge-hub-westend-0.tx5.au1)
🗜 Compressed:            Yes: 78.54%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x158ee63df956e213219b05720aae341e5e3162ea6224d00db0c204f3be4dfce7
🗳️ authorizeUpgrade hash: 0x6c6e8cc601662130535370aa68f71ec4b98e27c32e1ebc272a89aff8c049a3d3
🗳️ Blake2-256 hash:       0x99c985b6779befd736f03f17c6f02b4f83e213d487925f92d9ec194497744cb9
📦 IPFS:                  QmURKqzn2Kj2mDtahXvYnjnNrLyVLEBvHXh8EYMAERfYLg

Westend Collectives

🏋️ Runtime Size:          1.13 MB (1188744 bytes)
🔥 Core Version:          collectives-westend-1012000 (collectives-westend-0.tx6.au1)
🗜 Compressed:            Yes: 79.7%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xf10c5ee0dbd8378296c661cf815cd9340eb6909336dff4e118d1dd789eff8aab
🗳️ authorizeUpgrade hash: 0xf5640d3e4f4df9166eba6778140c5ca56bdddeb30bbc04f696e550f8d9c537e9
🗳️ Blake2-256 hash:       0xd01081fb146a1a9d791ba99aaa15bdd57e514eb4c7f341755dce792b14cf8c6f
📦 IPFS:                  Qmcr6j3xYguqat8H9FC2a23cNT2DDExMrY4sBJ3NYKidhk

Westend Coretime

🏋️ Runtime Size:          959.66 kB (982693 bytes)
🔥 Core Version:          coretime-westend-1012000 (coretime-westend-0.tx1.au1)
🗜 Compressed:            Yes: 78.83%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x4858ada558106f781fcdc4755cb0762cb237867557072cb994b06ac5b3b10083
🗳️ authorizeUpgrade hash: 0x9c5624c1e7745e0f0574772d8e87f40171f103053a0350005062bf45790c5826
🗳️ Blake2-256 hash:       0x178e26bb8308bcfccd0189238c5e416f5d29df3ab2bcba7b6e8a0e61db0a294c
📦 IPFS:                  QmRn7H1whgggSFc3c4idr87ZftsawYJ14nLTGhfmKyECko

Westend Glutton

🏋️ Runtime Size:          585.89 kB (599953 bytes)
🔥 Core Version:          glutton-westend-1012000 (glutton-westend-0.tx1.au1)
🗜 Compressed:            Yes: 76.36%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xd49c18319fe93c6d736e00d7403731e8ff58a710d6c870c396606ff84c2bb20a
🗳️ authorizeUpgrade hash: 0x6b1ef69b74b5bcca6e10c7527fde2940718ea6e26554de7e9f8c8c926a211acd
🗳️ Blake2-256 hash:       0x4cccb336f123958887e6a0aea1aeb4e624bbfea57a205ae134306d0df5718e57
📦 IPFS:                  QmWXyYmKDqygGKt2nHnmzmnc9ZXNeEGuC5GXdhLPPXhhQb

Westend People

🏋️ Runtime Size:          965.46 kB (988630 bytes)
🔥 Core Version:          people-westend-1012000 (people-westend-0.tx1.au1)
🗜 Compressed:            Yes: 78.57%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x9420b8642214065f76725659a991ec7281e7fecee95efe2f081bc1c080b19815
🗳️ authorizeUpgrade hash: 0x7f1c3d8e071391d283951486cea484cf8f96dff75dab84095d313a440c08003c
🗳️ Blake2-256 hash:       0xd7257fb337e52f8e9fa154ffb7d73f48b3529307998d4319a751d970cc4f8881
📦 IPFS:                  QmSDDJ1AxUSswaAWu2GNKmEPVe75vhKRWBfvifrgXHsYVM

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