Releases: paritytech/polkadot-sdk
Polkadot stable2407-8
This release contains the changes from polkadot-stable2407-7
to polkadot-stable2407-8
.
ℹ️ Please note:
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-8
and matching the old pattern will be available under polkadot-v1.15.8.
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.
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 stable2503-rc1
This release contains the changes from polkadot-stable2412-2
to polkadot-stable2503-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.
[#6481]: slot-based-collator: Implement dedicated block import
The SlotBasedBlockImport
job is to collect the storage proofs of all blocks getting imported. These storage proofs alongside the block are being forwarded to the collation task. Right now they are just being thrown away. More logic will follow later. Basically this will be required to include multiple blocks into one PoV
which will then be done by the collation task.
[#5703]: Properly handle block gap created by fast sync
Implements support for handling block gaps generated during fast sync. This includes managing the creation,
updating, and removal of block gaps.
Note that this feature is not fully activated until the body
attribute is removed from the LightState
block request in chain sync, which will occur after the issue #5406 is resolved.
[#6561]: slot-based-collator: Move spawning of the futures
Move spawning of the slot-based collator into the run
function. Also the tasks are being spawned as blocking task and not just as normal tasks.
[#6647]: fatxpool
: proper handling of priorities when mempool is full
Higher-priority transactions can now replace lower-priority transactions even when the internal tx_mem_pool is full.
[#6262]: Size limits implemented for fork aware transaction pool
Size limits are now obeyed in fork aware transaction pool
[#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.
[#5855]: Remove feature test-helpers
from sc-service
Removes feature test-helpers
from sc-service.
[#7479]: omni-node: add offchain worker
Added support for offchain worker to omni-node-lib for both aura and manual seal nodes.
[#7021]: Improve remote externalities logging
Automatically detect if current env is tty. If not disable the spinner logging.
[#7254]: deprecate AsyncBackingParams
Removes all usage of the static async backing params, replacing them with dynamically computed equivalent values (based on the claim queue and scheduling lookahead).
Adds a new runtime API for querying the scheduling lookahead value. If not present, falls back to 3 (the default value that is backwards compatible with values we have on production networks for allowed_ancestry_len)
Also removes most code that handles async backing not yet being enabled, which includes support for collation protocol version 1 on collators, as it only worked for leaves not supporting async backing (which are none).
[#7011]: sync: Send already connected peers to new subscribers
Introduce SyncEvent::InitialPeers
message sent to new subscribers to allow them correctly tracking sync peers. This resolves a race condition described in #6573 (comment).
Fixes #6573.
[#7075]: Snowbridge - Ethereum Electra Upgrade Support
Adds support for the Ethereum Electra hard-fork in the Ethereum light client. Maintains backwards compatibility with the current Deneb hard-fork.
Relayers should update to the latest binary to support sending Electra consensus updates.
[#6768]: basic-authorship
: debug level is now less spammy
The debug
level in sc-basic-authorship
is now less spammy. Previously it was outputing logs per individual transactions. It made quite hard to follow the logs (and also generates unneeded traffic in grafana).
Now debug level only show some internal details, without spamming output with per-transaction logs. They were moved to trace
level.
I also added the EndProposingReason
to the summary INFO message. This allows us to know what was the block limit (which is very useful for debugging).
[#5842]: Get rid of libp2p dependency in sc-authority-discovery
Removes libp2p
types in authority-discovery, and replace them with network backend agnostic types from sc-network-types
.
The sc-network
interface is therefore updated accordingly.
[#6636]: Optimize initialization of networking protocol benchmarks
These changes should enhance the quality of benchmark results by excluding worker initialization time from the measurements and reducing the overall duration of the benchmarks.
[#6979]: Update prometheus binding failure logging format
Using {:#?}
for the error details is a bit annoying, this change makes a more consistent formatting style for error messages.
[#7554]: sc-informant: Print full hash when debug logging is enabled
When debugging stuff, it is useful to see the full hashes and not only the "short form". This makes it easier to read logs and follow blocks.
[#7104]: collation-generation: resolve mismatch between descriptor and commitments core index
This PR resolves a bug where collators failed to generate and submit collations,
resulting in the following error:
ERROR tokio-runtime-worker parachain::collation-generation: Failed to construct and
distribute collation: V2 core index check failed: The core index in commitments doesn't
match the one in descriptor.
This issue affects only legacy and test collators that still use the collation function.
It is not a problem for lookahead or slot-based collators.
This fix ensures the descriptor core index contains the value determined by the core
selector UMP signal when the parachain is using RFC103.
[#6534]: Forward logging directives to Polkadot workers
This pull request forward all the logging directives given to the node via RUST_LOG
or -l
to the workers, instead of only forwarding RUST_LOG
.
[#6628]: Remove ReportCollator message
Remove unused message ReportCollator and test related to this message on the collator protocol validator side.
[#6889]: Remove polkadot-omni-node-lib unused dependency
Removed an unused dependency for polkadot-omni-node-lib
.
[#6913]: Enable approval-voting-parallel by default on polkadot
Enable approval-voting-parallel by default on polkadot
[#7368]: Add chain properties to chain-spec-builder
- Adds support for chain properties to chain-spec-builder.
[#6711]: Expose DHT content providers API from sc-network
Expose the Kademlia content providers API for the use by sc-network
client code:
- Extend the
NetworkDHTProvider
trait with functions to start/stop providing content and query the DHT for the list of content providers for a given key. - Extend the
DhtEvent
enum with events reporting the found providers or query failures. - Implement the above for libp2p & litep2p network backends.
[#6983]: cumulus: bump PARENT_SEARCH_DEPTH to allow for 12-core elastic scaling
Bumps the PARENT_SEARCH_DEPTH constant to a larger value (30).
This is a node-side limit that restricts the number of allowed pending availability candidates when choosing the parent parablock during authoring.
This limit is rather redundant, as the parachain runtime already restricts the unincluded segment length to the configured value in the
FixedVelocityConsensusHook.
For 12 cores, a value of 24 should be enough, but bumped it to 30 to have some extra buffer.
[#7504]: Enable approval-voting-parallel by default on polkadot
Enable approval-voting-parallel by default on polkadot
[#6417]: fix prospective-parachains best backable chain reversion bug
Fixes a bug in the prospective-parachains subsystem that prevented proper best backable chain reorg.
[#6924]: malus-collator: implement malicious collator submitting same collation to all backing groups
This PR modifies the undying collator to include a malus mode,
enabling it to submit the same collation to all assigned backing groups.
It also includes a test that spawns a network with the malus collator
and verifies that everything functions correctly.
[#6405]: fatxpool
: handling limits and priorities improvements
This PR provides a number of improvements and fixes around handling limits and priorities in the fork-aware transaction pool.
[#7014]: Remove yamux_window_size
from network config
Description
resolve #6468
Checklist
- My PR includes a detailed description as outlined in the "Description" and its two subsections above.
- My PR follows the labeling requirements of this project (at minimum one label for
T
required)- External contributors: ask maintainers to put the right label on your PR.
- I have made corresponding changes to the documentation (if applicable)
- I have added tests that prove my fix is effective or that my feature works (if applicable)
[#7195]: Unify Import verifi...
Asset Hub Next (Westend)
Asset Hub Next
The migration of staking, governance, balances and other related pallets from the Relay Chain to Asset Hub is currently in development (part of the Plaza project and RFC-32) and dubbed AHM (Asset Hub Migration).
We are introducing a new temporary parachain on Westend which represents the future functionality of Asset Hub ready to test against for ourselves and other stakeholders who will be integrating with it, while we finalise the actual migration for Westend. By having two asset hubs on Westend in the lead up to the transition, we can have the old runtime and future runtime live at the same time, and crucially the future runtime is live much earlier that would otherwise be possible.
This is deployed and running as of today. The parachain is registered with para_id
1100 and is now ready to test. Note that the state is more or less empty, as the migration logic is still being finalised. When the migration happens we will migrate the relay pallets and state to Westend Asset Hub and Asset Hub Next will be retired shortly afterwards.
Public endpoints
RPC: wss://westend-asset-hub-next-rpc.parity-chains-scw.parity.io
Sidecar: https://westend-asset-hub-next-sidecar.parity-chains-scw.parity.io/
Artifacts
The genesis chainspec includes some injected staking data, and so it is quite large, especially in its raw format. Instead the following instructions can be followed to get the necessary information all from the attached plaintext chain-spec.
This assumes that you have the polkadot-omni-node
and chain-spec-builder
in your path, both can be compiled from the sdk repo or downloaded from a previous release. You can download ah-next-chain-spec.json
from this release, and from the same working directory run:
chain-spec-builder convert-to-raw ah-next-chain-spec.json && mv chain_spec.json ah-next-chain-spec-raw.json
polkadot-omni-node export-genesis-head --chain ah-next-chain-spec-raw.json > ah-next-genesis-head
polkadot-omni-node export-genesis-wasm --chain ah-next-chain-spec-raw.json > ah-next-genesis.wasm
Which generates the genesis wasm and head data, as well as the raw chain spec (for running with zombienet or similar)
Polkadot stable2412-2
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
This release contains the changes from polkadot-stable2409-4
to polkadot-stable2409-5
.
ℹ️ Please note:
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:
- [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 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
This release contains the changes from polkadot-stable2407-6
to polkadot-stable2407-7
.
ℹ️ Please note:
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:
- [email protected]
- publishing [email protected]
- [email protected]
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
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.
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...
Polkadot stable2409-4
This release contains the changes from polkadot-stable2409-3
to polkadot-stable2409-4
.
ℹ️ Please note:
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:
- [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.
[#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
This release contains the changes from polkadot-stable2407-5
to polkadot-stable2407-6
.
ℹ️ Please note:
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:
- [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.
[#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
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"