This release contains the changes from polkadot-stable2412
to polkadot-stable2412-1
.
ℹ️ Please note:
This is a patch release for the latest stable version: stable2412
. You can consider upgrading to it to have the latest fixes.
The tag corresponding to the current patch release polkadot-stable2412-1
and matching the old pattern will be available under polkadot-v1.17.1.
⚠️ Due to upgrade to the new major version 0.9.0
of the litep2p
lib introduced in PR #7099 all the dependant crates had to be major bumped in this release.
Changelog
Changelog for Node Dev
ℹ️ These changes are relevant to: Those who build around the client side code. Alternative client builders, SMOLDOT, those who consume RPCs. These are people who are oblivious to the runtime changes. They only care about the meta-protocol, not the protocol itself.
[#6971]: Make importing of duplicate assignment idempotent
Normally, approval-voting wouldn't receive duplicate assignments because approval-distribution makes sure of it, however in the situation where we restart we might receive the same assignment again and since approval-voting already persisted it we will end up inserting it twice in ApprovalEntry.tranches.assignments
because that's an array. Fix this by inserting only assignments that are not duplicate.
[#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.
[#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.
[#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).
[#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.
[#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 attempts if the block is still needed.
[#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.
[#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.
[#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).)
[#6475]: Fix staking benchmark
Fix staking benchmark, error was introduced when migrating to v2: #6025
[#5526]: Fix enact_candidate weight generation
This PR works around an issue in multivariate linear regression of weight generation.
[#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).
[#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 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.
[#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"
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-1
or
docker pull parity/polkadot-parachain:stable2412-1