Releases: paritytech/polkadot-sdk
Polkadot v1.12.0
This release contains the changes from polkadot-v1.11.0
to polkadot-v1.12.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.
[#4442]: Improve mock relay in --dev mode to support async backing
Support async backing in --dev mode. Improve the relay mock MockValidationDataInherentDataProvider to mach expectations of async backing runtimes.
[#4185]: State trie migration on asset-hub westend and collectives westend
On westend and rococo asset-hub and collectives westend the state version is switched to one
and a manual migration will be operate as describe in https://hackmd.io/JagpUd8tTjuKf9HQtpvHIQ
2.2 Running the signed migration
with account 5F4EbSkZz18X36xhbsjvDNs6NuZ82HyYtq5UiJ1h9SBHJXZD
.
[#4157]: Bridge: added free headers submission support to the substrate-relay
Bridge finality and parachains relayer now supports mode, where it only submits some headers
for free. There's a setting in a runtime configuration, which introduces this "free header"
concept. Submitting such header is considered a common good deed, so it is free for relayers.
[#4457]: sc-service: export all public functions
A PR #3166 converted private functions used in spawn_tasks()
to public to make it possible to have custom
implementation of the spawn_tasks()
. However, not all functions were included in the list of exports from
sc-service
crate.
[#4211]: Re-prepare PVF artifacts only if needed
When a change in the executor environment parameters can not affect the prepared artifact,
it is preserved without recompilation and used for future executions. That mitigates
situations where every unrelated executor parameter change resulted in re-preparing every
artifact on every validator, causing a significant finality lag.
[#3962]: Change fork calculation algorithm.
This PR changes the fork calculation and pruning algorithm to enable future block header pruning.
During the finalization of the block we prune known stale forks, so forks are pruned faster.
[#4035]: Prospective parachains rework
Changes prospective-parachains from dealing with trees of unincluded candidates to maintaining only candidate chains
and a number of unconnected candidates (for which we don't yet know the parent candidate but which otherwise seem potentially viable).
This is needed for elastic scaling, in order to have full throughput even if a candidate is validated by a backing group before the parent candidate
is fetched from the other backing group.
Also simplifies the subsystem by no longer allowing parachain cycles.
[#4329]: Deprecate NativeElseWasmExecutor
Deprecates the NativeElseWasmExecutor
as native execution is already
discouraged and should be removed entirely. The executor should be
replaced by WasmExecutor
which can be found in sc-executor
.
The NativeElseWasmExecutor
will be removed at the end of 2024.
[#4295]: Make parachain template async backing ready
Promotes the parachain template (both node and runtime) to use async backing APIs so that
developers starting a new project from the template could get async backing integrated out
of the box.
[#3444]: Rate-limiting of statement distribution v2 requests to 1 per peer
A new malicious node variant that sends duplicate statement
distribution messages to spam other peers.
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).)
[#4220]: Refactor XCM Simulator Example
This PR refactors the XCM Simulator Example to improve developer experience when trying to read and understand the example. 3 monolithic files have been broken down into their respective components across various modules. No major logical changes were made.
[#4364]: Fix dust unbonded for zero existential deposit
When a staker unbonds and withdraws, it is possible that their stash will contain less currency than the existential deposit. If that happens, their stash is reaped. But if the existential deposit is zero, the reap is not triggered. This PR adjusts pallet_staking to reap a stash in the special case that the stash value is zero and the existential deposit is zero.
[#4311]: Not allow reap stash for virtual stakers.
Add guards to staking dispathables to prevent virtual stakers to be reaped.
[#4312]: Add Deposited
/Withdrawn
events for pallet-assets
New events were added to pallet-assets
: Deposited
and Withdrawn
. Make sure
to cover those events on tests if necessary.
[#4414]: Rococo Asset Hub: undeploy state-trie migration
The state-trie migration on the Rococo Asset Hub is completed and is now removed.
[#3865]: Balances: add failsafe for consumer ref underflow
Pallet balances now handles the case that historic accounts violate a invariant that they should have a consumer ref on reserved > 0
balance.
This disallows such accounts from reaping and should prevent TI from getting messed up even more.
[#4346]: Allow for 0 existential deposit in benchmarks for pallet_staking, pallet_session, and pallet_balances
Changes were made to benchmarks for pallet_staking
, pallet_session
, and pallet-balances
to accommodate runtimes with 0 existential deposit. This should not affect the vast majority of runtimes. For runtimes with 0 existential deposit, the benchmarks for pallet_staking
and pallet_session
will still fail when using U128CurrencyToVote
in the pallet-staking
config; developers can use or write another CurrencyToVote
implementation for benchmarking to work around this.
[#3872]: XcmDryRunApi - Runtime API for dry-running extrinsics and XCM programs.
This PR introduces a new runtime API, the XcmDryRunApi, that allows dry-running
extrinsics and XCM programs to get their execution effects.
These effects include:
- Local execution result, either pass or fail
- Emitted events
- Forwarded XCMs
- In the case of extrinsics, the XCM program that they execute
This API can be used on its own to test extrinsics or XCM programs,
or used alongside the XcmPaymentApi to estimate execution and delivery
fees.
This PR also adds a new configuration item to XCM: XcmRecorder.
This can be set to either (), the xcm pallet, or some custom implementation.
If set to (), the dry run API will not return the local XCM program executed
by running an extrinsic.
After this PR, it is necessary to add the new configuration item to your xcm
configs.
[#4281]: Add support for versioned notification for HRMP pallet
The configuration of the HRMP pallet has been expanded to include the VersionWrapper
type,
which controls the encoding of XCM notifications related to the opening/closing of HRMP channels.
If your runtime does not concern itself with the XCM version used for notifications,
you can set it as type VersionWrapper = ()
to always use the latest XCM.
If your runtime does care about the XCM version when sending to child parachains,
you can provide an instance of the pallet_xcm
with type VersionWrapper = XcmPallet
,
which can manage XCM versions for destinations.
[#3904]: Introduce pallet-delegated-staking
Adds a new pallet delegated-staking
that allows delegators to delegate their funds to agents who can stake
these funds on behalf of them. This would be used by Nomination Pools to migrate into a delegation staking based
pool.
[#4406]: Adds benchmarking and try-runtime support in polkadot-sdk-frame
crate
Adds benchmarking and try-runtime support in polkadot-sdk-frame
crate
[#4091]: Removed pallet::getter
usage from the authority-discovery pallet
This PR removed pallet::getter
s from pallet-authority-discovery
s storage items.
When accessed inside the pallet, use the syntax StorageItem::<T, I>::get()
.
When accessed outside the pallet, use the getters current_authorities() and next_authorities() instead.
[#4326]: CheckWeight checks for combined extrinsic length and proof size
The CheckWeight
SignedExtension
will now perform an additional check. The extension was verifying the extrinsic length and
weight limits individually. However, the proof size dimension of the weight and extrinsic length together are bound by the PoV size limit.
The CheckWeight
extension will now check that the combined size of the proof and the extrinsic lengths will not
exceed the PoV size limit.
[#4034]: Introduces TypeWithDefault<T, D: Get<T>>
This PR introduces a new type TypeWithDefault<T, D: Get<T>>
to be able to provide a
custom default for any type. This can, then, be used to provide the nonce type that returns
the current block number as the default, to avoid replay of immortal transactions.
[#3964]: Burn extrinsic call and fn burn_from
Preservation
argument
pallet-balances extrinsic calls has been expanded with burn
call.
An argument flag is allowed to specify whether the account should be kept alive or not.
This in turn required a change to the fungible's pub trait Mutate
burn_from
function which now
also accepts Preservation
as an argument.
In order to keep the behavior same as before, developers should simply specify Preservation::Expandable
.
[#4461]: Fix extrinsics count logging in frame-system
Fixes the issue of the number ...
Polkadot v1.11.0
This release contains the changes from polkadot-v1.10.0
to polkadot-v1.11.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.
[#4059]: Remove redundent logging code
Simplified logging code, now does slightly less work while logging.
[#4027]: Add candidates_pending_availability
Runtime API
This new API retrieves all CommittedCandidateReceipts
of all candidates pending availability for a parachain at a given relay chain block number. It is required by collators that make use of elastic scaling capability in the context of PoV recovery and block import. The old API candidate_pending_availability
is now deprectated and will be removed in the future.
[#3979]: Deprecate para_id()
from CoreState
in polkadot primitives
CoreState
's para_id()
function is getting deprecated in favour of direct usage of the ClaimQueue
. This is the preferred approach because it provides a better view on what is scheduled on each core.
[#4169]: Stabilize transactionBroadcast RPC class to version 1
The transactionBroadcast RPC API is stabilized to version 1.
[#3953]: Adapt RemoteExternalities and its related types to be used with generic hash parameters
Modify RemoteExternalities
, Mode
, OnlineConfig
andSnapshot
to rely now on generic parameter, instead of BlockT
. Adjust in consequence their implementation to be compatible with types Hash
, or if possible any generic. Adapt Builder struct and implementation for these bounds.
[#4171]: Stabilize transactionWatch RPC class to version 1
The transactionWatch RPC API is stabilized to version 1.
[#3512]: [FRAME] Introduce Runtime Omni Bencher
Introduces a new freestanding binary; the frame-omni-bencher
. This can be used as alternative to the node-integrated benchmark pallet
command. It currently only supports pallet benchmarking.
The optional change to integrate this MR is in the node. The run
function is now deprecated in favour or run_with_spec
. This should be rather easy to integrate:
runner.sync_run(|config| cmd
- .run::<HashingFor<Block>, ReclaimHostFunctions>(config)
+ .run_with_spec::<HashingFor<Block>, ReclaimHostFunctions>(Some(config.chain_spec))
)
Additionally, a new --runtime
CLI arg was introduced to the benchmark pallet
command. It allows to generate the genesis state directly by the runtime, instead of using a spec file.
[#4168]: Stabilize chianHead RPC class to version 1
The chainHead RPC API is stabilized to version 1.
[#2714]: GenesisConfig presets for runtime
The ChainSpecBuilder
is extended with with_genesis_config_preset_name
method which allows to build chain-spec using named preset provided by the runtime.
[#2944]: Integrate litep2p into Polkadot SDK
litep2p is a libp2p-compatible P2P networking library. It supports all of the features of rust-libp2p that are currently being utilized by Polkadot SDK and is a drop-in replacement for any node operator.
For node developers, introduction of litep2p implies specifying the networking backend that Polkadot SDK shall use for P2P networking. A new trait called NetworkBackend
is introduced which is implemented by both the libp2p and litep2p backends and which is used to initialize any networking-related code.
[#3801]: Remove slot_duration
from aura::collators::basic::Params
Removes the slot_duration
parameter from the aura::collators::basic::Params
. The slot_duration
will now be fetched from the runtime using the Aura
runtime api.
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).)
[#3485]: Broker: sale price runtime api
Defines a runtime api for pallet-broker
for getting the current price of a core in the ongoing sale.
[#3660]: Removed pallet::getter
usage from Polkadot Runtime pallets
This PR removes all the pallet::getter
usages from the Polkadot Runtime pallets, and updates dependant runtimes accordingly. The syntax StorageItem::<T, I>::get()
should be used instead.
[#3889]: Allow privileged virtual bond into pallet Staking
Introduces a new low level API to allow privileged virtual bond into pallet Staking. This allows other pallets to stake funds into staking pallet while managing the fund lock and unlocking process themselves.
[#3708]: XCM builder pattern automatically converts instruction parameters.
Small quality of life improvement.
Previously, an XCM could be built like this:
let xcm = Xcm::builder()
.withdraw_asset((Parent, 100u128).into())
.buy_execution((Parent, 1u128).into())
.deposit_asset(All.into(), AccountId32 { id: [0u8; 32], network: None }.into())
.build();
Now, it can be built like this:
let xcm = Xcm::builder()
.withdraw_asset((Parent, 100u128))
.buy_execution((Parent, 1u128))
.deposit_asset(All, [0u8; 32])
.build();
[#4037]: Remove xcm::v3
from assets-common
nits
Remove xcm::v3
imports from assets-common
to make it more generic and facilitate the transition to newer XCM versions. The implementations AssetIdForTrustBackedAssetsConvert
, ForeignAssetsConvertedConcreteId
, or TrustBackedAssetsAsLocation
used hard-coded xcm::v3::Location
, which has been changed to use xcm::latest::Location
by default. Alternatively, the providing runtime can configure them according to its needs, such as with a lower XCM version.
Example:
- AssetIdForTrustBackedAssetsConvert<TrustBackedAssetsPalletLocationV3>,
+ AssetIdForTrustBackedAssetsConvert<TrustBackedAssetsPalletLocationV3, xcm::v3::Location>,
Another change is that the removed xcm_builder::V4V3LocationConverter
can be replaced with WithLatestLocationConverter
.
[#3659]: Unity Balance Conversion for Different IDs of Native Asset
Introduce types to define 1:1 balance conversion for different relative asset ids/locations of native asset for ConversionToAssetBalance
trait bounds.
[#2119]: Add example pallet for Multi-Block-Migrations
- Add an example pallet to demonstrate Multi-Block-Migrations.
- Add a
MigrationId
to frame-support for more convenient identification or migrations. - Add default config prelude for testing in pallet-migrations.
[#2292]: Migrate Fee Payment from Currency to fungible traits
Deprecates the CurrencyAdapter
and introduces FungibleAdapter
Deprecates ToStakingPot
and replaces usage with ResolveTo
Updated DealWithFees
, ToAuthor
, AssetsToBlockAuthor
to all use fungible
traits
Updated runtime XCM Weight Traders to use ResolveTo
Updated runtime TransactionPayment pallets to use FungibleAdapter
instead of CurrencyAdapter
Runtime Migration Guide:
- Replace usage of
CurrencyAdapter
withFungibleAdapter
- Replace usage of
ToStakingPot<Runtime>
withResolveTo<pallet_collator_selection::StakingPotAccountId<Runtime>, Balances>
[#3250]: Asset Conversion: Pool Account ID derivation with additional Pallet ID seed
Introduce PalletId as an additional seed parameter for pool's account id derivation.
The PR also introduces the pallet_asset_conversion_ops
pallet with a call to migrate a pool to the new account. Additionally fungibles::roles::ResetTeam
and fungible::lifetime::Refund
traits, to facilitate the migration functionality.
[#4229]: Fix Stuck Collator Funds
Fixes stuck collator funds by providing a migration that should have been in PR 1340.
[#4118]: pallet assets: minor improvement on errors returned for some calls
Some calls in pallet assets have better errors. No new error is introduced, only more sensible choice are made.
[#4006]: Deploy pallet-parameters to rococo and fix dynamic_params name expand
Fix the expanded names of dynamic_params
to not remove suffix "s".
Also deploy the parameters pallet to the rococo-runtime.
[#4189]: polkadot_runtime_parachains::coretime: Expose MaxXcmTransactWeight
Expose MaxXcmTransactWeight
via the Config
trait. This exposes the possibility for runtime implementors to set the maximum weight required for the calls on the coretime chain. Basically it needs to be set to max_weight(set_leases, reserve, notify_core_count)
where set_leases
etc are the calls on the coretime chain. This ensures that these XCM transact calls send by the relay chain coretime pallet to the coretime chain can be dispatched.
[#4075]: Adds ability to trigger tasks via unsigned transactions
This PR updates the validate_unsigned
hook for frame_system
to allow valid tasks to be submitted as unsigned transactions. It also updates the task example to be able to submit such transactions via an off-chain worker.
Note that is_valid
call on a task MUST be cheap with minimal to no storage reads.
Else, it can make the blockchain vulnerable to DoS attacks.
Further, these tasks will be executed in a random order.
[#3789]: [pallet-contracts] Benchmarks improvements
Reuse wasmi module when validating the wasm code.
[#4156]: AllowHrmpNotificationsFromRelayChain
barrier for HRMP notifications from the relaychain
A new barrier, AllowHrmpNotificationsFromRelayChain
, has been added.
This barrier can be utilized to ensure that HRMP notifications originate solely from the Relay Chain.
If your runtime relies on these notifications, you can include it in the runtime's barrier type for `xcm_executor::Conf...
Polkadot Parachain v1.10.1
This release contains the changes from polkadot-v1.10.0
to polkadot-parachain-v1.10.1
.
Changelog
Changelog for Node Operator
[#4070]: Avoid using para_backing_state
if runtime doesn't support async backing
Fixes #4067 which prevents collators to upgrade to latest release (v1.10.0)
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
Rust Stable: rustc 1.75.0 (82e1608df 2023-12-21)
Polkadot v1.10.0
This release contains the changes from polkadot-v1.9.0
to polkadot-v1.10.0
.
Changelog
Changelog for Node Dev
[#3521]: Collator side changes for elastic scaling
Parachain teams wishing to utilize the benefits of elastic scaling will need to upgrade their collator code to include these changes.
[#3302]: Collator protocol changes for elastic scaling
This PR introduces changes to the collator protocol to support elastic scaling.
Namely, a new variant added to the collation response to include parent head-data along with the collation. Currently, the new variant is not being used.
[#3950]: Add ClaimQueue
wrapper
Intoduces a new wrapper type: ClaimQueueSnapshot
. It contains a snapshot of the ClaimQueue
at an arbitrary relay chain block. Two methods are exposed to allow access to the claims at specific depths.
[#3795]: Enable collators to build on multiple cores
Introduces a CoreIndex
parameter in SubmitCollationParams
. This enables the collators to make use of potentially multiple cores assigned at some relay chain block. This extra parameter is used by the collator protocol and collation generation subsystems to forward the collation to the approapriate backing group.
[#3580]: Expose ClaimQueue
via a runtime api and consume it in collation-generation
Creates a new runtime api exposing the ClaimQueue
from scheduler
pallet. Consume the api in collation generation (if available) by getting what's scheduled on a core from the ClaimQueue
instead of from next_up_on_available
(from AvailabilityCores
runtime api).
[#3854]: Export unified ParachainHostFunctions
from cumulus-client-service
Exports ParachainHostFunctions
to have a bundled version of SubstrateHostFunctions
and cumulus_primitives_proof_size_hostfunction::storage_proof_size::HostFunctions
. This increases discoverability and makes it more obvious that they should be used together in parachain nodes.
[#3479]: Elastic scaling: runtime dependency tracking and enactment
Adds support in the inclusion and paras_inherent runtime modules for backing and including multiple candidates of the same para if they form a chain.
Changelog for Runtime Dev
[#3817]: Parachain Runtime API Implementations into mod apis Refactoring
This PR introduces a refactoring to the runtime API implementations within the parachain template project. The primary changes include enhancing the visibility of RUNTIME_API_VERSIONS
to pub
in impl_runtime_apis.rs
, centralizing API implementations in a new apis.rs
file, and streamlining lib.rs
. These changes aim to improve project structure, maintainability, and readability.
Key Changes:
RUNTIME_API_VERSIONS
is now publicly accessible, enhancing module-wide visibility.- Introduction of
apis.rs
centralizes runtime API implementations, promoting a cleaner and more navigable project structure. - The main runtime library file,
lib.rs
, has been updated to reflect these structural changes, removing redundant API implementations and simplifying runtime configuration by pointingVERSION
to the newly exposedRUNTIME_API_VERSIONS
fromapis.rs
.
Motivations:
- Improved Project Structure: Centralizing API implementations offers a more organized and understandable project layout.
- Enhanced Readability: The refactoring efforts aim to declutter
lib.rs
, facilitating easier comprehension for new contributors.
[#3722]: Fix kusama 0 backing rewards when entering active set
This PR fixes getting 0 backing rewards the first session when a node enters the active set.
[#3607]: XCM fee payment API
A runtime API was added for estimating the fees required for XCM execution and delivery.
This is the basic building block needed for UIs to accurately estimate fees.
An example implementation is shown in the PR. Ideally it's simple to implement, you only need to call existing parts of your XCM config.
The API looks like so:
fn query_acceptable_payment_assets(xcm_version: Version) -> Result<Vec<VersionedAssetId>, Error>;
fn query_xcm_weight(message: VersionedXcm<Call>) -> Result<Weight, Error>;
fn query_weight_to_asset_fee(weight: Weight, asset: VersionedAssetId) -> Result<u128, Error>;
fn query_delivery_fees(destination: VersionedLocation, message: VersionedXcm<()>) -> Result<VersionedAssets, Error>;
The first three relate to XCM execution fees, given an XCM, you can query its weight, then which assets are acceptable for buying weight and convert weight to a number of those assets.
The last one takes in a destination and a message you want to send from the runtime you're executing this on, it will give you the delivery fees.
[#3761]: Snowbridge: Synchronize from Snowfork repository
This PR improves the beacon client to send the execution header along with the message as proof and removes the verification and storing of all execution headers.
If the AH sovereign account is depleted and relayer rewards cannot be paid, the message should still be processed.
[#3792]: [pallet-xcm] fix transport fees for remote reserve transfers
This PR fixes pallet_xcm::transfer_assets
and pallet_xcm::limited_reserve_transfer_assets
extrinsics for transfers that need to go through remote reserves. The fix is adding a SetFeesMode { jit_withdraw: true }
instruction before local execution of InitiateReserveWithdraw
so that delivery fees are correctly charged by the xcm-executor. Without this change, a runtime that has implemented delivery fees would not be able to execute remote reserve transfers using these extrinsics.
[#3808]: Fix spelling mistakes in source code
Public crate changes:
- The public trait
RuntimeParameterStore
insubstrate/frame/support
had the associated type renamed fromAggregratedKeyValue
toAggregatedKeyValue
. - The public trait
AggregratedKeyValue
insubstrate/frame/support
was similarly renamed toAggregatedKeyValue
. - The public methods
test_versioning
andtest_versioning_register_only
of theTestApi
trait insubstrate/primitives/runtime-interface/test-wasm
had the spelling ofversionning
changed toversioning
. - The public functions
read_trie_first_descendant_value
andread_child_trie_first_descendant_value
insubstrate/primitives/trie
had the spelling ofdescedant
changed todescendant
.
[#3714]: Handle legacy lease swaps on coretime
When a registar::swap
extrinsic is executed it swaps two leases on the relay chain but the broker chain never knows about this swap. This change notifies the broker chain via a XCM message for a swap so that it can update its state.
[#3740]: Removed pallet::getter
usage from Beefy and MMR pallets
This PR removes pallet::getter
usage from pallet-beefy
, pallet-beefy-mmr
and pallet-mmr
, and updates dependant code and runtimes accordingly.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#3927]: pallet-xcm: deprecate transfer extrinsics without weight limit
pallet-xcm's extrinsics teleport_assets
and reserve_transfer_assets
have been marked as deprecated. Please change their usage to the limited_teleport_assets
and limited_reserve_transfer_assets
, respectively; or use the generic/flexible transfer_assets
extrinsic.
[#3738]: Removed pallet::getter
usage from pallet-alliance
This PR removes pallet::getter
usage from pallet-alliance
, and updates dependant code accordingly.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#3190]: Fix algorithmic complexity of the on-demand scheduler.
Improves on demand performance by a significant factor. Previously, having many on-demand cores would cause really poor blocktimes due to the fact that for each core the full order queue was processed. This allows for increasing the max size of the on-demand queue if needed.
At the same time, the spot price for on-demand is now checked prior to every order, ensuring that economic backpressure will be applied.
[#3654]: Remove experimental
feature from pallet-aura
The experimental
feature in pallet-aura
, previously used to gate different experimental changes, became redundant with the introduction of the async backing which relies on the mentioned changes, therefore, it is removed.
[#3718]: Deprecate scheduler traits v1 and v2
Add #[deprecated]
attribute to scheduler traits v1 and v2 to deprecate old versions
[#3471]: removed pallet::getter
from cumulus pallets
This PR removes all the pallet::getter
usages from cumulus pallets, and updates depdendant runtimes accordingly.
The ParaId can be retrieved using <ParachainInfo as Get<ParaId>>::get()
.
For other storage items, the syntax StorageItem::<T, I>::get()
should be used instead.
[#3754]: Migrates Westend to Runtime V2
This PR migrates Westend from construct_runtime
to Runtime V2 as introduced in #1378
[#3350]: removed pallet::getter
from Pallet AURA
This PR removes all the declarations of macro pallet::getter
in the Pallet AURA and replaces the use of storage getter functions authorities() & current_slot() with StorageItem::get()
API across the crates as listed bellow.
The purpose is to discourage developers to use this macro, that is currently being removed and soon will be deprecated.
[#3749]: pallet-xcm: deprecate execute and send in favor of execute_blob and send_blob
pallet-xcm's extrinsics execute
and send
have been marked as deprecated. Please change their usage to the new execute_blob
and send_blob
. The migration from the old extrinsic to the new is very simple.
If you have your message xcm: VersionedXcm<Call>
, then instead of passing in Box::new(xcm)
to both execute
and send
, you would pass in `xcm.enc...
Polkadot v1.9.0
This release contains the changes from polkadot-v1.8.0
to polkadot-v1.9.0
.
Changelog
Changelog for Node Dev
[#3187]: Retrying an execution on failed runtime construction
If a runtime construction error happened during the execution request, then the artifact is re-prepared and the execution request is retried at most once. See also the related issue.
[#3233]: provisioner: allow multiple cores assigned to the same para
Enable supplying multiple backable candidates to the paras_inherent pallet for the same paraid.
[#3447]: Use generic hash for runtime wasm in resolve_state_version_from_wasm
Changes the runtime hash algorithm used in resolve_state_version_from_wasm from DefaultHasher to a caller-provided one (usually HashingFor<Block>
). Fixes a bug where the runtime wasm was being compiled again when it was not needed, because the hash did not match.
Changelog for Node Operator
[#3523]: Fix crash of synced parachain node run with --sync=warp
Fix crash of SyncingEngine
when an already synced parachain node is run with --sync=warp
(issue #3496).
The issue manifests itself by errors in the logs:
[Parachain] Cannot set warp sync target block: no warp sync strategy is active.
[Parachain] Failed to set warp sync target block header, terminating `SyncingEngine`.
Followed by a stream of messages:
[Parachain] Protocol command streams have been shut down
[#3231]: Allow parachain which acquires multiple coretime cores to make progress
Adds the needed changes so that parachains which acquire multiple coretime cores can still make progress.
Only one of the cores will be able to be occupied at a time.
Only works if the ElasticScalingMVP node feature is enabled in the runtime and the block author validator is updated to include this change.
[#3510]: Fix multi-collator parachain transition to async backing
The dynamic Aura slot duration, introduced in PR#3211, didn't take the block import pipeline into account. The result was the parachain backed by multiple collators not being able to keep producing blocks after its runtime was upgraded to support async backing, requiring to
restart all the collator nodes. This change fixes the issue, introducing the dynamic Aura slot duration into the block import pipeline.
[#3504]: add prometheus label "is_rate_limited" to rpc calls
This PR adds a label "is_rate_limited" to the prometheus metrics "substrate_rpc_calls_time" and "substrate_rpc_calls_finished" than can be used to distinguish rate-limited RPC calls from other RPC calls. Because rate-limited RPC calls may take tens of seconds.
Changelog for Runtime Dev
[#3491]: Remove Deprecated OldWeight
Removed deprecated sp_weights::OldWeight type. Use [weight_v2::Weight
] instead.
[#3002]: PoV Reclaim Runtime Side
Adds a mechanism to reclaim proof size weight.
- Introduces a new
SignedExtension
that reclaims the difference
between benchmarked proof size weight and actual consumed proof size weight. - Introduces a manual mechanism,
StorageWeightReclaimer
, to reclaim excess storage weight for situations
that require manual weight management. The most prominent case is theon_idle
hook. - Adds the
storage_proof_size
host function to the PVF. Parachain nodes should add it to ensure compatibility.
To enable proof size reclaiming, add the host storage_proof_size
host function to the parachain node. Add the
StorageWeightReclaim
SignedExtension
to your runtime and enable proof recording during block import.
[#3378]: Remove deprecated GenesisConfig
Removes deprecated type GenesisConfig
, it was replaced by RuntimeGenesisConfig
on May 24 of 2023. The type GenesisConfig
was deprecated on May 24 of 2023 #14210
[#1554]: Runtime Upgrade ref docs and Single Block Migration example pallet
frame_support::traits::GetStorageVersion::current_storage_version
has been renamed frame_support::traits::GetStorageVersion::in_code_storage_version
.
A simple find-replace is sufficient to handle this change.
[#3456]: Removed pallet::getter
usage from pallet-collective
This PR removes pallet::getter
usage from pallet-collective
, and updates dependant code accordingly.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#1781]: Multi-Block-Migrations, poll
hook and new System Callbacks
The major things that this MR touches are:
Multi-Block-Migrations: pallet-migrations
is introduced that can be configured in the System
of a runtime to act as multi-block migrator. The migrations
pallet then in turn receives the list of MBMs as config parameter. The list of migrations can be an aggregated
tuple of SteppedMigration
trait implementation.
It is paramount that the migrations
pallet is configured in System
once it is deployed. A test is in place to double check this.
To integrate this into your runtime, it is only necessary to change the return type of initialize_block
to RuntimeExecutiveMode
. For extended info please see #1781.
poll: a new pallet hook named poll
is added. This can be used for places where the code that should be executed is not deadline critical. Runtime devs are advised to skim their usage of on_initialize
and on_finalize
to see whether they can be replace with poll
. poll
is not guaranteed to be called each block. In fact it will not be called when MBMs are ongoing.
System Callbacks: The system
pallet gets five new config items - all of which can be safely set to ()
as default. They are:
SingleBlockMigrations
: replaces theExecutive
now for configuring migrations.MultiBlockMigrator
: thepallet-migrations
would be set here, if deployed.PreInherents
: a hook that runs before any inherent.PostInherents
: a hook to run between inherents andpoll
/MBM logic.PostTransactions
: a hook to run after all transactions but beforeon_idle
.
[#3377]: Permissioned contract deployment
This PR introduces two new config types that specify the origins allowed to upload and instantiate contract code. However, this check is not enforced when a contract instantiates another contract.
[#3532]: Remove deprecated trait Store
The deprecated trait Store
feature has been removed from the codebase. Please remove usages of generate_store
macro from your pallets and access the storage through generics. For example, <Self as Store>::StoredRange::mutate
will need to be updated to StoredRange::<T>::mutate
.
[#2393]: [XCMP] Use the number of 'ready' pages in XCMP suspend logic
Semantics of the suspension logic in the XCMP queue pallet change from using the number of total pages to the number of 'ready' pages. The number of ready pages is now also exposed by the MessageQueue
pallet to downstream via the queue footprint
.
[#3505]: Removes as [disambiguation_path]
from the required syntax in derive_impl
This PR removes the need to specify as [disambiguation_path]
for cases where the trait definition resides within the same scope as default impl path.
For example, in the following macro invocation
#[derive_impl(frame_system::config_preludes::TestDefaultConfig as frame_system::DefaultConfig)]
impl frame_system::Config for Runtime {
...
}
the trait DefaultConfig
lies within the frame_system
scope and TestDefaultConfig
impls the DefaultConfig
trait.
Using this information, we can compute the disambiguation path internally, thus removing the need of an explicit specification:
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
impl frame_system::Config for Runtime {
...
}
In cases where the trait lies outside this scope, we would still need to specify it explicitly, but this should take care of most (if not all) uses of derive_impl
within FRAME's context.
[#3460]: Repot all templates
This PR moves all templates into a single folder in the polkadot-sdk repo (/templates
) and unifies their crate names as well. Most notably, the crate name for what was formerly known as node-template
is no solochain-template-node
. The other two crates in the template are
consequently called: solochain-runtime-template
and pallet-solochain-template
. The other two template crate names follow a similar patter, just replacing solochain
with parachain
or minimal
.
This PR is part of a bigger step toward automating the template repositories, see the following: #3155
[#3643]: Fix weight refund for pallet_collator_selection::set_candidacy_bond
This PR implements the weight refund of pallet_collator_selection::set_candidacy_bond
to account for no iterations over the candidate list when the candidacy bond is decreased.
[#3665]: Revert "FRAME Create TransactionExtension as a replacement for SignedExtension (#2280)"
This PR reverts the PR which introduced TransactionExtension
to replace SignedExtension
.
[#3371]: removed pallet::getter
from example pallets
This PR removes all the pallet::getter
usages from the template pallets found in the Substrate and Cumulus template nodes, and from the Substrate example pallets.
The purpose is to discourage developers to use this macro, that is currently being removed and soon will be deprecated.
[#3574]: Generate test functions for each benchmark with benchmarking v2
This PR fixes an issue where using impl_benchmark_test_suite
macro within modules that use the benchmarking v2 macros (#[benchmarks]
and #[instance_benchmarks]
) always produced a single test called test_benchmarks
instead of a separate benchmark test for every benchmark (noted with the `...
Polkadot v1.8.0
This release contains the changes from polkadot-v1.7.2
to polkadot-v1.8.0
.
Changelog
Changelog for Node Dev
[#3395]: benchmarking-cli
pallet
subcommand: refactor --list
and add --all
option
pallet
subcommand's --list
now accepts two values: "all" and "pallets". The former will list all available benchmarks, the latter will list only pallets.
Also adds --all
to run all the available benchmarks and --no-csv-header
to omit the csv-style header in the output.
NOTE: changes are backward compatible.
[#3079]: Implement transaction_unstable_broadcast and transaction_unstable_stop
A new RPC class is added to handle transactions. The transaction_unstable_broadcast
broadcasts the provided transaction to the peers of the node, until the transaction_unstable_stop
is called. The APIs are marked as unstable and subject to change in the future. To know if the transaction was added to the chain, users can decode the bodies of announced finalized blocks. This is a low-level approach for transactionWatch_unstable_submitAndWatch
.
[#3160]: prospective-parachains: allow requesting a chain of backable candidates
Enable requesting a chain of multiple backable candidates. Will be used by the provisioner to build paras inherent data for elastic scaling.
[#3244]: Make the benchmark pallet
command only require a Hasher
Currently the benchmark pallet
command requires a Block
type, while only using its hasher. Now this is changed to only require the Easher. This means to use HashingFor<Block>
in the place where Block
was required.
Example patch for your node with cmd
being BenchmarkCmd::Pallet(cmd)
:
- cmd.run::<Block, ()>(config)
+ cmd.run::<HashingFor<Block>, ()>(config)
[#3308]: Parachains-Aura: Only produce once per slot
With the introduction of asynchronous backing the relay chain allows parachain to include blocks every 6 seconds. The Cumulus Aura implementations, besides the lookahead collator, are building blocks when there is a free slot for the parachain in the relay chain. Most parachains are still running with a 12s slot duration and not allowing to build multiple blocks per slot. But, the block production logic will be triggered every 6s, resulting in error logs like: "no space left for the block in the unincluded segment". This is solved by ensuring that we don't build multiple blocks per slot.
[#3166]: Expose internal functions used by spawn_tasks
This allows to build a custom version of spawn_tasks
with less copy-paste required
Changelog for Node Operator
[#3358]: Do not stall finality on spam disputes
This PR fixes the issue that periodically caused finality stalls on Kusama due to disputes happening there in combination with disputes spam protection mechanism.
See: #3345
[#3301]: rpc server add rate limiting.
Add rate limiting for RPC server which can be utilized by the CLI --rpc-rate-limit <calls per minute>
The rate-limiting is disabled by default.
[#3230]: rpc server remove prometheus metrics substrate_rpc_requests_started/finished
and refactor WS ping/pongs.
This PR updates the rpc server library to jsonrpsee v0.22
to utilize new APIs.
Breaking changes:
- Remove prometheus RPC metrics
substrate_rpc_requests_started
andsubstrate_rpc_requests_finished
. - The RPC server now disconnects inactive peers that didn't acknowledge WebSocket pings more than three times in time.
Added:
- Add prometheus RPC
substrate_rpc_sessions_time
to collect the duration for each WebSocket session.
[#3364]: rpc server expose batch request configuration
Add functionality to limit RPC batch requests by two new CLI options:
--rpc-disable-batch-request
- disable batch requests on the server
--rpc-max-batch-request-len
- limit batches to LEN on the server
[#3435]: Fix BEEFY-related gossip messages error logs
Added logic to pump the gossip engine while waiting for other things to make sure gossiped messages get consumed (practically discarded until worker is fully initialized). This fixes an issue where node operators saw error logs, and fixes potential RAM bloat when BEEFY initialization takes a long time (i.e. during clean sync).
[#3477]: Allow parachain which acquires multiple coretime cores to make progress
Adds the needed changes so that parachains which acquire multiple coretime cores can still make progress.
Only one of the cores will be able to be occupied at a time.
Only works if the ElasticScalingMVP node feature is enabled in the runtime and the block author validator is updated to include this change.
Changelog for Runtime Dev
[#1660]: Implements a percentage cap on staking rewards from era inflation
The pallet-staking
exposes a new perbill configuration, MaxStakersRewards
, which caps the amount of era inflation that is distributed to the stakers. The remainder of the era inflation is minted directly into T::RewardRemainder
account. This allows the runtime to be configured to assign a minimum inflation value per era to a specific account (e.g. treasury).
[#3052]: Fixes a scenario where a nomination pool's TotalValueLocked
is out of sync due to staking's implicit withdraw
The nomination pools pallet TotalValueLocked
may get out of sync if the staking pallet does implicit withdrawal of unlocking chunks belonging to a bonded pool stash. This fix is based on a new method on the OnStakingUpdate
traits, on_withdraw
, which allows the
nomination pools pallet to adjust the TotalValueLocked
every time there is an implicit or explicit withdrawal from a bonded pool's stash.
[#3384]: [pallet_contracts] stabilize call_v2
, instantiate_v2
, lock_dependency
and unlock_dependency
These APIs are currently unstable and are being stabilized in this PR.
Note: add_delegate_dependency
and remove_delegate_dependency
have been renamed to lock_dependency
and unlock_dependency
respectively.
[#3225]: Introduce submit_finality_proof_ex call to bridges GRANDPA pallet
New call has been added to pallet-bridge-grandpa: submit_finality_proof_ex
. It should be used instead of deprecated submit_finality_proof
. submit_finality_proof
will be removed later.
[#3325]: Ensure TracksInfo
tracks are sorted by ID.
Add a integrity_check
function to trait TracksInfo
and explicitly state that tracks must always be sorted by ID. The referenda pallet now also uses this check in its integrity_test
.
[#2903]: Implement ConversionToAssetBalance
in asset-rate
Implements the ConversionToAssetBalance
trait to the asset-rate pallet.
Previously only the ConversionFromAssetBalance
trait was implemented, which would allow to convert an asset balance into the corresponding native balance.
The ConversionToAssetBalance
allows to use pallet-asset-rate, e.g., as a mechanism to charge XCM fees in an asset that is not the native.
[#3361]: Fix double charge of host function weight
Fixed a double charge which can lead to quadratic gas consumption of the call
and instantiate
host functions.
[#3060]: Add retry mechanics to pallet-scheduler
This PR adds retry mechanics to pallet-scheduler, as described in the issue above.
Users can now set a retry configuration for a task so that, in case its scheduled run fails, it will be retried after a number of blocks, for a specified number of times or until it succeeds. If a retried task runs successfully before running out of retries, its remaining retry counter will be reset to the initial value. If a retried task runs out of retries, it will be removed from the schedule. Tasks which need to be scheduled for a retry are still subject to weight metering and agenda space, same as a regular task. Periodic tasks will have their periodic schedule put on hold while the task is retrying.
[#3243]: Don't fail fast if the weight limit of a cross contract call is too big
Cross contracts calls will now be executed even if the supplied weight limit is bigger than the reamining weight. If the actual weight is too low they will fail in the cross contract call and roll back. This is different from the old behaviour where the limit for the cross contract call must be smaller than the remaining weight.
[#2061]: Add Parameters Pallet
Adds pallet-parameters
that allows to have parameters for pallet configs that dynamically change at runtime. Allows to be permissioned on a per-key basis and is compatible with ORML macros.
[#3154]: Contracts: Stabilize caller_is_root API
Removed the #[unstable]
attrribute on caller_is_root
host function.
[#3212]: Ranked collective introduce Add
and Remove
origins
Add two new origins to the ranked-collective pallet. One to add new members and one to remove members, named AddOrigin
and RemoveOrigin
respectively.
[#3370]: Remove key
getter from pallet-sudo
Removed the key
getter function from the sudo pallet. There is no replacement for getting the key currently.
[#2290]: im-online pallet offcain storage cleanup
Adds a function clear_offchain_storage
to pallet-im-online
. This function can be used after the pallet was removed to clear its offchain storage.
[#3184]: Contracts: Remove no longer enforced limits from the Schedule
The limits are no longer in use and do nothing. Every builder overwritting them can just adapt their code to remove them without any consequence.
[#3415]: [pallet-contracts] Add APIVersion to the config.
Add APIVersion
to the config to communicate the state of the Host functions exposed by the pallet.
Changelog for Runtime User
[#3319]: Add Coretime to Westend
Add the on demand and coretime assigners and migrate from legacy parachain ...
Polkadot v1.7.2
This release contains the changes from polkadot-v1.7.1
to polkadot-v1.7.2
.
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
Rust Stable: rustc 1.75.0 (82e1608df 2023-12-21)
Rust Nightly: rustc 1.77.0-nightly (ef71f1047 2024-01-21)
Node Changes
Changelog for Node Operator
[#3469]: Allow parachain which acquires multiple coretime cores to make progress
Adds the needed changes so that parachains which acquire multiple coretime cores can still make progress.
Only one of the cores will be able to be occupied at a time.
Only works if the ElasticScalingMVP node feature is enabled in the runtime and the block author validator is updated to include this change.
Polkadot v1.7.1
This release contains the changes from polkadot-v1.7.0
to polkadot-v1.7.1
.
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
Rust Stable: rustc 1.75.0 (82e1608df 2023-12-21)
Rust Nightly: rustc 1.77.0-nightly (ef71f1047 2024-01-21)
Changes
Changelog for Node Operator
.
#3385: Do not stall finality on spam disputes
This PR fixes the issue that periodically caused finality stalls on Kusama due to disputes happening there in combination with disputes spam protection mechanism.
See: #3345
Polkadot v1.7.0
This release contains the changes from polkadot-v1.6.0
to polkadot-v1.7.0
.
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
Rust Stable: rustc 1.74.0 (79e9716c9 2023-11-13)
Rust Nightly: rustc 1.75.0-nightly (9d83ac217 2023-10-31)
Runtimes
Westend
🏋️ Runtime size: 1.650 MB (1,730,647 bytes)
🗜 Compressed: Yes, 79.22%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: westend-1007000 (parity-westend-0.tx24.au2)
🗳️ system.setCode hash: 0xe8db5e7b5b9edcc68c2275a2e64b2092b36f19159dbb55d4c7574198f325383e
🗳️ authorizeUpgrade hash: 0x30422f3a96a9a2a81e88c0ba936ba859fa4e9bcb9d06b4febe4a21bd76d2f46f
🗳️ Blake2-256 hash: 0x085f68ab9991262334e944c078caeb8b20fede674dc1fca5fdc5fd7d4dd35e3a
📦 IPFS: https://www.ipfs.io/ipfs/QmSmmQXCkADd8f5JVese9Cp8xnuo8F3UdLzURQnD7QVUDU
Westend AssetHub
🏋️ Runtime size: 1.214 MB (1,272,838 bytes)
🗜 Compressed: Yes, 80.65%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: westmint-1007000 (westmint-0.tx14.au1)
🗳️ system.setCode hash: 0xb1d33d2630c1ce11c1fa4df6e5764f0192ea3057372c885c14953e33008a3d56
🗳️ authorizeUpgrade hash: 0x3bac1870a33c3e6376ea5e5e6eae9d20d44b5a203d3ec5c257d7705c28b9e0e7
🗳️ Blake2-256 hash: 0xc2a2bbc026991a9177e4f94cd18227734aa68640c12844a3ade69827def7d7eb
📦 IPFS: https://www.ipfs.io/ipfs/QmbxLDghaGECMRoVH7Vf82pmYZPDoJf8RERhGimovpjNTa
Westend BridgeHub
🏋️ Runtime size: 0.990 MB (1,038,565 bytes)
🗜 Compressed: Yes, 79.31%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: bridge-hub-westend-1007000 (bridge-hub-westend-0.tx4.au1)
🗳️ system.setCode hash: 0x8b5d3c85e0a870781d2b42b03f8301c3f85e38464745c6482ec5e86c557ee884
🗳️ authorizeUpgrade hash: 0x97b7ae2d8d7142a4d36e49db5f16db24a826e02e537bbb1ad6201145dce33527
🗳️ Blake2-256 hash: 0x16a78209318174f006d092fe033da616bb206ffa751ac26b56aa7c6b326dd0fc
📦 IPFS: https://www.ipfs.io/ipfs/QmZXsKU9SK2GZHTaaNZm7fNWQT33fu9vF1ie5LqLXMRsws
Westend Collectives
🏋️ Runtime size: 1.059 MB (1,110,582 bytes)
🗜 Compressed: Yes, 80.37%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: collectives-westend-1007000 (collectives-westend-0.tx5.au1)
🗳️ system.setCode hash: 0x68a26809692f9147407297cec30803c79555d1b539939e905b5b91e5e801fe7a
🗳️ authorizeUpgrade hash: 0x9f6e79b09813802491f87fd49aa904423f40c41efb7000c907ceb8210cf7a857
🗳️ Blake2-256 hash: 0x4fc1411ffcfe4ba8f002d97e2fd32da34714c8393588acefb4f463ff03ae36a8
📦 IPFS: https://www.ipfs.io/ipfs/QmZsfSFqijMsprGx7wY2ef9QtW7E6diV9ELp72jCMg1Cpv
Westend Coretime
🏋️ Runtime size: 0.844 MB (885,451 bytes)
🗜 Compressed: Yes, 79.61%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: coretime-westend-1007000 (coretime-westend-0.tx0.au1)
🗳️ system.setCode hash: 0xd51c3f3f8910576cc091bf033bc52e18fb44a73cdbd2eadfe97db77d41c03c88
🗳️ authorizeUpgrade hash: 0x860b7b209336985fb1733e6b24823eb62f24896e35740f8bd0c0b16c8d041fd1
🗳️ Blake2-256 hash: 0x8c48ce6e3636328385c29f3e4fa5f0f4e5eeeff6e1d9e36f11d489a16dde696e
📦 IPFS: https://www.ipfs.io/ipfs/QmTrN2LhjRn52Mymcwg3prNvJNk2RWSLLDzsyV7sno2j1g
Westend Glutton
🏋️ Runtime size: 0.546 MB (572,163 bytes)
🗜 Compressed: Yes, 76.65%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: glutton-westend-1007000 (glutton-westend-0.tx1.au1)
🗳️ system.setCode hash: 0xfdb7bd3801b3250c136066a878353c6cd5c83b95d065acf977daff7d7022da47
🗳️ authorizeUpgrade hash: 0x4a18fd9f8e857aad42ae6d2c0dd5cfd79f2c25e5e35d1f61ba2518576d9d2dc8
🗳️ Blake2-256 hash: 0xe52cbeee457bb8c8e748536da5dd5b0ef3fa079abdda86940a1034576a84212f
📦 IPFS: https://www.ipfs.io/ipfs/QmTDn5UJWT3habPBBiuebcLk4FJPyQ7bnwUJTpJaymSDgB
Westend People
🏋️ Runtime size: 0.892 MB (935,728 bytes)
🗜 Compressed: Yes, 79.59%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: people-westend-1007000 (people-westend-0.tx0.au1)
🗳️ system.setCode hash: 0x9cfd53e5820b100430b4f085a392ac45e1c7b2c742de09a8b14ce1ac721db63c
🗳️ authorizeUpgrade hash: 0x794e02607f5cef65c997d296cdad233e2923d1f51144d2c954c16327177f7abe
🗳️ Blake2-256 hash: 0x6dd054d921cc01892835fc38354532a087ac3f7d7b7264b70c78288ba3b02a0a
📦 IPFS: https://www.ipfs.io/ipfs/QmUzfvJfhtrNidD4LKweMynww8BBmMtjjdkhcZ8UjYkxwm
Rococo
🏋️ Runtime size: 1.532 MB (1,606,091 bytes)
🗜 Compressed: Yes, 79.79%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: rococo-1007000 (parity-rococo-v2.0-0.tx24.au0)
🗳️ system.setCode hash: 0xc09e58e1d53e95b9844bdd765fcb746d32a522fd03586efe60cd9ba443aa0746
🗳️ authorizeUpgrade hash: 0x37e1233ce9b5e24538d8c13b1b7c7125992beb218e412297fb592ec0d1b6aed8
🗳️ Blake2-256 hash: 0x3aef2214f1b12a9a6d2a5890d71fa3a8879e29efd14a1377976d26eceb61ccbc
📦 IPFS: https://www.ipfs.io/ipfs/QmaMoKW23EM8McN3LTLTUPXLwqjBvDoedUV1iWb1gJpmXb
Rococo AssetHub
🏋️ Runtime size: 1.205 MB (1,263,249 bytes)
🗜 Compressed: Yes, 80.71%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: statemine-1007000 (statemine-0.tx14.au1)
🗳️ system.setCode hash: 0x920541f407404457bcaabbf77c9ec79e7de09d5ac115f84a57dae2cf4c0b1e0a
🗳️ authorizeUpgrade hash: 0x1640c015e3a4eab2dd399b5475bc05ba7413e7e8b97e62d8adf36c2de7993efe
🗳️ Blake2-256 hash: 0x2fa670a729b4a891bd375f62020629013853839464c48ee68fa45dd26715e28f
📦 IPFS: https://www.ipfs.io/ipfs/QmWSu4i87NLeB1XGiNr8xBtmqyUMBq1HbppXzyH9mvuUar
Rococo BridgeHub
🏋️ Runtime size: 1.275 MB (1,337,062 bytes)
🗜 Compressed: Yes, 78.63%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: bridge-hub-rococo-1007000 (bridge-hub-rococo-0.tx4.au1)
🗳️ system.setCode hash: 0x3bcdab6fdd5c5708a776f255bde6854693ae01f686999b4534fd2fab160d92da
🗳️ authorizeUpgrade hash: 0xab1fd03f6e67ef7d718856b85b87f458074829504834ebe7edec551f9292f6ba
🗳️ Blake2-256 hash: 0x49284e74a213185e27d78676702d9dbb045a04c15ed12b8fcae3170edf9a778d
📦 IPFS: https://www.ipfs.io/ipfs/QmPJT42Estg4eSzXQ5e6WzBMf5N1w8wo83wJTFJ2EF6uDj
Rococo Contracts
🏋️ Runtime size: 1.207 MB (1,265,977 bytes)
🗜 Compressed: Yes, 79.85%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: contracts-rococo-1007000 (contracts-rococo-0.tx6.au1)
🗳️ system.setCode hash: 0xec4b5d2a34e5ef727e8856f9a282dfed273c2acc7dda0921cfe60d7dc2bc6c3f
🗳️ authorizeUpgrade hash: 0xfb0e36a4d4aba12274cd2aeb15872c4467bc7bebc28e4725fd7bcb60cfd862d5
🗳️ Blake2-256 hash: 0xedf060b616f148300d55f693aadf74713c6db68c911d1a39e5ac1dda38485c19
📦 IPFS: https://www.ipfs.io/ipfs/QmVnakWvgPKF6X6FtcToULECYeZa1Cq9h2mUj9ZzjdTd78
Rococo Coretime
🏋️ Runtime size: 0.896 MB (939,268 bytes)
🗜 Compressed: Yes, 79.58%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: coretime-rococo-1007000 (coretime-rococo-0.tx0.au1)
🗳️ system.setCode hash: 0x5725c355036b000c8004c739d3e6983fd2e80ab054b91df9f8b1e8a3b1771b26
🗳️ authorizeUpgrade hash: 0x9ccc2ab2adb967dab8ec644c6fdc662587d712f22b371f62dbe5d434a5dede52
🗳️ Blake2-256 hash: 0x4d260993fcf091490de24114a8b648c01cb555012422aab4d1b5bb5bf726a297
📦 IPFS: https://www.ipfs.io/ipfs/QmXSHoTHszsEsHCYYTHQE7Looic5ntsL8AvzmoJTMu3byZ
Rococo People
🏋️ Runtime size: 0.891 MB (934,165 bytes)
🗜 Compressed: Yes, 79.62%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: people-rococo-1007000 (people-rococo-0.tx0.au1)
🗳️ system.setCode hash: 0xd8ec1fc15d0932871c1e7f3de86269e31e0e26cb7cac35df11a0a40b806dd60a
🗳️ authorizeUpgrade hash: 0xbd0fafd0e40f1c277872cf91bf10557e9f0d0274e0bd32f6139169ff14a90041
🗳️ Blake2-256 hash: 0x26c9c9e0041937900af9bb06d7907e4c055a514db765c742c6b1893babebee84
📦 IPFS: https://www.ipfs.io/ipfs/QmUo7R7akEd9Wk5SGhVKRimNsDRciRtknbH3B8aRFzoNGo
Changes
Changelog for Node Dev
.
#2689 & #3074: Fix BEEFY & Warp Sync compatibility - Allow Warp Sync for Validators
#2942: Fix pallet-nomination-pools v6 to v7 migration
Restores the behaviour of the nomination pools V6ToV7
migration so that it still works when the pallet will be upgraded to V8 afterwards.
#3108: revert paritytech/polkadot#6577 & related changes
Moves BEEFY related pallets behind session_pallet
for Rococo and Westend runtimes.
Effects that each MmrLeaf
in the MMR generated by mmr_pallet
for block<N>
references the next_auth_set
of block<N>
and not block<N-1>
.
Breaking change for proofs generated by mmr_generateProof
#2125: Introd...
Polkadot v1.6.0
This release contains the changes from polkadot-v1.5.0
to polkadot-v1.6.0
.
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
Rust Stable: rustc 1.74.0 (79e9716c9 2023-11-13)
Rust Nightly: rustc 1.75.0-nightly (9d83ac217 2023-10-31)
Runtimes
Westend
🏋️ Runtime size: 1.562 MB (1,637,835 bytes)
🗜 Compressed: Yes, 78.95%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: westend-1006000 (parity-westend-0.tx24.au2)
🗳️ system.setCode hash: 0xce66c9fa3a48c63687513934dbc9a57bc5071fc5f97ab9302dca23a0c1e425c9
🗳️ authorizeUpgrade hash: 0x128da921419d7743d663213bc2e245f04bf274b18efe6a32e4c9613aed803a2d
🗳️ Blake2-256 hash: 0xb7b7a532804babb534bde7872c38e51e89e18832a912d2a65506270a0e47abeb
📦 IPFS: https://www.ipfs.io/ipfs/QmWXAVjAo1QLqS4LxMfGPFpCPHkykCx6DXeVkm5cHEZaq9
Westend AssetHub
🏋️ Runtime size: 1.079 MB (1,131,096 bytes)
🗜 Compressed: Yes, 80.05%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: westmint-1006000 (westmint-0.tx14.au1)
🗳️ system.setCode hash: 0x2445c78ca331c4ee5fb5193d5cc2f556dbf36171c95550210d2ffa739e96a02f
🗳️ authorizeUpgrade hash: 0xea14982747a628b50946c825c74d5070d916549c3223b819072a1c2260a0cbc9
🗳️ Blake2-256 hash: 0x7d842925d6726a3b814de703a354a828f4d8d8bf3464f284e7f61773acb3409a
📦 IPFS: https://www.ipfs.io/ipfs/QmP5d7k3XRukeqEa7DGD42aDR83EyB5LSWnbiPcziHYtkQ
Westend BridgeHub
🏋️ Runtime size: 0.916 MB (960,000 bytes)
🗜 Compressed: Yes, 78.30%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: bridge-hub-westend-1006000 (bridge-hub-westend-0.tx4.au1)
🗳️ system.setCode hash: 0xb2a6ec4b55b9c038577ef6ef796340989e43b51dbae3d7a790f15a809fed583c
🗳️ authorizeUpgrade hash: 0xc5ee192b5ebf36d1546394405f9d24e77470e612fe7e473e2d6a46abb99b2315
🗳️ Blake2-256 hash: 0xa6b3c1921fda48811a74cdd4709bcd9bd51e59da6f4229f4ee3cece1e374ed43
📦 IPFS: https://www.ipfs.io/ipfs/QmVQHk9vQ7WQbnRx5VWvGrB876RGetX3QFYERLEfd2vbeP
Westend Coretime
🏋️ Runtime size: 0.767 MB (804,476 bytes)
🗜 Compressed: Yes, 78.66%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: coretime-westend-1006000 (coretime-westend-0.tx0.au1)
🗳️ system.setCode hash: 0x77d8610654a500994478822fbad015fcc7097141add5963204fe00b87f044aa1
🗳️ authorizeUpgrade hash: 0x823eb2c9fe55c387e4a3acf4324d8ada60874fb746a7a2445629c46e31dfb3a1
🗳️ Blake2-256 hash: 0xd984aa8a670cdf56355a079dbde6a7bff6400e7afb0cf8eb0882824a81d5bfb6
📦 IPFS: https://www.ipfs.io/ipfs/QmU3pMBhq1ErAFih2LYwzbeWcW1rBwZrfDRX9JrhuTQG8C
Westend Collectives
🏋️ Runtime size: 0.967 MB (1,013,562 bytes)
🗜 Compressed: Yes, 79.62%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: collectives-westend-1006000 (collectives-westend-0.tx5.au1)
🗳️ system.setCode hash: 0xf0b49506aa03df48406171e7c63660fb38541171f06c24cb5eb6aa3efecc21df
🗳️ authorizeUpgrade hash: 0x44a3b0438f54ab59ec59fd9af5b59e2e6eb19f73f479868181e6cb929597be31
🗳️ Blake2-256 hash: 0xc20de93729ada76a8cebc4869acea6a21e889003cc297d7ebbea39cdfbd3979a
📦 IPFS: https://www.ipfs.io/ipfs/QmbJCZgJNtF4RFQ7hTcW68kCP8FryirR1ccnmUTVfKGtBL
Westend Glutton
🏋️ Runtime size: 0.510 MB (534,953 bytes)
🗜 Compressed: Yes, 76.41%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: glutton-westend-1006000 (glutton-westend-0.tx1.au1)
🗳️ system.setCode hash: 0x2f17ad93507272e1e14e7da12299396be4117e81f203a63a803d35e3c1f896a1
🗳️ authorizeUpgrade hash: 0x57fc47d0bf1691699c83e16ec498e5b3ad11ea1719871e18cacde6fd6570e1e0
🗳️ Blake2-256 hash: 0xf288f7ee2cd5405eeb2ad3cc9edfd487238e526af92cbac6c24809e96f158f9f
📦 IPFS: https://www.ipfs.io/ipfs/QmUiafAKc6Q2i51sTTisFF7fZKJpHompaNfdPg2kYkN7Mz
Westend People
🏋️ Runtime size: 0.803 MB (842,127 bytes)
🗜 Compressed: Yes, 78.71%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: people-westend-1006000 (people-westend-0.tx0.au1)
🗳️ system.setCode hash: 0x056a6736e915abd2055e64f8ae5fe71d9671c2640d0acf671aa8099735c2ec64
🗳️ authorizeUpgrade hash: 0xad2ec1cbb27c8f0f9ac74f5c7fee20fd5664cedb7b262eabdb02a60e3f781b35
🗳️ Blake2-256 hash: 0xc872ecbe32a989c9ed3bee03a9f26d665c128a8566773812bc3e84012b1560d3
📦 IPFS: https://www.ipfs.io/ipfs/QmUn95kxzizNpyZuS6cjdSg4AEMp98TD8NNYdakuCaSbDc
Rococo
🏋️ Runtime size: 1.446 MB (1,516,051 bytes)
🗜 Compressed: Yes, 79.38%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: rococo-1006001 (parity-rococo-v2.0-0.tx24.au0)
🗳️ system.setCode hash: 0x1316b146bd9a5c22bce025d294d2d685081be0cf1340075cbaea52f7ce590657
🗳️ authorizeUpgrade hash: 0x590095e251448b28ea66ff111131e12685467aceece62bf0756af72827c2cabb
🗳️ Blake2-256 hash: 0xb5a792069b84a5e4389b08f60873a7aafdf9122102e74caa311b504dad9c938c
📦 IPFS: https://www.ipfs.io/ipfs/QmSPvcySQVDj6VpmndYSgdYQ2ZW5vaF8CeuWNym74Ca6eq
Rococo AssetHub
🏋️ Runtime size: 1.066 MB (1,117,768 bytes)
🗜 Compressed: Yes, 80.20%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: statemine-1006000 (statemine-0.tx14.au1)
🗳️ system.setCode hash: 0xefa819b8323182e7aab3eaf1b325933d2239ef928a696d9f128a2903eb41727c
🗳️ authorizeUpgrade hash: 0xa5389dfaff4ec1b836066462ae1a8251a680a1b7225e60a51916ed130a0bbd44
🗳️ Blake2-256 hash: 0x75b1c75556c469fa77f6c9e23f9703ed8465105a5adc033752fa411cf7ebcdd8
📦 IPFS: https://www.ipfs.io/ipfs/QmdwaooDRmh3MesJJPsdqtk9smD8AKxqttWX7pkZDVwQuv
Rococo BridgeHub
🏋️ Runtime size: 1.172 MB (1,229,451 bytes)
🗜 Compressed: Yes, 77.91%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: bridge-hub-rococo-1006000 (bridge-hub-rococo-0.tx4.au1)
🗳️ system.setCode hash: 0x5f80b7e26170f22c16620291f37776589418b4b2239b99251a4ca85504a34637
🗳️ authorizeUpgrade hash: 0xf467b1d841e17f1febf54321400c41941a268f3ec1a81258a33b6182a747cf0f
🗳️ Blake2-256 hash: 0x8b1fec547c00557cf076f3dd45225fc0a7005461b2e9c7569a0d5f0768828bba
📦 IPFS: https://www.ipfs.io/ipfs/QmPG9BXBnfGLvstUfgdAkboLkLh7vrXBUPj2Vv5ULt962K
Rococo Coretime
🏋️ Runtime size: 0.815 MB (854,781 bytes)
🗜 Compressed: Yes, 78.72%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: coretime-rococo-1006001 (coretime-rococo-0.tx0.au1)
🗳️ system.setCode hash: 0x9404a62face1ab8314d2993d7eeddad38b6130bf0b9328b80426db5cce2bfeba
🗳️ authorizeUpgrade hash: 0x2a2ca3e77d8353b429e373eb49b3ada5dca61ac5e20a4d89a7d9a3cc81bd2e5a
🗳️ Blake2-256 hash: 0x323aaa09deab189dd1003a3f28ca15afcd7b30ef5df60fb7a13f37d47005ff2f
📦 IPFS: https://www.ipfs.io/ipfs/Qmbcdg8DdEF8UEgzjHzVbjagnXhc8DsSSyVQj7q2MM3gQk
Rococo People
🏋️ Runtime size: 0.803 MB (842,457 bytes)
🗜 Compressed: Yes, 78.70%
✨ Reserved meta: OK - [6D, 65, 74, 61]
🎁 Metadata version: V14
🔥 Core version: people-rococo-1006000 (people-rococo-0.tx0.au1)
🗳️ system.setCode hash: 0x59853e5cdab775c28c6ce40cb72f146705cf4bf3c95813397dad7e32a13ad357
🗳️ authorizeUpgrade hash: 0x0ed8ba152a615a408bd44aa2a35abf52ae8e023e9f1df91957153f03469efc7a
🗳️ Blake2-256 hash: 0x52c2bbea8442f4b5d67c6fd5f407bf834eada6fadaf6d594b3a4d9dfa2e68ff8
📦 IPFS: https://www.ipfs.io/ipfs/QmU8P2BejjkFZpENQuUd6Rg3muDWrgg1E6yPQ4QJDfmAKP
Changes
Node & Polkadot
- #1694: Agile Coretime Base Relaychain Functionality (@eskimor) [Polkadot]
- #1841: Validator disabling in Statement Distribution. (@ordian) [Node]
- #2597: Make crate visible methods of
OverlayedChanges
public. (@ParthDesai) [Node] - #2637: Validator disabling in Dispute Participation. (@ordian) [Polkadot]
- #2663: PVF: fix unshare 'could not create temporary directory' (@mrcnski) [Node]
- #2689: BEEFY: Support compatibility with Warp Sync - Allow Warp Sync for Validators (@serban300) [Node]
- #2764: Validator disabling in Backing. (@ordian) [Polkadot]
- #2771: Add fallback request for req-response protocols (@alindima) [Node]
- #2804: Fix malus implementation. (@ordian) [Node]
- #2813: Implement only sending one notification at a time as per RFC 56 (@tomaka) [Node]
- #2834: proposer: return optional block (@rphmeier) [Breaking change, Ndde]
- #2835: New malus variant
support-disabled
(@ordian) [Node] - #2899: Improve storage monitor API (@nazar-pc) [Node]
Frame & Pallets
- #1226: Removed deprecated
Balances::transfer
andBalances::set_balance_deprecated
functions. (@juangirini) [Pallets] - #1343: Tasks API - A general system for recognizing and executing service work (@sam0x17) [Frame]
- #1677: pallet-asset-conversion: Swap Credit (@muharem) [Frame]
- #2031: pallet-asset-conversion: Decoupling Native Currency Dependan...