Skip to content

Releases: paritytech/polkadot-sdk

Polkadot stable2412-2

24 Feb 12:44
863f353
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2412-1 to polkadot-stable2412-2.

ℹ️ Please note:

This is a patch release for the latest stable version: stable2412. If your nodes are already running on this version you can consider to upgrade to it to have latest fxes.

The tag corresponding to the current patch release polkadot-stable2412-2 and matching the old pattern will be available under polkadot-v1.17.2.

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.

[#7367]: Align omni-node and polkadot-parachain versions

Aligned polkadot-omni-node & polkadot-parachain versions. There is one NODE_VERSION constant, in polkadot-omni-node-lib, used by both binaries.

[#7488]: Increase litep2p keep-alive to 10 seconds to mirror libp2p

Increase litep2p keep-alive to 10 seconds to mirror libp2p behavior.

[#7640]: Bring the latest compatibility fixes via litep2p v0.9.1

This release enhances compatibility between litep2p and libp2p by using the latest Yamux upstream version.
Additionally, it includes various improvements and fixes to boost the stability and performance of the WebSocket stream and the multistream-select protocol.

[#7504]: Enable approval-voting-parallel by default on polkadot

Enable approval-voting-parallel by default on polkadot

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

[#7605]: Fix issue with InitiateTransfer and UnpaidExecution

Fix issue where setting the remote_fees field of InitiateTransfer to None could lead to unintended bypassing of fees in certain conditions. UnpaidExecution is now appended after origin alteration. If planning to use UnpaidExecution, you need to set preserve_origin = true.
The AllowExplicitUnpaidExecutionFrom barrier now allows instructions for receiving funds before origin altering instructions before the actual UnpaidExecution. It takes a new generic, Aliasers, needed for executing AliasOrigin to see if the effective origin is allowed to use UnpaidExecution. This should be set to the same value as Aliasers in the XCM configuration.

[#7451]: omni-node: Adjust manual seal parameters

This PR restores compatibility of older runtimes with the dev mode of omni-node. Before, runtimes built without the changes in #6825 were failing.

[#7243]: transfer function Preservation is changed to Expendable in fungible and fungibles adapter

The Preservation of transfer method of fungible and fungibles adapters is changed from Preserve to Expendable. So the behavior of the TransferAsset will be consistent with the WithdrawAsset function, as in fungible and fungibles adapter.

[#7383]: Bridges small nits/improvements

This PR contains small fixes and backwards compatibility issues identified during work on the larger PR: #6906.

[#7367]: Align omni-node and polkadot-parachain versions

Aligned polkadot-omni-node & polkadot-parachain versions. There is one NODE_VERSION constant, in polkadot-omni-node-lib, used by both binaries.

[#7365]: Use checked math in frame-balances named_reserve

This PR modifies named_reserve() in frame-balances to use checked math instead of defensive saturating math.

The use of saturating math relies on the assumption that the value will always fit in u128::MAX. However, there is nothing preventing the implementing pallet from passing a larger value which overflows. This can happen if the implementing pallet does not validate user input and instead relies on named_reserve() to return an error (this saves an additional read)

This is not a security concern, as the method will subsequently return an error thanks to <Self as ReservableCurrency<_>>::reserve(who, value)?;. However, the defensive_saturating_add will panic in --all-features, creating false positive crashes in fuzzing operations.

[#7462]: Update SCALE codec indices

We need this in order to be able to update parity-scale-codec to the latest version after it's released. That's because parity-scale-codec added support for checking for duplicate indexes at compile time.

[#7437]: Remove dead code

Remove unused code

[#7307]: Bridges small nits/improvements

This PR introduces a new expected_payload_type parameter to the Bridges assert_complete_bridge_types macro.

Changelog for Node Operator

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

[#7367]: Align omni-node and polkadot-parachain versions

Aligned polkadot-omni-node & polkadot-parachain versions. There is one NODE_VERSION constant, in polkadot-omni-node-lib, used by both binaries.

[#7488]: Increase litep2p keep-alive to 10 seconds to mirror libp2p

Increase litep2p keep-alive to 10 seconds to mirror libp2p behavior.

[#7640]: Bring the latest compatibility fixes via litep2p v0.9.1

This release enhances compatibility between litep2p and libp2p by using the latest Yamux upstream version.
Additionally, it includes various improvements and fixes to boost the stability and performance of the WebSocket stream and the multistream-select protocol.

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.

Rust compiler versions

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

  • Rust Stable: "1.81.0"

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:stable2412-2

or

docker pull parity/polkadot-parachain:2412-2

Polkadot stable2409-5

13 Feb 14:29
ac431bc
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2409-4 to polkadot-stable2409-5.

ℹ️ Please note:

⚠️ This is a patch release for the previous stable version: stable2409 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2409-5 and matching the old pattern will be available under polkadot-v1.16.5.

The following crates were updated to the corresponding versions:

Changelog

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

[#7243]: transfer function Preservation is changed to Expendable in fungible and fungibles adapter

The Preservation of transfer method of fungible and fungibles adapters is changed from Preserve to Expendable. So the behavior of the TransferAsset will be consistent with the WithdrawAsset function, as in fungible and fungibles adapter.

[#7365]: Use checked math in frame-balances named_reserve

This PR modifies named_reserve() in frame-balances to use checked math instead of defensive saturating math.

The use of saturating math relies on the assumption that the value will always fit in u128::MAX. However, there is nothing preventing the implementing pallet from passing a larger value which overflows. This can happen if the implementing pallet does not validate user input and instead relies on named_reserve() to return an error (this saves an additional read)

This is not a security concern, as the method will subsequently return an error thanks to <Self as ReservableCurrency<_>>::reserve(who, value)?;. However, the defensive_saturating_add will panic in --all-features, creating false positive crashes in fuzzing operations.

[#7461]: Update SCALE codec indices

We need this in order to be able to update parity-scale-codec to the latest version after it's released. That's because parity-scale-codec added support for checking for duplicate indexes at compile time.

[#7322]: Bridges: emulated tests small nits/improvements

This PR removes the use of open_bridge_between_asset_hub_rococo_and_asset_hub_westend. This function was used in the generic test_dry_run_transfer_across_pk_bridge macro, which could cause compilation issues when used in other contexts (e.g. fellows repo).

[#7383]: Bridges small nits/improvements

This PR contains small fixes and backwards compatibility issues identified during work on the larger PR: #6906.

[#7437]: Remove dead code

Remove unused code

[#7307]: Bridges small nits/improvements

This PR introduces a new expected_payload_type parameter to the Bridges assert_complete_bridge_types macro.

Rust compiler versions

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

  • Rust Stable: "1.81.0"

Polkadot stable2407-7

06 Feb 16:45
7642d6b
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2407-6 to polkadot-stable2407-7.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2407 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2407-7 and matching the old pattern will be available under polkadot-v1.15.7.

The following crates were updated to the corresponding versions:

Changelog

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

[#7365]: Use checked math in frame-balances named_reserve

This PR modifies named_reserve() in frame-balances to use checked math instead of defensive saturating math.

The use of saturating math relies on the assumption that the value will always fit in u128::MAX. However, there is nothing preventing the implementing pallet from passing a larger value which overflows. This can happen if the implementing pallet does not validate user input and instead relies on named_reserve() to return an error (this saves an additional read)

This is not a security concern, as the method will subsequently return an error thanks to <Self as ReservableCurrency<_>>::reserve(who, value)?;. However, the defensive_saturating_add will panic in --all-features, creating false positive crashes in fuzzing operations.

[#7460]: Update SCALE codec indices

We need this in order to be able to update parity-scale-codec to the latest version after it's released. That's because parity-scale-codec added support for checking for duplicate indexes at compile time.

[#7437]: Remove dead code

Remove unused code

Rust compiler versions

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

  • Rust Stable: "1.81.0"

Polkadot stable2412-1

30 Jan 11:20
ab5882b
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2412 to polkadot-stable2412-1.

ℹ️ Please note:

This is a patch release for the latest stable version: stable2412. You can consider upgrading to it to have the latest fixes.

The tag corresponding to the current patch release polkadot-stable2412-1 and matching the old pattern will be available under polkadot-v1.17.1.

⚠️ Due to upgrade to the new major version 0.9.0 of the litep2p lib introduced in PR #7099 all the dependant crates had to be major bumped in this release.

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.

[#6971]: Make importing of duplicate assignment idempotent

Normally, approval-voting wouldn't receive duplicate assignments because approval-distribution makes sure of it, however in the situation where we restart we might receive the same assignment again and since approval-voting already persisted it we will end up inserting it twice in ApprovalEntry.tranches.assignments because that's an array. Fix this by inserting only assignments that are not duplicate.

[#7344]: [sync] Let new subscribers know about already connected peers (backward-compatible)

Revert #7011 and replace it with a backward-compatible solution suitable for backporting to a release branch.

[#7099]: Provide partial results to speedup GetRecord queries

This PR provides the partial results of the GetRecord kademlia query.

This significantly improves the authority discovery records, from ~37 minutes to ~2/3 minutes.
In contrast, libp2p discovers authority records in around ~10 minutes.

The authority discovery was slow because litep2p provided the records only after the Kademlia query was completed. A normal Kademlia query completes in around 40 seconds to a few minutes.
In this PR, partial records are provided as soon as they are discovered from the network.

[#7074]: Unset SKIP_WASM_BUILD=1 for aarch64 binaries release

Fix the release pipeline environment by unsetting SKIP_WASM_BUILD=1 so that aarch64 binaries are built so that they contain runtimes accordingly.

[#6807]: Retry approval on availability failure if the check is still needed

Recovering the POV can fail in situation where the node just restart and the DHT topology wasn't fully discovered yet, so the current node can't connect to most of its Peers.
This is bad because for gossiping the assignment you need to be connected to just a few peers, so because we can't approve the candidate other nodes will see this as a no show.
Fix it by retrying to approve a candidate for a fixed number of atttempts if the block is still needed.

[#7133]: Sufix litep2p to the identify agent version for visibility

This PR adds the (litep2p) suffix to the agent version (user agent) of the identify protocol.
The change is needed to gain visibility into network backends and determine exactly the number of validators that are running litep2p.
Using tools like subp2p-explorer, we can determine if the validators are running litep2p nodes.

[#7222]: Enforce libp2p outbound request-response timeout limits

This PR enforces that outbound requests are finished within the specified protocol timeout.
The stable2412 version running libp2p 0.52.4 contains a bug which does not track request timeouts properly
libp2p/rust-libp2p#5429.

The issue has been detected while submitting libp2p to litep2p requests in Kusama.
This aims to check that pending outbound requests have not timed out.
Although the issue has been fixed in libp2p, there might be other cases where this may happen.
For example, libp2p/rust-libp2p#5417.

For more context see #7076 (comment).

[#7116]: Increase the number of pvf execution workers from 2 to 4

Increase the number of pvf execution workers from 2 to 4.

[#7050]: Avoid incomplete block import pipeline with full verifying import queue

When warp syncing a node using the equivocation checking verifier, we now properly set the fork_choice rule.
Affected are mostly nodes that are derived from the parachain template. Omni-node is not affected.

The prevents the error ClientImport("Incomplete block import pipeline.") after state sync.

[#6973]: approval-voting fix sending of assignments after restart

There is a problem on restart where nodes will not trigger their needed assignment if they were offline and the time of the assignment passed, so after restart always schedule a wakeup so that nodes a have the opportunity of triggering their assignments if they are still needed.

[#7205]: Collator: Fix can_build_upon by always allowing to build on included block

Fixes a bug introduced in #6825.
We should always allow building on the included block of parachains. In situations where the unincluded segment is full, but the included block moved to the most recent block, building was wrongly disallowed.

[#7158]: Reject litep2p inbound requests from banned peers

This PR rejects inbound requests from banned peers (reputation is below the banned threshold).
This mirrors the request-response implementation from the libp2p side.
While at it, have registered a new inbound failure metric to have visibility into this.

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

[#7322]: Bridges: emulated tests small nits/improvements

This PR removes the use of open_bridge_between_asset_hub_rococo_and_asset_hub_westend. This function was used in the generic test_dry_run_transfer_across_pk_bridge macro, which could cause compilation issues when used in other contexts (e.g. fellows repo).

[#7067]: Fix implication order in implementation of TransactionExtension for tuple

Before this PR, the implications were different in the pipeline (A, B, C) and ((A, B), C).
This PR fixes this behavior and make nested tuple transparant, the implication order of tuple of tuple is now the same as in a single tuple.

For runtime users this mean that the implication can be breaking depending on the pipeline used in the runtime.

For runtime developers this breaks usage of TransactionExtension::validate.
When calling TransactionExtension::validate the implication must now implement Implication trait, you can use TxBaseImplication to wrap the type and use it as the base implication.
E.g. instead of &(extension_version, call), you can write &TxBaseImplication((extension_version, call)).

[#7074]: Unset SKIP_WASM_BUILD=1 for aarch64 binaries release

Fix the release pipeline environment by unsetting SKIP_WASM_BUILD=1 so that aarch64 binaries are built so that they contain runtimes accordingly.

[#5526]: Fix enact_candidate weight generation

This PR works around an issue in multivariate linear regression of weight generation.

[#6475]: Fix staking benchmark

Fix staking benchmark, error was introduced when migrating to v2: #6025

[#7013]: pallet-bounties: Fix benchmarks for 0 ED

Closes: #7009

[#6825]: Use relay chain slot for velocity measurement on parachains

This is a partial backport of #6825. It makes the node side of omni-node forward compatible with runtimes that are build with the changes from #6825.

Changelog for Node Operator

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

[#7133]: Sufix litep2p to the identify agent version for visibility

This PR adds the (litep2p) suffix to the agent version (user agent) of the identify protocol.
The change is needed to gain visibility into network backends and determine exactly the number of validators that are running litep2p.
Using tools like subp2p-explorer, we can determine if the validators are running litep2p nodes.

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.

[#7067]: Fix implication order in implementation of TransactionExtension for tuple

Before this PR, the implications were different in the pipeline (A, B, C) and ((A, B), C).
This PR fixes this behavior and make nested tuple transparant, the implication order of tuple of tuple is now the same as in a single tuple.

For runtime users this mean that the implication can be breaking depending on the pipeline used in the runtime.

For runtime developers this breaks usage of TransactionExtension::validate.
When calling TransactionExtension::validate the implication must now implement Implication trait, you can use TxBaseImplication to wrap the type and use it as the base implication.
E.g. instead of &(extension_version, call), you can write &TxBaseImplication((extension_version, call)).

[#7090]: Backport Snowbridge - Support bridging native ETH

Support Native ETH as an asset type instead of only supporting WETH. WETH is still supported, but adds support for ETH in the inbound and outbound routers.

Rust compiler versions

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

  • Rust Stable: "1.81.0"

Dock...

Read more

Polkadot stable2409-4

24 Jan 09:27
c455194
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2409-3 to polkadot-stable2409-4.

ℹ️ Please note:

⚠️ This is a patch release for the previous stable version: stable2409 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2409-4 and matching the old pattern will be available under polkadot-v1.16.4.

The following crates were updated to the corresponding versions:

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.

[#7050]: Avoid incomplete block import pipeline with full verifying import queue

When warp syncing a node using the equivocation checking verifier, we now properly set the fork_choice rule.
Affected are mostly nodes that are derived from the parachain template. Omni-node is not affected.
The prevents the error ClientImport("Incomplete block import pipeline.") after state sync.

[#6971]: Make importing of duplicate assignment idempotent

Normally, approval-voting wouldn't receive duplicate assignments because approval-distribution makes
sure of it, however in the situation where we restart we might receive the same assignment again and
since approval-voting already persisted it we will end up inserting it twice in ApprovalEntry.tranches.assignments
because that's an array. Fix this by inserting only assignments that are not duplicate.

[#6973]: approval-voting fix sending of assignments after restart

There is a problem on restart where nodes will not trigger their needed assignment if
they were offline and the time of the assignment passed, so after restart always
schedule a wakeup so that nodes a have the opportunity of triggering their assignments
if they are still needed.

[#6807]: Retry approval on availability failure if the check is still needed

Recovering the POV can fail in situation where the node just restart and the DHT topology
wasn't fully discovered yet, so the current node can't connect to most of its Peers.
This is bad because for gossiping the assignment you need to be connected to just a few
peers, so because we can't approve the candidate other nodes will see this as a no show.
Fix it by retrying to approve a candidate for a fixed number of atttempts if the block is
still needed.

[#7116]: Increase the number of pvf execution workers from 2 to 4

Increase the number of pvf execution workers from 2 to 4.

[#7158]: Reject litep2p inbound requests from banned peers

This PR rejects inbound requests from banned peers (reputation is below the banned threshold).
This mirrors the request-response implementation from the libp2p side.
While at it, have registered a new inbound failure metric to have visibility into this.

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

[#7201]: xcm: avoid subtracting delivery fees twice

Avoid subtracting delivery fees twice in DepositReserveAsset call when jit mode is enabled.

[#7013]: pallet-bounties: Fix benchmarks for 0 ED

Closes: #7009

[#5526]: Fix enact_candidate weight generation

This PR works around an issue in multivariate linear regression of weight generation.

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.

[#7089]: [stable2409] Backport Snowbridge - Support bridging native ETH

Support Native ETH as an asset type instead of only supporting WETH. WETH is still supported, but adds
support for ETH in the inbound and outbound routers.

Rust compiler versions

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

  • Rust Stable: "1.81.0"

Polkadot stable2407-6

24 Jan 09:36
39e71bd
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2407-5 to polkadot-stable2407-6.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2407 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2407-6 and matching the old pattern will be available under polkadot-v1.15.6.

The following crates were updated to the corresponding versions:

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.

[#6696]: Make approval-distribution aggression a bit more robust and less spammy

The problem with the current implementation of approval-distribution aggression is that is too spammy,
and can overload the nodes, so make it less spammy by moving back the moment we trigger L2 aggression
and make resend enable only for the latest unfinalized block.

[#6864]: Fix approval-voting canonicalize off by one

The approval-voting canonicalize was off by one, which lead to blocks being
cleaned up every other 2 blocks. Normally, this is not an issue, but on restart
we might end up sending NewBlocks to approval-distribution with finalized blocks.
This would be problematic in the case were finalization was already lagging before
restart, so after restart approval-distribution will trigger aggression on the wrong
already finalized block.

[#6729]: Fix order of resending messages after restart

At restart when dealing with a coalesced approval we might end up in a situation where we sent to
approval-distribution the approval before all assignments covering it, in that case, the approval
is ignored and never distribute, which will lead to no-shows.

[#7116]: Increase the number of pvf execution workers from 2 to 4

Increase the number of pvf execution workers from 2 to 4.

[#6973]: approval-voting fix sending of assignments after restart

There is a problem on restart where nodes will not trigger their needed assignment if
they were offline and the time of the assignment passed, so after restart always
schedule a wakeup so that nodes a have the opportunity of triggering their assignments
if they are still needed.

[#6971]: Make importing of duplicate assignment idempotent

Normally, approval-voting wouldn't receive duplicate assignments because approval-distribution makes
sure of it, however in the situation where we restart we might receive the same assignment again and
since approval-voting already persisted it we will end up inserting it twice in ApprovalEntry.tranches.assignments
because that's an array. Fix this by inserting only assignments that are not duplicate.

[#7050]: Avoid incomplete block import pipeline with full verifying import queue

When warp syncing a node using the equivocation checking verifier, we now properly set the fork_choice rule.
Affected are mostly nodes that are derived from the parachain template. Omni-node is not affected.

The prevents the error ClientImport("Incomplete block import pipeline.") after state sync.

[#6690]: Fix Possible bug, Vote import failed after aggression is enabled

Fix the appearance of Possible bug: Vote import failed after aggression is enabled, the log itself is
harmless because approval gets imported anyway and aggression is able to distribute it, nevertheless
is something that can be easily be fixed by picking the highest required routing possible.

[#6807]: Retry approval on availability failure if the check is still needed

Recovering the POV can fail in situation where the node just restart and the DHT topology
wasn't fully discovered yet, so the current node can't connect to most of its Peers.
This is bad because for gossiping the assignment you need to be connected to just a few
peers, so because we can't approve the candidate other nodes will see this as a no show.
Fix it by retrying to approve a candidate for a fixed number of atttempts if the block is
still needed.

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

[#5311]: No-op Impl Polling Trait

Provide a NoOp implementation of the Polling trait for unit where the trait is defined and skiping benchmarks that necessitate it's definition.

[#7013]: pallet-bounties: Fix benchmarks for 0 ED

Closes: #7009

Rust compiler versions

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

  • Rust Stable: "1.81.0"

Polkadot stable2409-3

23 Dec 12:24
c921152
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2409-2 to polkadot-stable2409-3.
ℹ️ Please note:

This is a patch release for the previous stable version: stable2409 and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.

The tag corresponding to the current patch release polkadot-stable2409-3 and matching the old pattern will be available under polkadot-v1.16.3.

The following crates were updated to the corresponding versions:

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.

[#6652]: rpc server: re-use server builder per rpc interface

This changes that the RPC server builder is re-used for each RPC interface which is more efficient than to build it for every connection.

[#6690]: Fix Possible bug, Vote import failed after aggression is enabled

Fix the appearance of Possible bug: Vote import failed after aggression is enabled, the log itself is harmless because approval gets imported anyway and aggression is able to distribute it, nevertheless is something that can be easily be fixed by picking the highest required routing possible.

[#6696]: Make approval-distribution aggression a bit more robust and less spammy

The problem with the current implementation of approval-distribution aggression is that is too spammy, and can overload the nodes, so make it less spammy by moving back the moment we trigger L2 aggression and make resend enable only for the latest unfinalized block.

[#6729]: Fix order of resending messages after restart

At restart when dealing with a coalesced approval we might end up in a situation where we sent to approval-distribution the approval before all assignments covering it, in that case, the approval is ignored and never distribute, which will lead to no-shows.

[#6603]: Always provide main protocol name in litep2p responses

This PR aligns litep2p behavior with libp2p. Previously, litep2p network backend would provide the actual negotiated request-response protocol that produced a response message. After this PR, only the main protocol name is reported to other subsystems.

[#6864]: Fix approval-voting canonicalize off by one

The approval-voting canonicalize was off by one, which lead to blocks being cleaned up every other 2 blocks. Normally, this is not an issue, but on restart we might end up sending NewBlocks to approval-distribution with finalized blocks.
This would be problematic in the case were finalization was already lagging before restart, so after restart approval-distribution will trigger aggression on the wrong already finalized block.

[#6588]: rpc server: fix subscription id_provider being reset to default one

The modification ensures that the id_provider variable is cloned instead of taken, which can help prevent issues related id provider being reset to the default.

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

[#5311]: No-op Impl Polling Trait

Provide a NoOp implementation of the Polling trait for unit where the trait is defined and skiping benchmarks that necessitate it's definition.

[#6645]: xcm: fix local/remote exports when inner routers return NotApplicable

Resolved a bug in the local/remote exporters used for bridging. Previously, they consumed dest and msg without returning them when inner routers/exporters failed with NotApplicable. This PR ensures compliance with the SendXcm and ExportXcm traits.

[#6536]: Bridges testing improvements

This PR includes:

  • Refactored integrity tests to support standalone deployment of pallet-bridge-messages.
  • Refactored the open_and_close_bridge_works test case to support multiple scenarios, such as:
    1. A local chain opening a bridge.
    2. Sibling parachains opening a bridge.
    3. The relay chain opening a bridge.
  • Previously, we added instance support for pallet-bridge-relayer but overlooked updating the DeliveryConfirmationPaymentsAdapter.

[#6781]: Bridges - revert-back congestion mechanism

With permissionless lanes PR#4949, the congestion mechanism based on sending Transact(report_bridge_status(is_congested)) from pallet-xcm-bridge-hub to pallet-xcm-bridge-hub-router was replaced with a congestion mechanism that relied on monitoring XCMP queues. However, this approach could cause issues, such as suspending the entire XCMP queue instead of isolating the affected bridge. This PR reverts back to using report_bridge_status as before.

[#6505]: [pallet-broker] Fix auto renew benchmarks

Fix the broker pallet auto-renew benchmarks which have been broken since #4424, yielding Weightless due to some prices being set too low, as reported in #6474.

Upon further investigation it turned out that the auto-renew contribution to rotate_sale was always failing but the error was mapped. This is also fixed at the cost of a bit of setup overhead.

[#6664]: Fix version conversion in XcmPaymentApi::query_weight_to_asset_fee.

The query_weight_to_asset_fee function of the XcmPaymentApi was trying to convert versions in the wrong way.
This resulted in all calls made with lower versions failing.
The version conversion is now done correctly and these same calls will now succeed.

[#6526]: sp-runtime: Be a little bit more functional :D

Some internal refactorings in the Digest code.

Changelog for Node Operator

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

[#6603]: Always provide main protocol name in litep2p responses

This PR aligns litep2p behavior with libp2p. Previously, litep2p network backend would provide the actual negotiated request-response protocol that produced a response message. After this PR, only the main protocol name is reported to other subsystems.

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.

[#6592]: Only allow apply slash to be executed if the slash amount is atleast ED

This change prevents pools::apply_slash from being executed when the pending slash amount of the member is lower than the ED. With this change, such small slashes will still be applied but only when member funds are withdrawn.

[#6506]: Zero refund check for FungibleAdapter

FungibleAdapter will now check if the refund amount is zero before calling deposit & emitting an event.

Fixes #6469.

Rust compiler versions

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

  • Rust Stable: "1.81.0"

Polkadot stable2412

17 Dec 10:29
967989c
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2409-2 to polkadot-stable2412.

ℹ️ Please note:
The tag corresponding to the current stable release polkadot-stable2412 and matching the old pattern will be available under polkadot-v1.17.0.

This release contains two additions comparing to the previous releases:

  1. From this release, in addition to the Linux binaries, binaries compiled for MacOS are available for:
  • polkadot
  • polkadot-execute-worker
  • polkadot-prepare-worker
  • polkadot-parachain
  • polkadot-omni-node
  1. gpg signature has changed slightly, all the binaries are signed with the new release team key: "ParityReleases [email protected]", which is part of the keyring as well as the previous key: "Parity Security Team [email protected]".

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.

[#5883]: statement-distribution RFC103 implementation

Introduces checks for the new candidate descriptor fields: core_index and session_index.

[#6864]: Fix approval-voting canonicalize off by one

The approval-voting canonicalize was off by one, which lead to blocks being cleaned up every other 2 blocks. Normally, this is not an issue, but on restart we might end up sending NewBlocks to approval-distribution with finalized blocks.
This would be problematic in the case were finalization was already lagging before restart, so after restart approval-distribution will trigger aggression on the wrong already finalized block.

[#5919]: substrate-offchain: upgrade hyper to v1

Bump depencency hyper of substrait-offchain for http from 0.14 to 1.
This changed APIs a bit;

  • sc_offchain::Offchainworker::new() now returns std::io::Result<Self> (Previously was Self)

[#5908]: collation-generation: use v2 receipts

Implementation of RFC 103 for the collation-generation subsystem.
Also removes the usage of AsyncBackingParams.

[#6729]: Fix order of resending messages after restart

At restart when dealing with a coalesced approval we might end up in a situation where we sent to approval-distribution the approval before all assignments covering it, in that case, the approval is ignored and never distribute, which will lead to no-shows.

[#5372]: elastic scaling: add core selector to cumulus

Adds a runtime API for querying the core selector of a parachain.
Also use the core selector API and the claim queue relay chain runtime API in the slot based collator (if available) to determine which cores to build on.
Part of implementing polkadot-fellows/RFCs#103.

[#5768]: export NodeHealthProxyLayer

This PR export NodeHealthProxyLayer from sc-rpc-server.

[#5911]: Removed the possibility to start a shell parachain node

Removed the possibility to start a shell parachain node using the polkadot-parachain-lib or polkadot-parachain-bin.

[#6760]: chainHead: Always report discarded items for storage operations

This PR ensures that substrate always reports discarded items as zero.
This is needed to align with the rpc-v2 spec

[#5515]: Add retry logic in relay chain rpc interface

Added a basic retry logic for collators connecting to external RPC servers. The collator will try for 5 times to connect to each RPC server from the provided list. In between each iteration will wait a duration which will increase exponentailly by a factor of two.
The maximum time a collator can spend in the retry logic is 1 + 2 + 4 + 8 + 16 = 31 seconds.

[#5540]: Avoid unnecessary block gap updates

Previously, the block gap storage in database and state in BlockchainDb could be updated even if no changes occurred.
This commit refines the logic to ensure updates only occur when the block gap value actually changes, reducing unnecessary writes and enhancing overall efficiency.

[#5635]: Fix edge case where state sync is not triggered

There is an edge case where the finalized block notification is received, but the conditions required to initiate the state sync are not fully met. In such cases, state sync would fail to start as expected and remain stalled.
This patch addresses it by storing the pending attempt and trying to start the state sync later when the conditions are satisfied.

[#5469]: Syncing strategy refactoring

Mostly internal changes to syncing strategies that is a step towards making them configurable/extensible in the future. It is unlikely that external developers will need to change their code.

[#5774]: Avoid unnecessary state reset of allowed_requests when no block requests are sent

Previously, the state of allowed_requests was always reset to the default even if there were no new block requests. This could cause an edge case because peer_block_request() will return early next time when there are no ongoing block requests.
This patch fixes it by checking whether block requests are empty before updating the state.

[#5038]: Plumb RPC listener up to caller

This PR allows the RPC server's socket address to be returned when initializing the server. This allows the library consumer to easily programmatically determine which port the RPC server is listening on.

[#3685]: FRAME Reintroduce TransactionExtension as a replacement for SignedExtension

Introduces a new trait TransactionExtension to replace SignedExtension. Introduce the idea of transactions which obey the runtime's extensions and have according Extension data (né Extra data) yet do not have hard-coded signatures.

Deprecate the terminology of "Unsigned" when used for transactions/extrinsics owing to there now being "proper" unsigned transactions which obey the extension framework and "old-style" unsigned which do not. Instead we have General for the former and Bare for the latter.
Unsigned will be phased out as a type of transaction, and Bare will only be used for Inherents.

Types of extrinsic are now therefore

  • Bare (no hardcoded signature, no Extra data; used to be known as "Unsigned")
    • Bare transactions (deprecated) - Gossiped, validated with ValidateUnsigned
      (deprecated) and the _bare_compat bits of TransactionExtension (deprecated).
    • Inherents - Not gossiped, validated with ProvideInherent.
  • Extended (Extra data) - Gossiped, validated via TransactionExtension.
    • Signed transactions (with a hardcoded signature).
    • General transactions (without a hardcoded signature).

Notable information on TransactionExtension and the differences from SignedExtension

  • AdditionalSigned/additional_signed is renamed to Implicit/implicit. It is encoded for the entire transaction and passed in to each extension as a new argument to validate.
  • pre_dispatch is renamed to prepare.
  • validate runs transaction validation logic both off-chain and on-chain, and is non-mutating.
  • prepare runs on-chain pre-execution logic using information extracted during validation and is mutating.
  • validate and prepare are now passed an Origin rather than an AccountId. If the extension logic presumes an AccountId, consider using the trait function AsSystemOriginSigner::as_system_origin_signer.
  • A signature on the underlying transaction may validly not be present.
  • The origin may be altered during validation.
  • Validation functionality present in validate should not be repeated in prepare.
    Useful information obtained during validate should now be passed in to prepare using the new user-specifiable type Val.
  • Unsigned logic should be temporarily migrated from the old *_unsigned functions into the regular versions of the new functions where the Origin is None, until the deprecation of ValidateUnsigned in phase 2 of Extrinsic Horizon.
  • The Call type defining the runtime call is now a type parameter.
  • Extensions now track the weight they consume during validation, preparation and post-dispatch through the TransactionExtensionBase::weight function.
  • TestXt was removed and its usage in tests was replaced with UncheckedExtrinsic instances.

To fix the build issues introduced by this change, use the AsTransactionExtension adapter to wrap existing SignedExtensions by converting them using the From<SignedExtension> generic implementation for AsTransactionExtension. More details on migrating existing SignedExtension implementations to TransactionExtension in the PR description.

[#4837]: Add PVF execution priority

The new logic optimizes the distribution of execution jobs for disputes, approvals, and backings.
The main goal is to create back pressure for backing in the presence of disputes or numerous approval jobs.

[#5521]: Allow to call arbitrary runtime apis using RelayChainInterface

This PR adds a call_runtime_api method to RelayChainInterface trait, and a separate function also named call_runtime_apiwhich allows the caller to specify the input and output types, as opposed to having to encode them.

[#5686]: sync: Remove checking of the extrinsics root

Remove checking the extrinsics root as part of the sync code.
With the introduction of system_version and the possibility to use the V1 layout for the trie when calculating the extrinsics root, it would require the sync code to fetch the runtime version fir...

Read more

Polkadot stable2407-5

09 Dec 13:50
ed1932e
Compare
Choose a tag to compare

This release contains the changes from polkadot-stable2407-4 to polkadot-stable2407-5.

ℹ️ Please note:

⚠️ This is a patch release for the stable version: stable2407. If your nodes are already running on the latest stable version (stable2409-1 or stable2409-2), no upgrade or changes are necessary.

The tag corresponding to the current patch release polkadot-stable2407-5 and matching the old pattern will be available under polkadot-v1.15.5.

Also the deb package for this version will be attached here for the manual installation and published under the new distribution - stable2407. To install it via apt please extend the /etc/apt/sources.list.d/parity.list by:

echo 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb stable2407 main' >> /etc/apt/sources.list.d/parity.list

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.

[#6417]: fix prospective-parachains best backable chain reversion bug

Fixes a bug in the prospective-parachains subsystem that prevented proper best backable chain reorg.

[#6603]: Always provide main protocol name in litep2p responses

This PR aligns litep2p behavior with libp2p. Previously, litep2p network backend would provide the actual negotiated request-response protocol that produced a response message. After this PR, only the main protocol name is reported to other subsystems.

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

[#6526]: sp-runtime: Be a little bit more functional :D

Some internal refactorings in the Digest code.

[#6663]: Fix version conversion in XcmPaymentApi::query_weight_to_asset_fee.

The query_weight_to_asset_fee function of the XcmPaymentApi was trying to convert versions in the wrong way.
This resulted in all calls made with lower versions failing.
The version conversion is now done correctly and these same calls will now succeed.

[#6645]: xcm: fix local/remote exports when inner routers return NotApplicable

Resolved a bug in the local/remote exporters used for bridging. Previously, they consumed dest and msg without returning them when inner routers/exporters failed with NotApplicable. This PR ensures compliance with the SendXcm and ExportXcm traits.

[#6674]: Set reasonable hard limit for PoV size config value

Sets the hard limit of the max_pov_size host configuration parameter to correspond to the actual network-related limit rather than to a random constant.

[#6031]: Import vec to bridges/primitives/header-chain

Add the vec dependency to these files to resolve compiler errors.

Changelog for Node Operator

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

[#6603]: Always provide main protocol name in litep2p responses

This PR aligns litep2p behavior with libp2p. Previously, litep2p network backend would provide the actual negotiated request-response protocol that produced a response message. After this PR, only the main protocol name is reported to other subsystems.

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.

[#6540]: Only allow apply slash to be executed if the slash amount is atleast ED

This change prevents pools::apply_slash from being executed when the pending slash amount of the member is lower than the ED. With this change, such small slashes will still be applied but only when member funds are withdrawn.

[#6080]: Assets in pool with native can be used in query_weight_to_asset_fee in Asset Hubs

query_weight_to_asset_fee now works with assets in a pool with the native asset in both Westend and Rococo asset hubs.
This means all the information you get from query_acceptable_payment_assets can be used directly in query_weight_to_asset_fee to get the correct fees that need to be paid.

[#6674]: Set reasonable hard limit for PoV size config value

Sets the hard limit of the max_pov_size host configuration parameter to correspond to the actual network-related limit rather than to a random constant.

[#6506]: Zero refund check for FungibleAdapter

FungibleAdapter will now check if the refund amount is zero before calling deposit & emitting an event.

Fixes #6469.

Rust compiler versions

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

  • Rust Stable: "1.81.0"

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:stable2407-5

or

docker pull parity/polkadot-parachain:stable2407-5

Polkadot stable2412-rc2

20 Nov 14:21
polkadot-stable2412-rc2
a86fb86
Compare
Choose a tag to compare
Pre-release

This release contains the changes from polkadot-stable2409-2 to polkadot-stable2412-rc2.

⚠️ Warning: Pre-release Version

The currently published version is a pre-release and is not yet a final stable version. This release is provided for testing purposes only, and there is no guarantee that everything will work as expected. Errors and unusual behaviours of some features are to be expected.

Please use this version at your own risk and report any issues you encounter. We recommend waiting for the official release if you need a stable version.

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.

[#5880]: Fix prospective parachains test to use shuffled candidate list

Fix prospective parachains test to use shuffled candidate list.
Resolves #5617.

[#5847]: candidate-validation: RFC103 implementation

Introduces support for new v2 descriptor core_index and session_index fields.
The subsystem will check the values of the new fields only during backing validations.

[#6015]: Rename QueueEvent::StartWork

When we send QueueEvent::StartWork, we have already completed the execution. Therefore, QueueEvent::FinishWork is a better match.

[#6268]: Bump a timeout in zombienet coretime smoke test

polkadot/zombienet_tests/smoke/0004-coretime-smoke-test.zndsl still timeouts on CI from time to time. Bumping the timeout a bit more.

Related to #6226

[#5919]: substrate-offchain: upgrade hyper to v1

Bump depencency hyper of substrait-offchain for http from 0.14 to 1.
This changed APIs a bit;

  • sc_offchain::Offchainworker::new() now returns std::io::Result<Self> (Previously was Self)

[#5924]: Bump PoV request timeout

With asynchronous backing and PoV size 10MB, we can increase the PoV request timeout from 1.2s to 2s.

[#5774]: Avoid unnecessary state reset of allowed_requests when no block requests are sent

Previously, the state of allowed_requests was always reset to the default
even if there were no new block requests. This could cause an edge case
because peer_block_request() will return early next time when there are no ongoing block requests.
This patch fixes it by checking whether block requests are empty before updating the state.

[#5762]: Fast return for invalid request of node health

Return directly when invalid request for node health api

[#5908]: collation-generation: use v2 receipts

Implementation of RFC 103 for the collation-generation subsystem.
Also removes the usage of AsyncBackingParams.

[#6011]: collator protocol: validate descriptor version on the validator side

Implement checks needed for RFC 103 polkadot-fellows/RFCs#103 in the validator
side of the collator protocol.

[#5469]: Syncing strategy refactoring

Mostly internal changes to syncing strategies that is a step towards making them configurable/extensible in the
future. It is unlikely that external developers will need to change their code.

[#5038]: Plumb RPC listener up to caller

This PR allows the RPC server's socket address to be returned when initializing the server. This allows the library consumer to easily programmatically determine which port the RPC server is listening on.

[#4837]: Add PVF execution priority

The new logic optimizes the distribution of execution jobs for disputes, approvals, and backings.
The main goal is to create back pressure for backing in the presence of disputes or numerous approval jobs.

[#5666]: Make syncing strategy an argument of the syncing engine

Syncing strategy is no longer implicitly created when building network, but needs to be instantiated explicitly.
Previously default implementation can be created with new function build_polkadot_syncing_strategy or custom
syncing strategy could be implemented and used instead if desired, providing greater flexibility for chain
developers.

[#5789]: Prevents EthereumBlobExporter from consuming parameters when returning NotApplicable

When the EthereumBlobExporter returned a NotApplicable error, it consumed parameters universal_source,
destination and message. As a result, subsequent exporters could not use these values. This PR corrects
this incorrect behaviour. It also changes error type from Unroutable to NotApplicable when the global consensus
system cannot be extracted from the universal_source, or when the source location cannot be converted to an agent
ID. Lastly, it changes the error type from MissingArgument to NotApplicable when the parachain ID cannot be
extracted from the location. These changes should have no effect - it is purely to correct behvaiour should
multiple exporters be used.

[#4974]: Remove libp2p dependency from sc-network-sync

This PR removes libp2p::request_response::OutboundFailure from substrate/client/network/sync/src/engine.rs.

[#5707]: Remove ValidateFromChainState

Removed the CandidateValidationMessage::ValidateFromChainState, which was previously used by backing, but is no longer relevant since initial async backing implementation

[#5915]: Omni-Node renamings

This PR renames the polkadot-parachain-lib crate to polkadot-omni-node-lib and introduces a new
polkadot-omni-node binary.

[#5883]: statement-distribution RFC103 implementation

Introduces checks for the new candidate descriptor fields: core_index and session_index.

[#5635]: Fix edge case where state sync is not triggered

There is an edge case where the finalized block notification is received, but the conditions required to initiate the
state sync are not fully met. In such cases, state sync would fail to start as expected and remain stalled.
This patch addresses it by storing the pending attempt and trying to start the state sync later when the conditions
are satisfied.

[#4846]: Make approval-voting runnable on a worker thread

Make approval-voting subsystem runnable on a separate worker thread without having to
to always pass to it an orchestra context. It achieves that by refactoring existing functions
to require only the minimal set of traits needed in the function instead of the general
Context

[#5737]: Make syncing service an argument of build_network

build_network is accompanied with lower-level build_network_advanced with simpler API that does not create
syncing engine internally, but instead takes a handle to syncing service as an argument. In most cases typical
syncing engine with polkadot syncing strategy and default block downloader can be created with newly introduced
sc_service::build_default_syncing_engine() function, but lower-level build_default_block_downloader also
exists for those needing more customization.

These changes allow developers higher than ever control over syncing implementation, but build_network is still
available for easier high-level usage.

[#5686]: sync: Remove checking of the extrinsics root

Remove checking the extrinsics root as part of the sync code.
With the introduction of system_version and the possibility to use the V1
layout for the trie when calculating the extrinsics root, it would require the
sync code to fetch the runtime version first before knowing which layout to use
when building the extrinsic root.
The extrinsics root is still checked when executing a block on chain.

[#5601]: Introduce RpcParams in sc-cli

Refactors and consolidates all RPC-related parameters in the run command into a dedicated RpcParams struct. This change allows downstream users to build custom run command without duplicating code.

[#4849]: Introduce approval-voting-parallel subsystem

This introduces a new subsystem called approval-voting-parallel. It combines the tasks
previously handled by the approval-voting and approval-distribution subsystems.

The new subsystem is enabled by default on all test networks. On production networks
like Polkadot and Kusama, the legacy system with two separate subsystems is still in use.
However, there is a CLI option --enable-approval-voting-parallel to gradually roll out
the new subsystem on specific nodes. Once we are confident that it works as expected,
it will be enabled by default on all networks.

The approval-voting-parallel subsystem coordinates two groups of workers:

  • Four approval-distribution workers that operate in parallel, each handling tasks based
    on the validator_index of the message originator.
  • One approval-voting worker that performs the tasks previously managed by the standalone
    approval-voting subsystem.

[#6218]: Enable approval-voting-parallel by default on kusama

Enable approval-voting-parallel by default on kusama

[#5521]: Allow to call arbitrary runtime apis using RelayChainInterface

This PR adds a call_runtime_api method to RelayChainInterface trait, and a separate function also named call_runtime_api
which allows the caller to specify the input and output types, as opposed to having to encode them.

[#5787]: Move bitfield_distribution to blocking task pool and set capacity to 8192

This is moving bitfield_distribution to the blocking task pool because it does cpu
intensive work and to make it snappier. Additionally, also increase the message
capa...

Read more