Releases: paritytech/polkadot-sdk
Polkadot stable2409-3
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:
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [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.
[#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:- A local chain opening a bridge.
- Sibling parachains opening a bridge.
- The relay chain opening a bridge.
- Previously, we added instance support for
pallet-bridge-relayer
but overlooked updating theDeliveryConfirmationPaymentsAdapter
.
[#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
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:
- 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
- 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.
[#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.
[#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.
[#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.
[#6863]: Update merkleized-metadata to 0.2.0
0.1.2 was yanked as it was breaking semver.
[#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.
[#6156]: Use bool::then instead of then_some with function calls
Fix misusage of bool::then_some
.
[#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.
[#5997]: Implement archive_unstable_storageDiff method
This PR implements the archive_unstable_storageDiff
rpc-v2 method.
Developers can use this method to fetch the storage differences between two blocks. This is useful for oracles and archive nodes.
For more details see: https://github.com/paritytech/json-rpc-interface-spec/blob/main/src/api/archive_unstable_storageDiff.md.
[#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.
[#5343]: Allow to disable gap creation during block import
New property BlockImportParams::create_gap
allows to change whether to create block gap in case block has no parent (defaults to true
keeping existing behavior), which is helpful for sync protocols that do not need to sync the gap after this happens. BlockImportOperation::create_gap()
method was also introduced, though in most cases BlockImportParams::create_gap
will be used.
[#6676]: Expose the unstable metadata v16
This PR exposes the unstable metadata V16. The metadata is exposed under the unstable u32::MAX number.
Developers can start experimenting with the new features of the metadata v16. Please note that this metadata is under development and expect breaking changes until stabilization.
The ExtrinsicMetadata
trait receives a breaking change. Its associated type VERSION
is rename to VERSIONS
and now supports a constant static list of metadata versions.
The versions implemented for UncheckedExtrinsic
are v4 (legacy version) and v5 (new version).
For metadata collection, it is assumed that all TransactionExtensions
are under version 0.
[#5716]: Replace lazy_static
with LazyLock
Replace all lazy_static usages with LazyLock from the Rust standard library. This will bring us less dependencies.
[#4639]: Added the fork-aware transaction pool implementation
Most important changes introduced by this PR:
- The transaction pool references spread across codebase are now wrapper to a transaction pool trait object,
- The fork-aware pool implementation was added.
- The
sc-transaction-pool
refactored, - Trasnaction pool builder was introduced to allow to instantiation of either old or new transaction pool. Refer to PR description for
more details on how to enable fork-aware pool in the custom node.
[#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.
[#6382]: gensis-config: patching default RuntimeGenesisConfig
fixed
This PR fixes issue reported in #6306.
It changes the behavior of sc_chain_spec::json_patch::merge
function which no longer removes any keys from the base JSON object.
[#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.
[#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.
[#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.
[#5883]: statement-distribution RFC103 implementation
Introduces checks for the new candidate descriptor fields: core_index
and session_index
.
[#5924]: Bump PoV request timeout
With asynchronous backing and PoV size 10MB, we can increase the PoV request timeout from 1.2s to 2s.
[#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
[#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.
[#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 capacity of the subsystem to make sure the queue does not get full if there is a burst of messages.
[#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.
[#5919]: substrate-offchain: upgrade hyper t...
Polkadot stable2407-5
This release contains the changes from polkadot-stable2407-4
to polkadot-stable2407-5
.
ℹ️ Please note:
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
This release contains the changes from polkadot-stable2409-2
to polkadot-stable2412-rc2
.
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 returnsstd::io::Result<Self>
(Previously wasSelf
)
[#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...
Polkadot stable2409-2
This release contains the changes from polkadot-stable2409-1
to polkadot-stable2409-2
.
ℹ️ Please note:
This is a patch release for the latest stable version: stable2409
. If your nodes are already running on this version, you can consider upgrading to it to have the latest fixes.
The tag corresponding to the current patch release polkadot-stable2409-2
and matching the old pattern will be available under polkadot-v1.16.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.
[#5924]: Bump PoV request timeout
With asynchronous backing and PoV size 10MB, we can increase the PoV request timeout from 1.2s to 2s.
[#6417]: fix prospective-parachains best backable chain reversion bug
Fixes a bug in the prospective-parachains subsystem that prevented proper best backable chain reorg.
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).)
[#6148]: Fix migrations for pallet-xcm
pallet-xcm
stores some operational data that uses Versioned*
XCM types. When we add a new XCM version (XV), we deprecate XV-2 and remove XV-3.
This PR extends the existing MigrateToLatestXcmVersion
to include migration for the Queries
, LockedFungibles
, and RemoteLockedFungibles
storage types.
Additionally, more checks were added to try_state
for these types.
[#6205]: pallet-message-queue: Fix max message size calculation
The max size of a message should not depend on the weight left in a given execution context. Instead, the max message size depends on the service weights configured for the pallet. A message that may do not fit into on_idle
is not automatically overweight, because it may be executed successfully in on_initialize
or in another block in on_idle
when there is more weight left.
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
[#6454]: rpc server: fix ipv6 host filter for localhost
This PR fixes that ipv6 connections to localhost was faulty rejected by the host filter because only [::1] was allowed
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.
[#6181]: 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.
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:stable2904-2
or
docker pull parity/polkadot-parachain:stable2904-2
Polkadot stable2407-4
This release contains the changes from polkadot-stable2407-3
to polkadot-stable2407-4
.
ℹ️ Please note:
stable2407
. If your nodes are already running on the latest stable version (stable2409
or stable2409-1
), no upgrade or changes are necessary.
The tag corresponding to the current patch release polkadot-stable2407-4
and matching the old pattern will be available under polkadot-v1.15.4.
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 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).)
[#6148]: Fix migrations for pallet-xcm
pallet-xcm
stores some operational data that uses Versioned*
XCM types. When we add a new XCM version (XV), we deprecate XV-2 and remove XV-3.
This PR extends the existing MigrateToLatestXcmVersion
to include migration for the Queries
, LockedFungibles
, and RemoteLockedFungibles
storage types.
Additionally, more checks were added to try_state
for these types.
[#6068]: Add assets in pool with native to query_acceptable_payment_assets
The XcmPaymentApi::query_acceptable_payment_assets
API can be used to get a list of all the assets that can be used for fee payment.
This is usually just the native asset, but the asset hubs have the asset conversion pallet.
In the case of the asset hubs, this list now includes all assets in a liquidity pool with the native one.
[#6205]: pallet-message-queue: Fix max message size calculation
The max size of a message should not depend on the weight left in a given execution context. Instead the max message size depends on the service weights configured for the pallet. A message that may does not fit into on_idle
is not automatically overweight, because it may can be executed successfully in on_initialize
or in another block in on_idle
when there is more weight left.
[#4803]: Fix for issue
When the status of the queue is on_initialize, throw a defensive message and return weight of 0, however when status is on_idle, do not throw a defensive message, only return weight of 0
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.
[#6004]: Remove redundant XCMs from dry run's forwarded xcms
The DryRunApi was returning the same message repeated multiple times in the forwarded_xcms
field. This is no longer the case.
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-4
or
docker pull parity/polkadot-parachain:stable2407-4
Polkadot Stable2409-1
This release contains the changes from polkadot-stable2409
to polkadot-stable2409-1
.
ℹ️ Please note:
This is a patch release for the latest stable version: stable2409
. If your nodes are already running on this version, you can consider upgrading to it to have the latest fixes.
The tag corresponding to the current patch release polkadot-stable2409-1
and matching the old pattern will be available under polkadot-v1.16.1
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.
[#5753]: Use maximum allowed response size for request/response protocols
Increase maximum PoV response size to 16MB which is equal to the default value used in the substrate.
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).)
[#6069]: Add assets in pool with native to query_acceptable_payment_assets
The XcmPaymentApi::query_acceptable_payment_assets
API can be used to get a list of all the assets that can be used for fee payment.
This is usually just the native asset, but the asset hubs have the asset conversion pallet.
In the case of the asset hubs, this list now includes all assets in a liquidity pool with the native one.
[#6031]: Import vec to bridges/primitives/header-chain
Add the vec
dependency to these files to resolve compiler errors.
[#4803]: Fix for issue
When the status of the queue is on_initialize, throw a defensive message and return weight of 0, however when status is on_idle, do not throw a defensive message, only return weight of 0
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.
[#6005]: Remove redundant XCMs from dry run's forwarded xcms
The DryRunApi was returning the same message repeated multiple times in the forwarded_xcms
field. This is no longer the case.
Rust compiler versions
This release was built and tested against the following versions of rustc
.
Other versions may work.
- Rust Stable:
"1.81.0"
Runtimes
The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.16.0 and rustc 1.81.0 (eeb90cda1 2024-09-04)
.
Westend Assethub
🏋️ Runtime Size: 1.57 MB (1643466 bytes)
🔥 Core Version: westmint-1016002 (westmint-0.tx16.au1)
🗜 Compressed: Yes: 78.91%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x5fe6cb1d493c59bedaf60676cb844a8c7d2091c38185ebb5f0dff264b15cb067
🗳️ authorizeUpgrade hash: 0x1396e952b25c5a65adda8e75a2eefe99d07a19ae2d8ccf581765d0ddaa451511
🗳️ Blake2-256 hash: 0x942dc08e4ce4757a20883295cbfc0996d6d149f21f5c56355b4db6bff1bcd676
📦 IPFS: QmdhQAvLZJ5PNv5fmfEiDsCL3K9J3WFfWKdFhZ3wvsqygb
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
Polkadot stable2407-3
This release contains the changes from polkadot-stable2407-2
to polkadot-stable2407-3
.
ℹ️ Please note:
stable2407
. If your nodes are already running on the latest stable version (stable2409
), no upgrade or changes are necessary.
The tag corresponding to the current patch release polkadot-stable2407-3
and matching the old pattern will be available under polkadot-v1.15.3.
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 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).)
[#3049]: Fix treasury benchmarks when SpendOrigin
being None
Fix treasury benchmarks when SpendOrigin
not returning any succesful origin.
This is for example the case when SpendOrigin
is set to NeverOrigin
.
[#5580]: Fix error message on pallet macro
Improve error message for pallet macro generated code.
[#5644]: pallet-utility: Improve weight annotations
Prevent allocations when calculating the weights.
[#5524]: frame-omni-bencher maintenance
Changes:
- Set default level to
Info
again. Seems like a dependency update set it to something higher. - Fix docs to not use
--locked
since we rely on dependency bumps via cargo. - Add README with rust docs.
- Fix bug where the node ignored
--heap-pages
argument.
[#5632]: Fix alloc
not found error in format_runtime_string!
Fixes the macro hygiene in the format_runtime_string!
macro to fix the alloc
not found build error.
[#5594]: Add debugging info for StorageWeightReclaim
- Includes extrinsic index to be displayed in the logs when the consumed weight is higher than the measured one.
[#5603]: Clear other messages before dry-running
The DryRunApi.dry_run_call and DryRunApi.dry_run_xcm functions used to populate forwarded_xcms
with all the existing messages in the queues at the time.
Now, existing (irrelevant) messages are cleared when dry-running, meaning only the messages produced by the dry-run call (or xcm) will be returned in forwarded_xcms
.
[#5695]: pallet-migrations: fix index access for singluar migrations
Discovered a bug in the migrations pallet while debugging paritytech/try-runtime-cli#90.
It only occurs when a single MBM is configured - hence it did not happen when Ajuna Network tried it...
Changes:
- Check len of the tuple before accessing its nth_id
- Make nth_id return
None
on unary tuples and n>0
[#5713]: pallet-treasury: Improve remove_approval
benchmark
Fix the remove_approval
benchmark when SpendOrigin
doesn't return any succesful_origin
.
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-3
or
docker pull parity/polkadot-parachain:stable2407-3
Polkadot stable2409
This release contains the changes from polkadot-stable2407-2
to polkadot-stable2409
.
The tag corresponding to the current stable release polkadot-stable2409
and matching the old pattern will be available under polkadot-v1.16.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.
[#5065]: Replace env_logger with sp_tracing
This PR replaces env_logger with sp_tracing because of an issue with env_logger and gum #4660
[#5252]: Additional logging in dispute-coordinator
subsystem
Additional logging in dispute-coordinator
subsystem tracing the list of offchain disabled validators and the reason why an import statement is considered spam.
[#5205]: Enable ChainSpec API for polkadot-parachain
The substrate service-builder now includes the entire rpc v2 API.
The chainspec API was previously defined as rpc extension where for instance chains would need to enable it explicitly.
At the same time, this paves the way for implementing in the future a chainSpec_v1_getSpec
method that can extract the chainSpec of any chain (including parachains) for the use with lightclients.
For more info about the chainSpec
, please see the specification: https://github.com/paritytech/json-rpc-interface-spec/blob/main/src/api/chainSpec.md.
[#5316]: add timestamp function to sp-consensus-slots
Added timestamp function to sp-consensus-slots to get the first timestamp of the given slot.
[#5029]: Backoff slow peers to avoid duplicate requests
This PR introduces a backoff strategy mechanism. Whenever a peer disconnects with an inflight block (or state) request, the peer is backed off for a period of time before receiving requests.
After several attempts, the peer is disconnected and banned. The strategy aims to offload the pressure from peers that are slow to respond or overloaded.
[#5142]: Move decompression to worker processes
Candidate validation subsystem performed the PVF code decompression as well as the PoV decompression itself which might affect the subsystem main loop performance and required it to run on the blocking threadpool. This change moves the decompression to PVF host workers running synchronously in separate processes.
[#5410]: Reactive syncing metrics
Syncing metrics are now updated immediate as changes happen rather than every 1100ms as it was happening before.
This resulted in minor, but breaking API changes.
[#5396]: Simplify SyncingEngine::new()
Tiny changes to simplify the internal implemenation of API SyncingEngine::new()
to prevent panics while fetching the genesis hash and to eliminate unnecessary allocation for reserved peers.
[#4640]: Introduce tool for validating PoVs locally
Introduces the cumulus-pov-validator
for running PoVs locally. This can be helpful for debugging issues that are only happening when the PoV gets validated on the relay chain or for example to profile the validation code.
Besides that the polkadot-parachain
was extended with the CLI flag --export-pov-to-path
to let a collator export all its build PoV's to the given directory. These PoV's can then be feed into the cumulus-pov-validator
.
[#2923]: Use console
crate instead of ansi_term
This PR replace obsoleted ansi_term
to console
.
[#5356]: Fix OurViewChange small race
Always queue OurViewChange event before we send view changes to our peers, because otherwise we risk the peers sending us a message that can be processed by our subsystems before OurViewChange.
Normally, this is not really a problem because the latency of the ViewChange we send to our peers is way higher than that of our subsystem processing OurViewChange, however on testnets like versi where CPUs are sometimes overcommitted this race gets triggered occasionally, so let's fix it by sending the messages in the right order.
[#5393]: Allow to enable full PoV size
A feature is introduced allowing a collator to enable full PoV size at compile time.
WARNING: To use this feature, security considerations must be understood and the latest SDK version must be used.
[#4665]: Remove runtime collator signature checks
Removes runtime collator signature checks, but these are still being done on the node. Remove collator and signature from the ProspectiveCandidate
definition in the inclusion emulator. Add CandidateReceiptV2
node feature bit.
[#5352]: Aura: Ensure parachains are building on all relay chain forks
Ensure that parachains using the basic
collator are building on all relay chain forks.
[#4739]: parachain-template - genesis config presets added
- common DEV_RUNTIME_PRESET ("development") const added to sp-genesis-builder.
- parachain-templates are now using presets.
[#5407]: Prepare PVFs if node is a validator in the next session
This PR aims to remove the noise caused by the peer store's reputation system.
A warning was emitted each time a reputation was reported for a banned peer, regardless of the reputation being positive. This has led in the past to situations where it was hard to identify the actual reason of the ban and caused noise for node operators.
The Banned, disconnecting.
warning is logged only when the peer is banned.
Other misbehaves are logged as Misbehaved during the ban threshold
.
[#5269]: Added the possibility to build a parachain node with block number u64
Added the possibility to build a parachain node with block number u64.
[#5538]: collator-protocol: Remove race condition
Remove a race condition in the collator protocol that could lead to collations not being announced to a validator.
[#5527]: Report BestBlock events only for newBlock reports
This PR ensures that the chainHead_v1_follow method of the RPC-v2 API is always reporting a BestBlock
event after a NewBlock
.
There was a race condition in the chainHead follow logic which led to the BestBlock
event to be emitted without an associated NewBlock
event.
[#5250]: Export MetricsService
and add public constructor to RpcHandlers
sc-service
was missing just a couple of things in public API in order to make it possible to recreate its spawn_tasks
, specifically MetricsService
struct and RpcHandlers
didn't have public constructor, which were both finally addressed.
[#4928]: Move assignment VRF check and vote signature in approval-distribution
This PR moves the assignment VRF check and approval vote signature from approval-voting into approval-distribution.
This optimization creates a better pipelining for processing new messages, because in this way approval-distribution does not have to wait after approval-voting anymore and it will just notify it when it received a valid message that is ready to be imported.
[#5288]: Added polkadot-parachain-lib
helper library that can be used to build a parachain node
This PR adds the polkadot-parachain-lib
helper library that can be used to build a parachain node.
[#3786]: Make changing of peer-id while active a bit more robust
Implemetation of polkadot-fellows/RFCs#91, to use creation_time
field to determine the newest DHT record and to update nodes known to have the old record.
Gossip-support is modified to try to re-resolve new address authorithies every 5 minutes instead of each session, so that we pick autorithies that changed their address faster and try to connect to them.
[#5195]: Bump Aura authoring duration to 2s.
This PR bumps the Aura authoring duration in the asynchronous backing guide and the polkadot-parachain service file to 2s in order to make better use of the provided coretime.
[#5339]: Replace unnecessary &mut self
with &self
in BlockImport::import_block()
Simplifies block import API to match intended design where independent blocks can technically be imported concurrently and in practice was called through Arc
anyway
[#3996]: asset-hub-rococo - genesis config presets added
asset-hub-rococo
genesis state was moved to runtime.
[#4993]: Added BEEFY equivocation-related methods to BeefyApi
This PR adds the generate_ancestry_proof
, submit_report_fork_voting_unsigned_extrinsic
and
submit_report_future_block_voting_unsigned_extrinsic
to BeefyApi
and bumps the BeefyApi
version
from 4 to 5.
[#4845]: Make approval-distribution logic runnable on a separate thread
Pass SubsystemSender trait inside approval-distribution instead of passing SubsystemContext everywhere.
This allows us in the future to be able to run multiple approval-distribution instances on different workers.
[#5431]: Remove the need to wait for target block header in warp sync implementation
Previously warp sync needed to wait for target block header of the relay chain to become available before warp sync can start, which resulted in cumbersome APIs. Parachain initialization was refactored to initialize warp sync with target block header from the very beginning, improving and simplifying sync API.
[#5450]: Sync status refactoring
SyncingService
API in sc-network-sync
has changed with some of the redundant methods related to sync status removed that were mostly used internally or for testing purposes and is unlikely to impact external code.
ExtendedPeerInfo
now has working Clone
and Copy
implementation.
[#5364]: Improve `sc-servi...
Polkadot stable2409-rc1
This pre-release contains the changes from polkadot-stable2407-2
to polkadot-stable2409-rc1
.
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.
[#5410]: Reactive syncing metrics
Syncing metrics are now updated immediate as changes happen rather than every 1100ms as it was happening before.
This resulted in minor, but breaking API changes.
[#5288]: Added polkadot-parachain-lib
helper library that can be used to build a parachain node
This PR adds the polkadot-parachain-lib
helper library that can be used to build a parachain node.
[#4993]: Added BEEFY equivocation-related methods to BeefyApi
This PR adds the generate_ancestry_proof
, submit_report_fork_voting_unsigned_extrinsic
and
submit_report_future_block_voting_unsigned_extrinsic
to BeefyApi
and bumps the BeefyApi
version from 4 to 5.
[#5393]: Allow to enable full PoV size
A feature is introduced allowing a collator to enable full PoV size at compile time.
WARNING: To use this feature, security considerations must be understood and the latest SDK version must be used.
[#5065]: Replace env_logger with sp_tracing
This PR replaces env_logger with sp_tracing because of an issue with env_logger and gum #4660
[#5344]: Fix storage weight reclaim bug.
Improvement in slot worker loop that will not call create inherent data providers if the major sync is in progress. Before it was called every slot and the results were discarded during major sync.
[#5396]: Simplify SyncingEngine::new()
Tiny changes to simplify the internal implemenation of API SyncingEngine::new()
to prevent panics while fetching the genesis hash and to eliminate unnecessary allocation for reserved peers.
[#4845]: Make approval-distribution logic runnable on a separate thread
Pass SubsystemSender trait inside approval-distribution instead of passing SubsystemContext everywhere.
This allows us in the future to be able to run multiple approval-distribution instances on different workers.
[#5364]: Improve sc-service
API
This improves sc-service
API by not requiring the whole &Configuration
, using specific configuration options instead. RpcConfiguration
and ExecutorConfiguration
were also extracted from Configuration
to group all RPC and executor options together.
If sc-service
is used as a library with lower-level APIs, Configuration
can now be avoided in most cases.
This mainly impacts you on your node implementation. There you need to change this:
with_execution_method(config.wasm_method)
to this:
with_execution_method(config.executor.wasm_method)
There are similar changes required as well, but all are around the initialization of the wasm executor.
[#4739]: parachain-template - genesis config presets added
- common DEV_RUNTIME_PRESET ("development") const added to sp-genesis-builder.
- parachain-templates are now using presets.
[#5195]: Bump Aura authoring duration to 2s.
This PR bumps the Aura authoring duration in the asynchronous backing guide and the polkadot-parachain service file to 2s in order to make better use of the provided coretime.
[#5142]: Move decompression to worker processes
Candidate validation subsystem performed the PVF code decompression as well as the PoV decompression itself which might affect the subsystem main loop performance and required it to run on the blocking threadpool. This change moves the decompression to PVF host workers running synchronously in separate processes.
[#5431]: Remove the need to wait for target block header in warp sync implementation
Previously warp sync needed to wait for target block header of the relay chain to become available before warp sync can start, which resulted in cumbersome APIs. Parachain initialization was refactored to initialize warp sync with target block header from the very beginning, improving and simplifying sync API.
[#5527]: Report BestBlock events only for newBlock reports
This PR ensures that the chainHead_v1_follow method of the RPC-v2 API is always reporting a BestBlock
event after a NewBlock
.
There was a race condition in the chainHead follow logic which led to the BestBlock
event to be emitted without an associated NewBlock
event.
[#4928]: Move assignment VRF check and vote signature in approval-distribution
This PR moves the assignment VRF check and approval vote signature from approval-voting into approval-distribution.
This optimization creates a better pipelining for processing new messages, because in this way approval-distribution does not have to wait after approval-voting anymore and it will just notify it when it received a valid message that is ready to be imported.
[#5450]: Sync status refactoring
SyncingService
API in sc-network-sync
has changed with some of the redundant methods related to sync status removed that were mostly used internally or for testing purposes and is unlikely to impact external code.
ExtendedPeerInfo
now has working Clone
and Copy
implementation.
[#5424]: Suppress the log output for transaction propagation when no transactions are present
Previously, the log message Propagating transactions
would always be printed, even when there were no transactions to propagate. This patch optimizes the logging by returning early when no transactions are present, resulting in cleaner and more relevant log output.
[#5250]: Export MetricsService
and add public constructor to RpcHandlers
sc-service
was missing just a couple of things in public API in order to make it possible to recreate its spawn_tasks
, specifically MetricsService
struct and RpcHandlers
didn't have public constructor, which were both finally addressed.
[#5029]: Backoff slow peers to avoid duplicate requests
This PR introduces a backoff strategy mechanism. Whenever a peer disconnects with an inflight block (or state) request, the peer is backed off for a period of time before receiving requests.
After several attempts, the peer is disconnected and banned. The strategy aims to offload the pressure from peers that are slow to respond or overloaded.
[#5339]: Replace unnecessary &mut self
with &self
in BlockImport::import_block()
Simplifies block import API to match intended design where independent blocks can technically be imported concurrently and in practice was called through Arc
anyway
[#5352]: Aura: Ensure parachains are building on all relay chain forks
Ensure that parachains using the basic
collator are building on all relay chain forks.
[#5269]: Added the possibility to build a parachain node with block number u64
Added the possibility to build a parachain node with block number u64.
[#3786]: Make changing of peer-id while active a bit more robust
Implemetation of polkadot-fellows/RFCs#91, to use creation_time
field to determine the newest DHT record and to update nodes known to have the old record.
Gossip-support is modified to try to re-resolve new address authorithies every 5 minutes instead of each session, so that we pick autorithies that changed their address faster and try to connect to them.
[#5252]: Additional logging in dispute-coordinator
subsystem
Additional logging in dispute-coordinator
subsystem tracing the list of offchain disabled validators and the reason why an import statement is considered spam.
[#5316]: add timestamp function to sp-consensus-slots
Added timestamp function to sp-consensus-slots to get the first timestamp of the given slot.
[#3996]: asset-hub-rococo - genesis config presets added
asset-hub-rococo
genesis state was moved to runtime.
[#5356]: Fix OurViewChange small race
Always queue OurViewChange event before we send view changes to our peers, because otherwise we risk the peers sending us a message that can be processed by our subsystems before OurViewChange.
Normally, this is not really a problem because the latency of the ViewChange we send to our peers is way higher than that of our subsystem processing OurViewChange, however on testnets like versi where CPUs are sometimes overcommitted this race gets triggered occasionally, so let's fix it by sending the messages in the right order.
[#2923]: Use console
crate instead of ansi_term
This PR replace obsoleted ansi_term
to console
.
[#5538]: collator-protocol: Remove race condition
Remove a race condition in the collator protocol that could lead to collations not being announced to a validator.
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).)
[#4963]: Removed pallet::getter
usage from the pallet-proxy
This PR removed `pallet::ge...