Skip to content

Releases: paritytech/polkadot-sdk

Polkadot v1.11.0

30 Apr 12:30
0bb6249
Compare
Choose a tag to compare

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 with FungibleAdapter
  • Replace usage of ToStakingPot<Runtime> with ResolveTo<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...

Read more

Polkadot Parachain v1.10.1

11 Apr 18:03
8eb1f55
Compare
Choose a tag to compare

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

09 Apr 13:13
7049c3c
Compare
Choose a tag to compare

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 pointing VERSION to the newly exposed RUNTIME_API_VERSIONS from apis.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 in substrate/frame/support had the associated type renamed from AggregratedKeyValue to AggregatedKeyValue.
  • The public trait AggregratedKeyValue in substrate/frame/support was similarly renamed to AggregatedKeyValue.
  • The public methods test_versioning and test_versioning_register_only of the TestApi trait in substrate/primitives/runtime-interface/test-wasm had the spelling of versionning changed to versioning.
  • The public functions read_trie_first_descendant_value and read_child_trie_first_descendant_value in substrate/primitives/trie had the spelling of descedant changed to descendant.

[#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...

Read more

Polkadot v1.9.0

19 Mar 14:23
3c3d6fc
Compare
Choose a tag to compare

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.

  1. Introduces a new SignedExtension that reclaims the difference
    between benchmarked proof size weight and actual consumed proof size weight.
  2. Introduces a manual mechanism, StorageWeightReclaimer, to reclaim excess storage weight for situations
    that require manual weight management. The most prominent case is the on_idle hook.
  3. 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 the Executive now for configuring migrations.
  • MultiBlockMigrator: the pallet-migrations would be set here, if deployed.
  • PreInherents: a hook that runs before any inherent.
  • PostInherents: a hook to run between inherents and poll/MBM logic.
  • PostTransactions: a hook to run after all transactions but before on_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 `...

Read more

Polkadot v1.8.0

27 Feb 14:26
ec7817e
Compare
Choose a tag to compare

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 and substrate_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 ...

Read more

Polkadot v1.7.2

26 Feb 13:02
f5fc487
Compare
Choose a tag to compare

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

19 Feb 15:35
70e569d
Compare
Choose a tag to compare

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

07 Feb 11:15
2fe3145
Compare
Choose a tag to compare

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...

Read more

Polkadot v1.6.0

16 Jan 16:20
481165d
Compare
Choose a tag to compare

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 and Balances::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...
Read more

Polkadot v1.5.0

13 Dec 15:32
a3dc2f1
Compare
Choose a tag to compare

This release contains the changes from polkadot-v1.4.0 to polkadot-v1.5.0.

⚠️Note:
It's possible to run into a warning similar to this one:

  - Optional: Cannot unshare user namespace and change root, which are Linux-specific kernel security features: could not create a temporary directory in "/tmp/.tmpIcLriO": No such file or directory (os error 2) at path "/tmp/.tmpIcLriO/check-can-unshare-4XnFgA"

Mitigation: This is not harmful. The validator will have to make sure the PVF artifact directory (listed in the error message) exists, and restart the node.

Issue: #2662

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

Rust Stable: rustc 1.73.0 (cc66ad468 2023-10-03)
Rust Nightly: rustc 1.71.0-nightly (8b4b20836 2023-05-22)

Runtimes

Westend

πŸ‹οΈ Runtime size:             1.544 MB (1,619,298 bytes)
πŸ—œ Compressed:               Yes, 78.91%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             westend-1005000 (parity-westend-0.tx24.au2)
πŸ—³οΈ system.setCode hash:      0x7619dd2232afab450ded927b733409baedd060162251ac18732d55471bb35d53
πŸ—³οΈ authorizeUpgrade hash:    0x24b50325466d1e4065b51e0685cac6a1d9be9d65d216e635b9444ec7234e859f
πŸ—³οΈ Blake2-256 hash:          0x725d74166c9b22e6f93dfb98bb526ce971af30947ad5f6074375756c6771ea07
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmNcbjJ9a39aW1RLXBhTY51cQbFuBYs7s6bRe4otRfLALy

Westend AssetHub

πŸ‹οΈ Runtime size:             1.069 MB (1,120,561 bytes)
πŸ—œ Compressed:               Yes, 80.18%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             westmint-1005000 (westmint-0.tx14.au1)
πŸ—³οΈ system.setCode hash:      0x53455c527ffec93a6cbd4ff03262e373edef2ffbd8f490ac2a21f149a3eac2eb
πŸ—³οΈ authorizeUpgrade hash:    0x772ca460f149e178a0d544f9577dd403787712b6207b2d12ffa72f7a5908fa73
πŸ—³οΈ Blake2-256 hash:          0xb8b9a3f1226cf9db8cca725d8624b75600f3945a62d617e9bdcf8f904da53a52
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmNUV35XrAa4JTku1Sn3nGtMwYLfevTyqEuxuKp4wgjKD9

Westend BridgeHub

πŸ‹οΈ Runtime size:             0.905 MB (949,124 bytes)
πŸ—œ Compressed:               Yes, 78.34%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             bridge-hub-westend-1005000 (bridge-hub-westend-0.tx4.au1)
πŸ—³οΈ system.setCode hash:      0x04c0b283c8e88dd35cd1a6c45d8e5b2516eb3bbe2503b1246320c6171e764349
πŸ—³οΈ authorizeUpgrade hash:    0x063b29d22e5c82b80ce36009da8e35acf8f8277bf3fe9a68b5001bccd18cfa5a
πŸ—³οΈ Blake2-256 hash:          0x78346da655e2ae77bac7a676589903bfc75d0964ba1f9332bd01a410bd2a5bc5
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmSbQHhkBbriKVthCTzBaQph8UkZwzYNmteY56TgcvpiC6

Rococo

πŸ‹οΈ Runtime size:             1.399 MB (1,466,792 bytes)
πŸ—œ Compressed:               Yes, 79.49%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             rococo-1005000 (parity-rococo-v2.0-0.tx24.au0)
πŸ—³οΈ system.setCode hash:      0x8a08ccb7901956c3ca0158229cbf49794d17d43d454c4098b97d57f8760983da
πŸ—³οΈ authorizeUpgrade hash:    0x571781280cafc9a4c14c998d196441df45645dd963a1b36ce914e0d32dec26bb
πŸ—³οΈ Blake2-256 hash:          0xfa3da9d9755d8423f44662231f55b2285fbd4a0065d7390620956c41a5c8cdf8
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmPp7KM353zWMe4XfkGsUyFRgZzNiJuwvdvDnR8RWk1rry

Rococo AssetHub

πŸ‹οΈ Runtime size:             1.055 MB (1,106,346 bytes)
πŸ—œ Compressed:               Yes, 80.26%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             statemine-1005000 (statemine-0.tx14.au1)
πŸ—³οΈ system.setCode hash:      0x63ad9a824d2c8057b3fd412e278d13cd4e9378524abd38278b7a5babc280703e
πŸ—³οΈ authorizeUpgrade hash:    0xa2f9ba739f9871cc851025a686c1a55333108d4012e5686cc4fa72f97d061416
πŸ—³οΈ Blake2-256 hash:          0x6c0aa00a9060554ce55477d9953757ee8736da2312934eec3d479914dc837aa9
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/Qmdfv9MoWEQcGfXGvq48SBi686WZAoECzrLASZG3JpccPH

Rococo BridgeHub

πŸ‹οΈ Runtime size:             0.902 MB (945,922 bytes)
πŸ—œ Compressed:               Yes, 78.32%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             bridge-hub-rococo-1005000 (bridge-hub-rococo-0.tx4.au1)
πŸ—³οΈ system.setCode hash:      0x6336ad5716f9712842888697a446ebe9fc5375fd214d13c0b46e7a862978080b
πŸ—³οΈ authorizeUpgrade hash:    0xdc8a01857a2e2897c388aaaeb691cbd6c142dfb32ef69ee2cea46525df51153f
πŸ—³οΈ Blake2-256 hash:          0xb9bd0af05545604dc69436a52fe8b2f5bef7451a60a211be772ee3a7adc5e114
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmWhJWPVmEANDuwumGBE2HUvQmRCuMZi2pWomBwan6mB6W

Collectives Westend

πŸ‹οΈ Runtime size:             0.932 MB (977,135 bytes)
πŸ—œ Compressed:               Yes, 79.59%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             collectives-westend-1005000 (collectives-westend-0.tx5.au1)
πŸ—³οΈ system.setCode hash:      0x98b3ffa24fa7c1d0a74639ad39218aef304f49922cf72d5bdfda102020fbe65a
πŸ—³οΈ authorizeUpgrade hash:    0x76a992fada765f98bedbad8c5ad10a2ac83c04ebd27ca83aab13d43d2ea3280a
πŸ—³οΈ Blake2-256 hash:          0xc255fc27faba1245dc0e625f62f40a58aabc84a7ae25a39a97d5da11207e7e90
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmVesx4r6QUaXyJxVM4JfMJ3jpDLt9KUczPBKFtBQZiEfQ

Glutton Westend

πŸ‹οΈ Runtime size:             0.502 MB (526,908 bytes)
πŸ—œ Compressed:               Yes, 76.56%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             glutton-westend-1005000 (glutton-westend-0.tx1.au1)
πŸ—³οΈ system.setCode hash:      0xeab87499ae1ca392aa76185393a9edd079795198ca3ed4298b33f2803530f0ea
πŸ—³οΈ authorizeUpgrade hash:    0xcce2792a394e32265769598e0c73ad560b47c494533d383ed49d6885c9f35406
πŸ—³οΈ Blake2-256 hash:          0x72bbe8efd163898655e8cf77af0637248d0b6a05b8f1830865970abec86dd078
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmeHtEjFUu8ex3gVSKZdScev1G3yeE7K4oF5rXtf8Hzy3h

Changes

Node & Polkadot

Frame & Pallets

  • #2265: Remove im-online pallet from Rococo and Westend (@s0me0ne-unkn0wn) [Pallets]
  • #2351: frame-system: Add last_runtime_upgrade_spec_version (@bkchr) [Frame]
  • #2369: [NPoS] Check if staker is exposed in paged exposure storage entries (@Ank4n) [Pallets]
  • #2388: Breacking Change Add new flexible pallet_xcm::transfer_assets() call/extrinsic (@acatangiu) [Pallets]
  • #2397: Pools: Add MaxUnbonding to metadata (@rossbulat) [Pallets]
  • #2435: pallet-staking: Converts all math operations to safe (@gpestanaar) [Pallets]
  • #2459: [NPoS] Use EraInfo to manipulate exposure in fast-unstake tests (@Ank4n) [Pallets, Tests]
  • #2474: Pools: Add ability to configure commission claiming permissions (@rossbulat) [Pallets]
  • #2483: Remove dmp-queue pallet from Rococo Asset Hub and Bridge Hub (@liamaharon) [Frame]
  • #2501: Staking: chill_other takes stash instead of controller (@rossbulat) [Pallets]
  • #2509: Breaking: Remove long deprecated AllPalletsWithoutSystemReversed (@skunert) [Frame]
  • #2515: Set frame_system::LastRuntimeUpgrade after running try-runtime migrations (@liamaharon) [Frame]
  • #2516: Remove dmp_queue pallet from Westend SP runtimes (@liamaharon) [Frame]
  • #2591: Ensure to cleanup state in remove_member (@bkchr) [Frame]

Tests, Benchmarks & Documentation

Read more