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-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.
[#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.
[#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.
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).)
[#5270]: Inclusion: account for enact_candidate weight
We are now properly accounting for the enact_candidate
s weight in processing of a relay chain block inherent. This may result in some of the user relay chain transactions not being included in the block if it's really heavy. This should be fine though as we are moving towards the minimal relay chain.
[#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.
[#5130]: Add SingleAssetExchangeAdapter
SingleAssetExchangeAdapter is an adapter in xcm-builder that can be used to configure the AssetExchanger in XCM to use pallet-asset-conversion, or any other type that implements the SwapCredit
and QuotePrice
traits.
It can be configured as follows:
pub type AssetExchanger = SingleAssetExchangeAdapter<
// pallet-assets-conversion, as named in `construct_runtime`.
AssetConversion,
// The fungibles implementation that brings together all assets in pools.
// This may be created using `fungible::UnionOf` to mix the native token
// with more tokens.
Fungibles,
// The matcher for making sure which assets should be handled by this exchanger.
Matcher,
>;
It's called "single asset" since it will only allow exchanging one asset for another.
It will error out if more than one asset tries to be exchanged.
Also, a new method was added to the xcm_executor::traits::AssetExchange
trait:
quote_exchange_price
. This is used to get the exchange price between two asset collections.
If you were using the trait, you now need to also implement this new function.
[#4956]: Add build options to the srtool build step and delete disanle-logging
feature
This PR adds possibility to set BUILD_OPTIONS to the "Srtool Build" step in the release pipeline while building runtimes.
And deletes the disable-logging
feature from test runtimes to be able to build those with an activated logging.
[#5078]: Add possibility to inject non-authorities session-keys in genesis
Allows to inject a set of registered session-keys in pallet-session that are not part of the first initial set of validators
[#5113]: Make the candidate relay parent progression check more strict for elastic scaling
Previously, the relay chain runtime was checking if the relay parent of a new candidate does not move backwards from the latest included on-chain candidate. This was fine prior to elastic scaling.
We now need to also check that the relay parent progresses from the latest pending availability candidate, as well as check the progression within the candidate chain in the inherent data.
Prospective-parachains is already doing this check but it's also needed in the runtime.
[#5174]: Wasm-builder: Set the resolver
version to 2
Set the resolver
version to 2
in the generated Cargo.toml
.
[#4949]: [bridges-v2] Permissionless lanes
This PR adds support for opening and closing dynamic, also known as permissionless, lanes.
This means that authorized origins (relay chain, sibling parachains) can open and close bridges with other bridged (substrate-like) consensuses supported by Bridge Hubs.
The Bridge Hubs, particularly the pallet-xcm-bridge-hub
, introduce new extrinsics open_bridge
and close_bridge
, which can be called using xcm::Transact
.
[#4822]: Ensure as many as possible pool members can migrate to DelegateStake
- Allows pool members to use their total balance while joining pool with
DelegateStake
. - Gates call mutating pool or member in unmigrated state.
- Runtime apis for reading pool and member balance.
[#5082]: Fix ParaInherent weight overestimation
This PR fixes the relay chain inherent weight overestimation allowing it to support more cores and validators.
[#4706]: Rename assigner_on_demand
pallet to on_demand
Renames assigner_on_demand
pallet to on_demand
[#4487]: Remove pallet::getter
usage from pallet-election-provider-multi-phase
This PR removes the pallet::getter
s from pallet-election-provider-multi-phase
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#4976]: Add pub to xcm::v4::PalletInfo
Forgot to make v4 PalletInfo fields public. Without them we cannot make use of the struct.
[#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
.
[#5369]: Fix failing XCM from relay to Coretime Chain when revenue is zero
The coretime assigner now always includes UnpaidExecution when calling notify_revenue
via a Transact
, not just when revenue is nonzero. This fixes an issue where the XCM would fail to process on the receiving side.
[#5327]: Moved presets to the testnet runtimes
This PR migrates the genesis config presets from polkadot-parachain-bin
to the relevant runtimes.
[#5581]: 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
.
[#5747]: Snowbridge runtime migration on Westend
This is a backport for #5074 which missed the runtime migration to initialize channels of the bridge.
[#5380]: Fix leases with gaps and time slice calculation in MigrateToCoretime
Agile Coretime storage migration wasn't transferring correctly leases with gaps and was miscalculating time lease period. This patch provides fixes for both issues.
[#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.
[#5466]: 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.
[#5660]: xcm-executor: validate destinations for ReserveWithdraw and Teleport transfers
This change adds the required validation for stronger UX guarantees when using InitiateReserveWithdraw
or InitiateTeleport
XCM instructions. Execution of the instructions will fail if the local chain is not configured to trust the "destination" or "reserve" chain as a reserve/trusted-teleporter for the provided "assets".
With this change, misuse of InitiateReserveWithdraw
/InitiateTeleport
fails on origin with no overall side-effects, rather than failing on destination (with side-effects to origin's assets issuance).
The commit also makes the same validations for pallet-xcm transfers, and adds regression tests.
[#4962]: Removed pallet::getter
usage from the pallet-treasury
This PR removed pallet::getter
s from pallet-treasury
s storage items.
Instead use the syntax StorageItem::<T, I>::get()
.
[#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.
[#5114]: Remove not-audited warning
Pallets tx-pause
and safe-mode
have passed audit, this just removes a warning in the docs to not use them.
[#5204]: Pallet assets: fix doc: start_destroy never required asset to be frozen
In pallet assets calling start_destroy
doesn't require the asset to be frozen. Doc is fixed.
[#5644]: pallet-utility: Improve weight annotations
Prevent allocations when calculating the weights.
[#5671]: Snowbridge free consensus updates border condition fix
A fix for a border condition introduced with the Ethereum client free consensus updates. A malicious relayer could spam the Ethereum client with sync committee updates that have already been imported for the period. This PR adds a storage item to track the last imported sync committee period, so that subsequent irrelevant updates are not free.
No impact for users or relayers, since the feature introducing the border condition has not been released.
[#5132]: Add from_mel
for Footprint
This introduces a new way to generate the Footprint
type by calculating the max encoded length of some generic type. This allows you to generate a Footprint
of a type without actually constructing that type.
[#5262]: Correct some typos in crates' descriptions
Corrected typos and copy-paste errors in crates' descriptions.
[#5354]: Fix benchmark failures when using insecure_zero_ed flag
Currently, when the pallet is compiled with the insecure_zero_ed flag, benchmarks fail because the minimum balance is set to zero.
The PR aims to resolve this issue by implementing a placeholder value for the minimum balance when the insecure_zero_ed flag is active. it ensures that benchmarks run successfully regardless of whether this flag is used or not
[#5430]: pallet-collator-selection: correctly register weight in new_session
- Fixes an incorrect usage of the
WeightInfo
trait fornew_session
.
[#5131]: Swap for paying delivery fees in different assets
Using the AssetExchanger
XCM config item, the executor now swaps fees to use for delivery fees, if possible.
If you want your runtime to support this, you need to configure this new item.
Thankfully, xcm-builder
now has a new adapter for this, which lets you use pallet-asset-conversion
or any type that implements the SwapCredit
and QuotePrice
traits.
It's called SingleAssetExchangeAdapter
, you can read more about it in its rust docs.
This item is already configured in Asset Hub.
IMPORTANT: The executor now only takes the first asset for delivery fees. If you have configured a custom router that returns more than one asset for delivery fees, then only the first one will be taken into account.
This is most likely not what you want.
[#4527]: Call implementation for transfer_all
This PR introduces the transfer_all
call for pallet-assets
.
The parameters are analog to the same call in pallet-balances
.
This change is expected to be backwards-compatible.
This change requires running benchmarkings to set accurate weights for the call.
[#5688]: Fix paras_inherent
benchmark
Fixes the benchmark for relay chains like rococo-dev with max_validators_per_core
value lower than 2.
[#5188]: Added benchmarks for BEEFY fork voting
This PR adds benchmarks for report_fork_voting
and report_future_voting
extrinsics to pallet-beefy
.
report_future_voting
can be called now. report_fork_voting
can't be called yet. Even though we have added the formula for computing its weight, we still use Weight::MAX
. We will set the proper weight in a future PR.
In order to do this we need to also check that the ancestry proof is optimal.
The PR adds a WeightInfo
associated trait to the pallet_beefy_mmr::Config
and defines benchmarks for pallet_beefy_mmr
.
[#4460]: xcm-executor: allow deposit of multiple assets if at least one of them satisfies ED
XCM programs that deposit assets to some new (empty) account will now succeed if at least one of the deposited assets satisfies ED. Before this change, the requirement was that the first asset had to satisfy ED, but assets order can be changed during reanchoring so it is not reliable. Now, ordering doesn't matter, any one(s) of them can satisfy ED for the whole deposit to work.
[#4564]: Make OnUnbalanced::on_unbalanceds
work with fungibles
imbalances
The on_unbalanceds
function of OnUnbalanced
trait accepts the fungibles
imbalances
imbalances. This is done by replacing the Imbalance
trait bound on imbalance type with the TryMerge
trait bound. The TryMerge
trait is implemented for all imbalance types.
Migration for OnUnbalanced
trait implementations:
In case if you have a custom implementation of on_unbalanceds
trait function, remove it's <B>
type argument.
Migration for custom imbalance types:
If you have your own imbalance types implementations, implement the TryMerge
trait for it introduced with this update.
[#5467]: Make PendingConfigs storage item public
Make PendingConfigs storage item in polkadot's configuration crate public.
[#4751]: Use all parachain heads for BEEFY MMR extra data
Previously, the extra data in an MMR leaf nodes was only computed based on lease-based parachain heads.
This PR extends the extra data to include others, including on-demand parachain heads.
Currently, the number of heads is limited to the first 1024 heads sorted by para id.
[#4936]: Balances Pallet: Emit events when TI is updated in currency impl
Previously, in the Currency impl, the implementation of pallet_balances was not emitting any instances of Issued and Rescinded events, even though the Fungible equivalent was. This PR adds the Issued and Rescinded events in appropriate places in impl_currency along with tests.
[#5649]: Bridges lane id agnostic for backwards compatibility
This PR improves support for handling LaneId
backwards compatibility with the previously merged PR.
If pallet_bridge_messages
or pallet_bridge_relayers
used LaneId([u8; 4])
previously, they should now set type LaneId = LegacyLaneId;
.
[#4998]: Ensure members can always exit the pool gracefully
Ensures when a member wants to withdraw all funds but the pool is not able to provide all their funds, the member can receive as much as possible and exit pool. Also handles cases where some extra funds held in member's account is released when they are removed.
[#5384]: MaybeConsideration
extension trait for Consideration
The trait allows for the management of tickets that may represent no cost. While the MaybeConsideration
still requires proper handling, it introduces the ability to determine if a ticket represents no cost and can be safely forgotten without any side effects.
The new trait is particularly useful when a consumer expects the cost to be zero under certain conditions (e.g., when the proposal count is below a threshold N) and does not want to store such consideration tickets in storage. The extension approach allows us to avoid breaking changes to the existing trait and to continue using it as a non-optional version for migrating pallets that utilize the Currency
and fungible
traits for holds
and freezes
, without requiring any storage migration.
[#5443]: change try-runtime rpc domains
as part of paritytech/devops#3502, try-runtime nodes were migrated to a new provider with a new domain address. The PR fixes all the references to try-runtime nodes on rococo, westend, kusama and polkadot networks
[#4999]: Fixes entropy for derivation of proxy delegator account.
This fixes how ProxyDelegator accounts are derived but may cause issues in Westend since it would use the old derivative accounts. Does not affect Polkadot/Kusama as this pallet is not deployed to them yet.
[#4959]: relax XcmFeeToAccount trait bound on AccountId
This PR relaxes the trait bound on AccountId for the XcmFeeToAccount struct by introducing a new struct called SendXcmFeeToAccount
.
The old one (XcmFeeToAccount
) will be deprecated at January 2025.
[#4970]: Remove pallet::getter
usage from the transaction-payment pallet
This PR removes the pallet::getter
s from pallet-transaction-payment
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#4586]: Removed pallet::getter
usage from pallet-identity
This PR removed the pallet::getter
s from pallet-identity
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#5257]: Enable proof-recording in benchmarking
We now enable proof recording in the timing benchmarks. This affects the standalone frame-omni-bencher
as well as the integrated benchmarking commands of the node. For parachains on recent versions of polkadot-sdk this is the correct default setting, since PoV-reclaim requires proof recording to be enabled on block import.
This comes with a slight increase in timing weight due to the additional overhead. Relay- or solo-chains which do not need proof recording can restore the old behaviour by passing --disable-proof-recording
to the benchmarking command.
In addition, the ProofSizeExt
extension is available during benchmarking.
[#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.
[#5155]: Use umbrella crate for minimal template
Minor additions to the polkadot-sdk-frame
crate and making it ready for usage in more templates. This PR already integrates it in the minimal template.
[#4963]: Removed pallet::getter
usage from the pallet-proxy
This PR removed pallet::getter
s from pallet-proxy
s storage items.
When accessed inside the pallet, use the syntax StorageItem::<T>::get()
.
[#4129]: Update ForeignAssets from xcm::v3::Location to xcm::v4::Location
As a stepping stone for XCMv5, the foreign asset ids have been updated from v3::Location to v4::Location.
[#4488]: Tx Payment: drop ED requirements for tx payments with exchangeable asset
Drop the Existential Deposit requirement for the asset amount exchangeable for the fee asset (eg. DOT/KSM) during transaction payments.
This achieved by using SwapCredit
implementation of asset conversion, which works with imbalances and does not require a temporary balance account within the transaction payment.
This is a breaking change for the pallet-asset-conversion-tx-payment
pallet, use examples from PR for the migration.
[#4967]: Remove pallet::getter
usage from the balances pallet
This PR removes the pallet::getter
s from pallet-balances
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#5580]: Fix error message on pallet macro
Improve error message for pallet macro generated code.
[#5442]: Derive Clone
on EncodableOpaqueLeaf
Clone
was derived on EncodableOpaqueLeaf
for convenience of downstream users
[#5546]: Transfer polkadot native assets to Ethereum through snowbridge
Transfer polkadot native asset to Ethereum through snowbridge.
[#5359]: Make ticket non-optional and add ensure_successful method to Consideration trait
Make ticket non-optional and add ensure_successful method to Consideration trait.
Reverts the optional return ticket type for the new function introduced in polkadot-sdk/4596 and adds a helper ensure_successful
function for the runtime benchmarks.
Since the existing FRAME pallet represents zero cost with a zero balance type rather than None
in an option, maintaining the ticket type as a non-optional balance is beneficial for backward compatibility and helps avoid unnecessary migrations.
[#5655]: [benchmarking] Reset to genesis storage after each run
The genesis state is currently partially provided via OverlayedChanges
, but these changes are reset by the runtime after the first repetition, causing the second repitition to use an invalid genesis state.
Changes:
- Provide the genesis state as a
Storage
without anyOverlayedChanges
to make it work correctly with repetitions. - Add
--genesis-builder-preset
option to use different genesis preset names. - Improve error messages.
[#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
.
[#3996]: asset-hub-rococo - genesis config presets added
asset-hub-rococo
genesis state was moved to runtime.
[#5173]: Umbrella crate: exclude chain-specific crates
The polkadot-sdk
umbrella crate does now not contain chain-specific crates. The reasoning is that the SDK should be mostly chain-agnostic. Please check out psvm to select matching version numbers for chain-
specific crates.
[#5439]: Deprecated calls removed in cumulus parachain system pallet
Call authorize_upgrade
in parachain system pallet cumulus-pallet-parachain-system
has been removed, use authorize_upgrade
or authorize_upgrade_without_checks
calls in system pallet frame-system
instead.
Call enact_authorized_upgrade
in parachain system pallet cumulus-pallet-parachain-system
has been removed, use apply_authorized_upgrade
call in system pallet frame-system
instead.
[#5465]: try-state check invariant for nomination-pools (points >= stake)
Adds a new try-state invariant to the nomination pools that checks that for each bonded pool, the pool's points can never be lower than its staked balance.
[#5293]: Add initial version of pallet_revive
Adds initial experimental version of the new pallet_revive. It will run PolkaVM contracts which were recompiled from YUL using the revive compiler. Do not use the pallet in production, yet. It is work in progress.
[#5712]: Better logs for XCM emulator
Now the XCM emulator has a log every time execute_with
is called, to know which chain is being used.
Also, the logs for UMP, DMP, HRMP processing were included in the xcm
log filter and changed from showing the message as an array of bytes to a hex string.
This means running the tests with RUST_LOG=xcm
should give you everything you need, you can always filter by RUST_LOG=xcm::hrmp
or any other if you need it.
[#5055]: Only log error in UnixTime::now
call of the pallet-timestamp implementation if called at genesis
This minor patch re-introduces a check to ensure that the UnixTime::now
implementation in the timestamp only logs an error if called at the genesis block.
[#5513]: Add more logs to trace AcceptanceCheckErr
Debug
was derived on AcceptanceCheckErr
to print the error. This PR adds more logs to trace the error.
[#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
.
[#5074]: Snowbridge on Westend
Since Rococo is now deprecated, we need another testnet to detect bleeding-edge changes to Substrate, Polkadot, BEEFY consensus protocols that could brick the bridge.
[#5074]: Snowbridge on Westend
Like Rococo this PR enables the fast-runtime feature by default which is easier for testing beefy stuff on westend-local.
[#5348]: allow for u8 to be used as hold/freeze reason
Allows for u8
type to be configured as HoldReason
and FreezeReason
[#4930]: Add test macro to emulated chains
This PR adds a portable test macro that can be used to test trapped assets can be claimed in an emulated chain.
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
[#5240]: Warn on empty public-addr when starting a validator node
This PR shows a warning when the --public-addr
CLI parameter is missing for validators.
In the future, we'll transform this warning into a hard failure.
Validators are encouraged to provide this parameter for better availability over the network.
[#5124]: Add Polkadot Chain genesis chainspec
The Polkadot People Chain can now be run as all other system parachains without specifying a chainspec. However this will soon be deprecated and --chain ./chainspec.json
should continue to be used instead.
[#5392]: Don't disconnect disabled nodes sending us dispute messages
No longer disconnect peers which we consider disabled when raising disputes as this will affect the approval process and thus finality.
[#5196]: Bring benchmark inline with reference machine used for weights
- BLAKE2-256 reference values were too low(~30%) when compared with the machine used for generating
the weights, so it was brought in sync with results on the reference hardware recommended here:
https://wiki.polkadot.network/docs/maintain-guides-how-to-validate-polkadot#reference-hardware - SR25519-Verify reference values were too low(~10%) when compared with the machine used for generating
the weights, so it was brought in sync with results on the reference hardware recommended here:
https://wiki.polkadot.network/docs/maintain-guides-how-to-validate-polkadot#reference-hardware - Validators where the
BLAKE2-256
andSR25519-Verify
were barely passing, might received the
warning that they are not compliant anymore, this should not be treated as critical, but they
should take the necessary steps to become compliant in the near/mid-term future. - Note!: The reference hardware requirements have not been increased we just fixed the benchmark which
was wrongly reporting lower spec HW as being compliant.
[#5436]: Add Polkadot Coretime Chain genesis chain-spec
The Polkadot Coretime Chain can now be run as all other system parachains without specifying a chain-spec. However this will soon be deprecated and --chain ./chain-spec.json
should continue to be used instead.
[#5197]: Prevent ConsensusReset
by tolerating runtime API errors in BEEFY
After warp sync, the BEEFY worker was trying to execute runtime calls on blocks which had their state already pruned. This led to an error and restarting of the beefy subsystem in a loop. After this PR, the worker tolerates call errors and therefore prevents this worker restart loop.
[#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
.
[#5127]: Add benchmark to check upcoming minimum required hw cores
Add benchmark that checks hardware satisifies the minimum required hardware cores for a validators. The new minimum requirements are schedule to come into effect in January 2025, for more details see: https://polkadot.subsquare.io/referenda/1051.
[#4792]: rpc: bind to ipv6
if available and add CLI --experimental-rpc-endpoint
to specify listen addr
This PR changes/adds the following:
- The default setting is that substrate starts a rpc server that listens to localhost both ipv4 and ipv6 on the same port.
ipv6 is allowed to fail because some platforms may not support it - A new RPC CLI option
--experimental-rpc-endpoint
is introduced which allows to configure arbitrary listen addresses including the port, if this is enabled no other interfaces are enabled. - If the local addr is not found for any of the sockets the server is not started and throws an error.
- Remove the deny_unsafe from the RPC implementations instead this is an extension to allow different polices for different interfaces/sockets such one may enable unsafe on local interface and safe on only the external interface.
- This new
--experimental-rpc-endpoint
has several options and in the help menu all possible parameters are documented. - The log emitted by jsonrpc server when it has been started has been modified to indicate all started rpc endpoints.
So for instance it's now possible to start up three RPC endpoints as follows:
$ polkadot --experimental-rpc-endpoint "listen-addr=127.0.0.1:9944,methods=unsafe" --experimental-rpc-endpoint "listen-addr=0.0.0.0:9945,methods=safe,rate-limit=100" --experimental-rpc-endpoint "listen-addr=[::1]:9944,optional=true"
[#5214]: make polkadot-parachain startup errors pretty
Changed the format of how polkadot-parachain prints the startup errors to include the full displayable context.
[#5326]: Update Readme of the polkadot
crate
Updated Readme of the polkadot
crate.
[#5129]: Prevent finalized notification hoarding in beefy gadget
This PR fixes the error message "Notification block pinning limit reached." during warp sync. Finality notifications in BEEFY are now
constantly being consumed and don't keep blocks pinned for extended periods of time.
[#5678]: rpc server: fix deny unsafe on RpcMethods::Auto
Close #5677
I made a nit when I moved this code: https://github.com/paritytech/polkadot-sdk/blob/v1.14.0-rc1/substrate/client/service/src/lib.rs#L379-#L385 in #4792
Thus:
- (ip.is_loopback(), RpcMethods::Auto) -> allow unsafe
- (!ip.is_loopback(), RpcMethods::Auto) -> deny unsafe
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.
[#5124]: Add Polkadot Chain genesis chainspec
The Polkadot People Chain chainspecs have been added to the polkadot-sdk repo and can now be pulled from there along with all other system chains.
[#5563]: snowbridge: improve destination fee handling to avoid trapping fees dust
On Ethereum -> Polkadot Asset Hub messages, whether they are a token transfer or a Transact
for registering a new token, any unspent fees are deposited to Snowbridge's sovereign account on Asset Hub, rather than trapped in AH's asset trap.
[#5436]: Add Polkadot Coretime Chain genesis chain-spec
The Polkadot Coretime Chain chain-specs have been added to the polkadot-sdk repo and can now be pulled from there along with all other system chains.
[#5660]: xcm-executor: validate destinations for ReserveWithdraw and Teleport transfers
This change adds the required validation for stronger UX guarantees when using InitiateReserveWithdraw
or InitiateTeleport
XCM instructions. Execution of the instructions will fail if the local chain is not configured to trust the "destination" or "reserve" chain as a reserve/trusted-teleporter for the provided "assets".
With this change, misuse of InitiateReserveWithdraw
/InitiateTeleport
fails on origin with no overall side-effects, rather than failing on destination (with side-effects to origin's assets issuance).
The commit also makes the same validations for pallet-xcm transfers, and adds regression tests.
[#5131]: Swap for paying delivery fees in different assets
If the AssetExchanger
is configured on a runtime, the XCM executor is now able to swap assets to pay for delivery fees.
This was already possible for execution fees via the SwapFirstAssetTrader
.
A runtime where this will be possible is Asset Hub.
That means reserve asset transfers from Parachain A to Parachain B passing through Asset Hub no longer need to have any DOT to pay for fees on AssetHub.
They can have any asset in a pool with DOT on Asset Hub, for example USDT or USDC.
[#5188]: Added benchmarks for BEEFY fork voting
This PR adds benchmarks for report_fork_voting
and report_future_voting
extrinsics to pallet-beefy
.
report_future_voting
can be called now. report_fork_voting
can't be called yet. Even though we have added the formula for computing its weight, we still use Weight::MAX
. We will set the proper weight in a future PR.
In order to do this we need to also check that the ancestry proof is optimal.
The PR adds a WeightInfo
associated trait to the pallet_beefy_mmr::Config
and defines benchmarks for pallet_beefy_mmr
.
[#4460]: xcm-executor: allow deposit of multiple assets if at least one of them satisfies ED
XCM programs that deposit assets to some new (empty) account will now succeed if at least one of the deposited assets satisfies ED. Before this change, the requirement was that the first asset had to satisfy ED, but assets order can be changed during reanchoring so it is not reliable. Now, ordering doesn't matter, any one(s) of them can satisfy ED for the whole deposit to work.
[#5509]: Add pallet_proxy
to People Chain and Coretime Chain testnet runtimes.
Proxies can now be used on coretime-rococo
, coretime-westend
, people-rococo
and people-westend
in the same way as they can be on Kusama and Polkadot chains.
[#4613]: pallet-conviction-voting: Include events for vote and remove vote
Introduce event called Voted: { who: T::AccountId, vote: AccountVote<BalanceOf<T, I>> }
and VoteRemoved: { who: T::AccountId, vote: AccountVote<BalanceOf<T, I>> }
[#4129]: Update ForeignAssets from xcm::v3::Location to xcm::v4::Location
As a stepping stone for XCMv5, the foreign asset ids have been updated from v3::Location to v4::Location.
[#5067]: Fix region nonfungible implementation
PR fixes the issue with the current implementation where minting causes the region coremask to be set to Coremask::complete
regardless of the actual coremask of the region.
[#5439]: Deprecated calls removed in cumulus parachain system pallet
Call authorize_upgrade
in parachain system pallet cumulus-pallet-parachain-system
has been removed, use authorize_upgrade
or authorize_upgrade_without_checks
calls in system pallet frame-system
instead.
Call enact_authorized_upgrade
in parachain system pallet cumulus-pallet-parachain-system
has been removed, use apply_authorized_upgrade
call in system pallet frame-system
instead.
[#4424]: Coretime auto renewal
With the additions in this PR, any task that utilizes a core that can be auto-renewed can enable auto-renewal. The renewal is paid from the task's sovereign account.
The two new extrinsics for controlling auto-renewal are enable_auto_renew
and disable_auto_renew
.
[#5036]: [pallet_contracts] Modify the storage host function benchmarks to be run on an unbalanced storage trie
This PR modifies the storage host function benchmarks. Previously, they were run on an empty storage trie. Now, they are run on an unbalanced storage trie to reflect the worst-case scenario. This approach increases the storage host function weights and decreases the probability of DoS attacks.
[#4973]: [pallet_contracts] Increase the weight of the deposit_event host function to limit the memory used by events.
This PR updates the weight of the deposit_event host function by adding a fixed ref_time of 60,000 picoseconds per byte. Given a block time of 2 seconds and this specified ref_time, the total allocation size is 32MB.
[#4938]: introduce pallet-parameters to Westend to parameterize inflation
This PR adds pallet-parameters
to the Westend runtime, and makes the inflation formula be adjustable based on this.
Moreover, the old era_payout
function has been removed from polkadot_runtime_common
and is
replaced by relay_era_payout
. This function is only meant to be used in the Polkadot relay chains, and other users are encouraged to provide their own implementation of typeEraPayout
.
Rust compiler versions
This release was built and tested against the following versions of rustc
.
Other versions may work.
- Rust Stable:
"1.77.0"
Runtimes
The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.15.0 and rustc 1.77.0 (aedd173a2 2024-03-17)
.
Rococo
🏋️ Runtime Size: 1.93 MB (2021976 bytes)
🔥 Core Version: rococo-1016001 (parity-rococo-v2.0-0.tx26.au0)
🗜 Compressed: Yes: 78.5%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xc36d7e8d6c9f4e382e5c98424eb7749ff2e4fe03cc73ee99f5c1a3c8c099ecd7
🗳️ authorizeUpgrade hash: 0x90b28221058c6d14afd3c76b6b0393e5c61eb1048406fef467600277c791721c
🗳️ Blake2-256 hash: 0xf645d939be087a8a76ade94d3e28f51f0c4b70abfc0db8b302e2372590b9e31a
📦 IPFS: QmStiTRoFiebr98KtoZo9rEc1kk1pBqinhfVejAQmbUtKC
Rococo Assethub
🏋️ Runtime Size: 1.53 MB (1609037 bytes)
🔥 Core Version: statemine-1016001 (statemine-0.tx16.au1)
🗜 Compressed: Yes: 79.09%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x758b5f3caa3e954caf531409f117541ca5db7db4eca24bc7eccd06f9794f46f0
🗳️ authorizeUpgrade hash: 0xce8376f2892cba6497a78481b258d01a20a74b623e3c08c2582ced05e532ed7f
🗳️ Blake2-256 hash: 0xf4286f1288835b51668b5e22f00237edf4725415d3ac9bfda91896bd215dd671
📦 IPFS: QmbjiePESXxKD54M9R8Vj88je3vPtKivZxVMYcRfofhB81
Rococo Bridgehub
🏋️ Runtime Size: 1.61 MB (1692117 bytes)
🔥 Core Version: bridge-hub-rococo-1016001 (bridge-hub-rococo-0.tx6.au1)
🗜 Compressed: Yes: 77.14%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x301a9806d0769e5c33197cdc1f9e8d506cefb84a25f4daf07061af067a8cd024
🗳️ authorizeUpgrade hash: 0x9b25fb74368b2af7ccf665b9ece3871d7d2411fa8240c388db4da8dfc36003a3
🗳️ Blake2-256 hash: 0x8ae347ba4d9169bc046f1f5a459363aabbc739e6cadc0a65eeae2b355149d638
📦 IPFS: QmePrRprnwieLhvKXwB26dffbCwUHzUNr9GMCp7uykKsmQ
Rococo Contracts
🏋️ Runtime Size: 1.46 MB (1531355 bytes)
🔥 Core Version: contracts-rococo-1016001 (contracts-rococo-0.tx7.au1)
🗜 Compressed: Yes: 80.01%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x96a6fd3c8d3247ce6351a41195993c5679655b192630dc040f5d88a7b3b04e31
🗳️ authorizeUpgrade hash: 0x223b4445324a66f628819206af3f033de94df912bc8bee028c9f7ec401ca30e0
🗳️ Blake2-256 hash: 0x2bf8a6250e5ed31b61dc7ea740e6f26dffda34bd28c0d283f991ef07e0e83400
📦 IPFS: Qmb7yHjnbWiwBLjrYZTVdmaZzViBVjViCp1nivsMg5xaWK
Rococo Coretime
🏋️ Runtime Size: 1.04 MB (1095662 bytes)
🔥 Core Version: coretime-rococo-1016001 (coretime-rococo-0.tx2.au1)
🗜 Compressed: Yes: 78.93%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x18b16b4f3b30fadc1694acb8db353a3a7cb7953ebaa6acc8530b73f71af22724
🗳️ authorizeUpgrade hash: 0x5ad205618a0951ca771639c5c4d853785b257ce209613394df3d6df0c4692b7e
🗳️ Blake2-256 hash: 0xbdf000caebd2b4521fbab3200b63789f764d2d1203bae2ff2c5975da1126458d
📦 IPFS: QmbE3KSurZgt3wNmZsKj4vkzrY5vJ2k3LX2iQB8pwSB1FG
Rococo People
🏋️ Runtime Size: 1.03 MB (1078758 bytes)
🔥 Core Version: people-rococo-1016001 (people-rococo-0.tx1.au1)
🗜 Compressed: Yes: 78.76%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xf021a1e08edede3b5e253d1db4c8bd5e472a7ef4a13541b7b1430cfa45b104c9
🗳️ authorizeUpgrade hash: 0x025658225e4be6208ce38213e388a43fa561538663912bb6ab19907bc16020ea
🗳️ Blake2-256 hash: 0x132ad8c978bafccc79b75426e024d1b759ae0e225d3ae9f331a9064b068d7e21
📦 IPFS: QmdAXmT7NSfkik37fmaparrA3CZwEuwqUXdiHT8FzzRzar
Westend
🏋️ Runtime Size: 2.07 MB (2167882 bytes)
🔥 Core Version: westend-1016001 (parity-westend-0.tx26.au2)
🗜 Compressed: Yes: 78.06%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x4ca53a52e23fee5a15d0b791212eeb6e32bc1379fc6367f4580bce41efc4c2ee
🗳️ authorizeUpgrade hash: 0x0480952649e29ad7e7efc02b99a32f3392e7325882044d19bb6d47600e567470
🗳️ Blake2-256 hash: 0xfa41c17b0fe1c1b59ac49faa5e67cd4a0a1799d74514cdf15401e521e1b3a832
📦 IPFS: QmPap1BFVuNURmmEeaETKo5q5SprF44VMBojx1NsZdXeQX
Westend Assethub
🏋️ Runtime Size: 1.56 MB (1640969 bytes)
🔥 Core Version: westmint-1016001 (westmint-0.tx16.au1)
🗜 Compressed: Yes: 79.04%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x3d6177ae228a14044a01eb462537c987ffdf2e6c8c656531cc4bbc71b95565cc
🗳️ authorizeUpgrade hash: 0xc04702370734463987ec4153782f1695628ca27c4318c314dd1fdb16372db900
🗳️ Blake2-256 hash: 0xa3b6d4156d3941ed23357fc7d76f2444f00f9cb4008ddca4b2818b46d021a4f0
📦 IPFS: QmT6shT1DrQD2h5vGGYDYEut3fhJfrzCA1pFRf6X22UitN
Westend Bridgehub
🏋️ Runtime Size: 1.57 MB (1649547 bytes)
🔥 Core Version: bridge-hub-westend-1016001 (bridge-hub-westend-0.tx6.au1)
🗜 Compressed: Yes: 76.85%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xe88251889d38091b1c12e9d5c3819df262d9b07eb17be4d707c4ee16a6e4d475
🗳️ authorizeUpgrade hash: 0x8ff5d135fd323e150beaeb4ba306f60f81eb1674a8f82cd0e3e5a734722cdab9
🗳️ Blake2-256 hash: 0xafbe3f3117590cb44f5293c01455232d3fdc5f9c31d5953001496c8d987f8744
📦 IPFS: QmNfHx7qZWgwV8xCqAXW9qFynKYCLH6zZHbxSthHdm4L7h
Westend Collectives
🏋️ Runtime Size: 1.36 MB (1429666 bytes)
🔥 Core Version: collectives-westend-1016001 (collectives-westend-0.tx6.au1)
🗜 Compressed: Yes: 78.5%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x518719c408b0cbd2b8ff6f8619e573f87fe9a8d83a999bc3697defed00acb474
🗳️ authorizeUpgrade hash: 0x284219cf62f1a132ff8a131a5cb1262a7d6282afaeed2b3c6016d44ea6aa184a
🗳️ Blake2-256 hash: 0x59558a80dfcf74536b9f6fcba7416490211b22f29cc750a8bcb4993ea53cf347
📦 IPFS: QmTXtrKHMj2muAp8Q6aV8RoXFaG8FbhyxYbka4pA8dGPmy
Westend Coretime
🏋️ Runtime Size: 1.05 MB (1097381 bytes)
🔥 Core Version: coretime-westend-1016001 (coretime-westend-0.tx2.au1)
🗜 Compressed: Yes: 78.74%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xf2a4c70c50f0f75ac7c7a5bc0773ec9144bfe70e6dc94361f64a862745198b3f
🗳️ authorizeUpgrade hash: 0xcbf4ed28a03e12ff565e0d2aaf5ce87461514c445e42139ac091553d52f6675c
🗳️ Blake2-256 hash: 0xbe2eaf5f765a47a9ad7c5365d7e647160be429986627537a17e2588e07965e59
📦 IPFS: QmZhWVoLu1YWpCrwKSNCkYZFH1sdsA3vZfJjCFPbAkwivM
Westend Glutton
🏋️ Runtime Size: 617.93 kB (632764 bytes)
🔥 Core Version: glutton-westend-1016001 (glutton-westend-0.tx1.au1)
🗜 Compressed: Yes: 76.41%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xa292e5792af6b3e5277cb033b31df4fcc417cc8a3064ac6ea90fdc77340a508b
🗳️ authorizeUpgrade hash: 0xdb148e1ece966082bd467426a9ae2514de7631deb4fb30e6a8e47fd446b33aef
🗳️ Blake2-256 hash: 0x27ad0e4e86948384e8cb8a1fc542272cc90e46587bda629658f31b53f24f7b10
📦 IPFS: QmXMXQxX839j6SHeavqnnzS1TDZFuPUYi5aXCtXjJ8XqNy
Westend People
🏋️ Runtime Size: 1.03 MB (1083991 bytes)
🔥 Core Version: people-westend-1016001 (people-westend-0.tx1.au1)
🗜 Compressed: Yes: 78.66%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x68162b32fe2906f29fab2509a03d4c1f0ec50779e586254a969e4bb9732332dc
🗳️ authorizeUpgrade hash: 0xca5125295e4089c5e22f4ad1f0cffea74fa4509899aaa24bf60e3bba00dfa4a8
🗳️ Blake2-256 hash: 0xfd096658a97b2ff8b698aa6687b539dc2695f1ecff43517e42d21900c376f2c7
📦 IPFS: QmWatdXN45BuUEQp7CbrUTEc3TLoggSQCJxx8ZxAaxHk6i
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:stable2409
or
docker pull parity/polkadot-parachain:stable2409