From dec1aaa351106ce81a003fa60ad07a4ff3899ac4 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 24 May 2023 16:04:27 -0700 Subject: [PATCH 01/28] Renaming parathreads --- node/core/provisioner/src/lib.rs | 2 +- .../src/validator_side/mod.rs | 6 +- primitives/src/v4/mod.rs | 16 ++-- roadmap/implementers-guide/src/glossary.md | 4 +- .../implementers-guide/src/pvf-prechecking.md | 8 +- .../src/runtime-api/availability-cores.md | 4 +- .../implementers-guide/src/runtime/README.md | 8 +- .../src/runtime/inclusion.md | 8 +- .../implementers-guide/src/runtime/paras.md | 40 +++++----- .../src/runtime/scheduler.md | 73 ++++++++++--------- .../implementers-guide/src/types/candidate.md | 6 +- .../implementers-guide/src/types/runtime.md | 12 +-- roadmap/parachains.md | 14 ++-- runtime/common/src/assigned_slots.rs | 18 +++-- runtime/common/src/integration_tests.rs | 39 +++++----- runtime/common/src/mock.rs | 11 ++- runtime/common/src/paras_registrar.rs | 63 ++++++++-------- runtime/common/src/paras_sudo_wrapper.rs | 18 ++--- runtime/common/src/slots/mod.rs | 21 +++--- runtime/common/src/traits.rs | 14 ++-- runtime/parachains/src/configuration.rs | 28 +++---- runtime/parachains/src/hrmp.rs | 2 +- runtime/parachains/src/inclusion/mod.rs | 3 +- runtime/parachains/src/lib.rs | 4 +- runtime/parachains/src/paras/mod.rs | 68 ++++++++--------- runtime/parachains/src/scheduler.rs | 72 +++++++++--------- runtime/parachains/src/scheduler/tests.rs | 28 +++---- runtime/polkadot/src/lib.rs | 1 + 28 files changed, 302 insertions(+), 289 deletions(-) diff --git a/node/core/provisioner/src/lib.rs b/node/core/provisioner/src/lib.rs index c989366ffa05..e1d450112ff8 100644 --- a/node/core/provisioner/src/lib.rs +++ b/node/core/provisioner/src/lib.rs @@ -663,7 +663,7 @@ async fn request_backable_candidates( // The candidate occupying the core is available, choose its // child in the fragment tree. // - // TODO: doesn't work for parathreads. We lean hard on the assumption + // TODO: doesn't work for on-demand parachains. We lean hard on the assumption // that cores are fixed to specific parachains within a session. // https://github.com/paritytech/polkadot/issues/5492 (scheduled_core.para_id, vec![occupied_core.candidate_hash]) diff --git a/node/network/collator-protocol/src/validator_side/mod.rs b/node/network/collator-protocol/src/validator_side/mod.rs index aad945defcdb..aae5e5cb8ee5 100644 --- a/node/network/collator-protocol/src/validator_side/mod.rs +++ b/node/network/collator-protocol/src/validator_side/mod.rs @@ -520,9 +520,9 @@ where }, }; - // This code won't work well, if at all for parathreads. For parathreads we'll - // have to be aware of which core the parathread claim is going to be multiplexed - // onto. The parathread claim will also have a known collator, and we should always + // This code won't work well, if at all for on-demand parachains. For on-demand we'll + // have to be aware of which core the on-demand claim is going to be multiplexed + // onto. The on-demand claim will also have a known collator, and we should always // allow an incoming connection from that collator. If not even connecting to them // directly. // diff --git a/primitives/src/v4/mod.rs b/primitives/src/v4/mod.rs index 3bb561ce46ba..b4777a20da57 100644 --- a/primitives/src/v4/mod.rs +++ b/primitives/src/v4/mod.rs @@ -802,12 +802,13 @@ impl TypeIndex for GroupIndex { } } -/// A claim on authoring the next block for a given parathread. +/// A claim on authoring the next block for a given parathread (on-demand parachain). #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] #[cfg_attr(feature = "std", derive(PartialEq))] pub struct ParathreadClaim(pub Id, pub CollatorId); -/// An entry tracking a claim to ensure it does not pass the maximum number of retries. +/// An entry tracking a parathread (on-demand parachain) claim to ensure it does not +/// pass the maximum number of retries. #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] #[cfg_attr(feature = "std", derive(PartialEq))] pub struct ParathreadEntry { @@ -821,7 +822,7 @@ pub struct ParathreadEntry { #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] #[cfg_attr(feature = "std", derive(PartialEq))] pub enum CoreOccupied { - /// A parathread. + /// A parathread (on-demand parachain). Parathread(ParathreadEntry), /// A parachain. Parachain, @@ -974,8 +975,9 @@ pub enum CoreState { /// variant. #[codec(index = 1)] Scheduled(ScheduledCore), - /// The core is currently free and there is nothing scheduled. This can be the case for parathread - /// cores when there are no parathread blocks queued. Parachain cores will never be left idle. + /// The core is currently free and there is nothing scheduled. This can be the case for + /// on-demand parachain cores when there are no on-demand blocks queued. Leased parachain + /// cores will never be left idle. #[codec(index = 2)] Free, } @@ -1176,10 +1178,10 @@ pub const POLKADOT_ENGINE_ID: runtime_primitives::ConsensusEngineId = *b"POL1"; /// A consensus log item for polkadot validation. To be used with [`POLKADOT_ENGINE_ID`]. #[derive(Decode, Encode, Clone, PartialEq, Eq)] pub enum ConsensusLog { - /// A parachain or parathread upgraded its code. + /// A parachain upgraded its code. #[codec(index = 1)] ParaUpgradeCode(Id, ValidationCodeHash), - /// A parachain or parathread scheduled a code upgrade. + /// A parachain scheduled a code upgrade. #[codec(index = 2)] ParaScheduleUpgradeCode(Id, ValidationCodeHash, BlockNumber), /// Governance requests to auto-approve every candidate included up to the given block diff --git a/roadmap/implementers-guide/src/glossary.md b/roadmap/implementers-guide/src/glossary.md index d379c2813b59..6a5920457f8b 100644 --- a/roadmap/implementers-guide/src/glossary.md +++ b/roadmap/implementers-guide/src/glossary.md @@ -24,11 +24,11 @@ exactly one downward message queue. - **Parablock:** A block in a parachain. - **Parachain:** A constituent chain secured by the Relay Chain's validators. - **Parachain Validators:** A subset of validators assigned during a period of time to back candidates for a specific parachain -- **Parathread:** A parachain which is scheduled on a pay-as-you-go basis. +- **On-demand parachain:** A parachain which is scheduled on a pay-as-you-go basis. - **PDK (Parachain Development Kit):** A toolset that allows one to develop a parachain. Cumulus is a PDK. - **Preimage:** In our context, if `H(X) = Y` where `H` is a hash function and `Y` is the hash, then `X` is the hash preimage. - **Proof-of-Validity (PoV):** A stateless-client proof that a parachain candidate is valid, with respect to some validation function. -- **PVF:** Parachain Validation Function. The validation code that is run by validators on parachains or parathreads. +- **PVF:** Parachain Validation Function. The validation code that is run by validators on parachains. - **PVF Prechecking:** This is the process of initially checking the PVF when it is first added. We attempt preparation of the PVF and make sure it succeeds within a given timeout. - **PVF Preparation:** This is the process of preparing the WASM blob and includes both prevalidation and compilation. As prevalidation is pretty minimal right now, preparation mostly consists of compilation. - **Relay Parent:** A block in the relay chain, referred to in a context where work is being done in the context of the state at this block. diff --git a/roadmap/implementers-guide/src/pvf-prechecking.md b/roadmap/implementers-guide/src/pvf-prechecking.md index 155d32d52898..961f9323308f 100644 --- a/roadmap/implementers-guide/src/pvf-prechecking.md +++ b/roadmap/implementers-guide/src/pvf-prechecking.md @@ -4,7 +4,7 @@ ## Motivation -Parachains' and parathreads' validation function is described by a wasm module that we refer to as a PVF. Since a PVF is a wasm module the typical way of executing it is to compile it to machine code. +Parachains' validation function is described by a wasm module that we refer to as a PVF. Since a PVF is a wasm module the typical way of executing it is to compile it to machine code. Typically an optimizing compiler consists of algorithms that are able to optimize the resulting machine code heavily. However, while those algorithms perform quite well for a typical wasm code produced by standard toolchains (e.g. rustc/LLVM), those algorithms can be abused to consume a lot of resources. Moreover, since those algorithms are rather complex there is a lot of room for a bug that can crash the compiler. @@ -23,8 +23,8 @@ As a result of this issue we need a fairly hard guarantee that the PVFs of regis The problem is solved by having a pre-checking process which is run when a new validation code is included in the chain. A new PVF can be added in two cases: -- A new parachain or parathread is registered. -- An existing parachain or parathread signalled an upgrade of its validation code. +- A new parachain is registered. +- An existing parachain signalled an upgrade of its validation code. Before any of those operations finish, the PVF pre-checking vote is initiated. The PVF pre-checking vote is identified by the PVF code hash that is being voted on. If there is already PVF pre-checking process running, then no new PVF pre-checking vote will be started. Instead, the operation just subscribes to the existing vote. @@ -48,7 +48,7 @@ On the node-side, there is a PVF pre-checking [subsystem][pvf-prechecker-subsyst ## Summary -Parachains' and parathreads' validation function is described by a wasm module that we refer to as a PVF. +Parachains' validation function is described by a wasm module that we refer to as a PVF. In order to make the PVF usable for candidate validation it has to be registered on-chain. diff --git a/roadmap/implementers-guide/src/runtime-api/availability-cores.md b/roadmap/implementers-guide/src/runtime-api/availability-cores.md index b95af2343b36..9402924f0013 100644 --- a/roadmap/implementers-guide/src/runtime-api/availability-cores.md +++ b/roadmap/implementers-guide/src/runtime-api/availability-cores.md @@ -52,8 +52,8 @@ enum CoreState { /// If a particular Collator is required to author this block, that is also present in this /// variant. Scheduled(ScheduledCore), - /// The core is currently free and there is nothing scheduled. This can be the case for parathread - /// cores when there are no parathread blocks queued. Parachain cores will never be left idle. + /// The core is currently free and there is nothing scheduled. This can be the case for on-demand + /// cores when there are no on-demand parachain blocks queued. Leased cores will never be left idle. Free, } ``` diff --git a/roadmap/implementers-guide/src/runtime/README.md b/roadmap/implementers-guide/src/runtime/README.md index f1f9d6c950e2..995b684b1f06 100644 --- a/roadmap/implementers-guide/src/runtime/README.md +++ b/roadmap/implementers-guide/src/runtime/README.md @@ -6,7 +6,7 @@ Due to the (lack of) guarantees provided by a particular blockchain-runtime fram We also expect, although it's beyond the scope of this guide, that these runtime modules will exist alongside various other modules. This has two facets to consider. First, even if the modules that we describe here don't invoke each others' entry points or routines during initialization, we still have to protect against those other modules doing that. Second, some of those modules are expected to provide governance capabilities for the chain. Configuration exposed by parachain-host modules is mostly for the benefit of these governance modules, to allow the operators or community of the chain to tweak parameters. -The runtime's primary roles to manage scheduling and updating of parachains and parathreads, as well as handling misbehavior reports and slashing. This guide doesn't focus on how parachains or parathreads are registered, only that they are. Also, this runtime description assumes that validator sets are selected somehow, but doesn't assume any other details than a periodic _session change_ event. Session changes give information about the incoming validator set and the validator set of the following session. +The runtime's primary role is to manage scheduling and updating of parachains, as well as handling misbehavior reports and slashing. This guide doesn't focus on how parachains are registered, only that they are. Also, this runtime description assumes that validator sets are selected somehow, but doesn't assume any other details than a periodic _session change_ event. Session changes give information about the incoming validator set and the validator set of the following session. The runtime also serves another role, which is to make data available to the Node-side logic via Runtime APIs. These Runtime APIs should be sufficient for the Node-side code to author blocks correctly. @@ -17,9 +17,9 @@ We will split the logic of the runtime up into these modules: * Initializer: manages initialization order of the other modules. * Shared: manages shared storage and configurations for other modules. * Configuration: manages configuration and configuration updates in a non-racy manner. -* Paras: manages chain-head and validation code for parachains and parathreads. -* Scheduler: manages parachain and parathread scheduling as well as validator assignments. -* Inclusion: handles the inclusion and availability of scheduled parachains and parathreads. +* Paras: manages chain-head and validation code for parachains. +* Scheduler: manages parachain scheduling as well as validator assignments. +* Inclusion: handles the inclusion and availability of scheduled parachains. * SessionInfo: manages various session keys of validators and other params stored per session. * Disputes: handles dispute resolution for included, available parablocks. * Slashing: handles slashing logic for concluded disputes. diff --git a/roadmap/implementers-guide/src/runtime/inclusion.md b/roadmap/implementers-guide/src/runtime/inclusion.md index 8b8ea944d7fd..ca8fabcfb06b 100644 --- a/roadmap/implementers-guide/src/runtime/inclusion.md +++ b/roadmap/implementers-guide/src/runtime/inclusion.md @@ -1,6 +1,6 @@ # Inclusion Module -The inclusion module is responsible for inclusion and availability of scheduled parachains and parathreads. It also manages the UMP dispatch queue of each parachain/thread. +The inclusion module is responsible for inclusion and availability of scheduled parachains. ## Storage @@ -61,9 +61,9 @@ No initialization routine runs for this module. However, the initialization of t All failed checks should lead to an unrecoverable error making the block invalid. * `process_bitfields(expected_bits, Bitfields, core_lookup: Fn(CoreIndex) -> Option)`: - 1. call `sanitize_bitfields` and use the sanitized `signed_bitfields` from now on. - 1. call `sanitize_backed_candidates` and use the sanitized `backed_candidates` from now on. - 1. apply each bit of bitfield to the corresponding pending candidate. looking up parathread cores using the `core_lookup`. Disregard bitfields that have a `1` bit for any free cores. + 1. Call `sanitize_bitfields` and use the sanitized `signed_bitfields` from now on. + 1. Call `sanitize_backed_candidates` and use the sanitized `backed_candidates` from now on. + 1. Apply each bit of bitfield to the corresponding pending candidate, looking up on-demand parachain cores using the `core_lookup`. Disregard bitfields that have a `1` bit for any free cores. 1. For each applied bit of each availability-bitfield, set the bit for the validator in the `CandidatePendingAvailability`'s `availability_votes` bitfield. Track all candidates that now have >2/3 of bits set in their `availability_votes`. These candidates are now available and can be enacted. 1. For all now-available candidates, invoke the `enact_candidate` routine with the candidate and relay-parent number. 1. Return a list of `(CoreIndex, CandidateHash)` from freed cores consisting of the cores where candidates have become available. diff --git a/roadmap/implementers-guide/src/runtime/paras.md b/roadmap/implementers-guide/src/runtime/paras.md index a89cca6b658e..70b12af7493d 100644 --- a/roadmap/implementers-guide/src/runtime/paras.md +++ b/roadmap/implementers-guide/src/runtime/paras.md @@ -1,7 +1,7 @@ # Paras Module -The Paras module is responsible for storing information on parachains and parathreads. Registered -parachains and parathreads cannot change except at session boundaries and after at least a full +The Paras module is responsible for storing information on parachains. Registered +parachains cannot change except at session boundaries and after at least a full session has passed. This is primarily to ensure that the number and meaning of bits required for the availability bitfields does not change except at session boundaries. @@ -54,15 +54,15 @@ struct ParaGenesisArgs { pub enum ParaLifecycle { /// A Para is new and is onboarding. Onboarding, - /// Para is a Parathread. + /// Para is a Parathread (on-demand parachain). Parathread, /// Para is a Parachain. Parachain, - /// Para is a Parathread which is upgrading to a Parachain. + /// Para is a Parathread (on-demand Parachain) which is upgrading to a lease holding Parachain. UpgradingParathread, - /// Para is a Parachain which is downgrading to a Parathread. + /// Para is a lease holding Parachain which is downgrading to an on-demand parachain. DowngradingParachain, - /// Parathread is being offboarded. + /// Parathread (on-demand parachain) is being offboarded. OutgoingParathread, /// Parachain is being offboarded. OutgoingParachain, @@ -102,11 +102,11 @@ struct PvfCheckActiveVoteState { #### Para Lifecycle -Because the state changes of parachains and parathreads are delayed, we track the specific state of +Because the state changes of parachains are delayed, we track the specific state of the para using the `ParaLifecycle` enum. ``` -None Parathread Parachain +None Parathread (on-demand parachain) Parachain + + + | | | | (≈2 Session Delay) | | @@ -147,7 +147,7 @@ During the transition period, the para object is still considered in its existin PvfActiveVoteMap: map ValidationCodeHash => PvfCheckActiveVoteState; /// The list of all currently active PVF votes. Auxiliary to `PvfActiveVoteMap`. PvfActiveVoteList: Vec; -/// All parachains. Ordered ascending by ParaId. Parathreads are not included. +/// All parachains. Ordered ascending by ParaId. On-demand parachains are not included. Parachains: Vec, /// The current lifecycle state of all known Para Ids. ParaLifecycle: map ParaId => Option, @@ -229,10 +229,10 @@ CodeByHash: map ValidationCodeHash => Option 1. Apply all incoming paras by initializing the `Heads` and `CurrentCode` using the genesis parameters as well as `MostRecentContext` to `0`. 1. Amend the `Parachains` list and `ParaLifecycle` to reflect changes in registered parachains. - 1. Amend the `ParaLifecycle` set to reflect changes in registered parathreads. - 1. Upgrade all parathreads that should become parachains, updating the `Parachains` list and + 1. Amend the `ParaLifecycle` set to reflect changes in registered on-demand parachains. + 1. Upgrade all on-demand parachains that should become lease holding parachains, updating the `Parachains` list and `ParaLifecycle`. - 1. Downgrade all parachains that should become parathreads, updating the `Parachains` list and + 1. Downgrade all lease holding parachains that should become on-demand parachains, updating the `Parachains` list and `ParaLifecycle`. 1. (Deferred) Return list of outgoing paras to the initializer for use by other modules. 1. Go over all active PVF pre-checking votes: @@ -254,8 +254,8 @@ CodeByHash: map ValidationCodeHash => Option * `schedule_para_initialize(ParaId, ParaGenesisArgs)`: Schedule a para to be initialized at the next session. Noop if para is already registered in the system with some `ParaLifecycle`. * `schedule_para_cleanup(ParaId)`: Schedule a para to be cleaned up after the next full session. -* `schedule_parathread_upgrade(ParaId)`: Schedule a parathread to be upgraded to a parachain. -* `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded to a parathread. +* `schedule_parathread_upgrade(ParaId)`: Schedule a parathread (on-demand parachain) to be upgraded to a parachain. +* `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded to a parathread (on-demand parachain). * `schedule_code_upgrade(ParaId, new_code, relay_parent: BlockNumber, HostConfiguration)`: Schedule a future code upgrade of the given parachain. In case the PVF pre-checking is disabled, or the new code is already present in the storage, the upgrade will be applied after inclusion of a block of the same parachain executed in the context of a relay-chain block with number >= `relay_parent + config.validation_upgrade_delay`. If the upgrade is scheduled `UpgradeRestrictionSignal` is set and it will remain set until `relay_parent + config.validation_upgrade_cooldown`. @@ -263,12 +263,12 @@ In case the PVF pre-checking is enabled, or the new code is not already present * `note_new_head(ParaId, HeadData, BlockNumber)`: note that a para has progressed to a new head, where the new head was executed in the context of a relay-chain block with given number, the latter value is inserted into the `MostRecentContext` mapping. This will apply pending code upgrades based on the block number provided. If an upgrade took place it will clear the `UpgradeGoAheadSignal`. * `lifecycle(ParaId) -> Option`: Return the `ParaLifecycle` of a para. -* `is_parachain(ParaId) -> bool`: Returns true if the para ID references any live parachain, - including those which may be transitioning to a parathread in the future. -* `is_parathread(ParaId) -> bool`: Returns true if the para ID references any live parathread, - including those which may be transitioning to a parachain in the future. -* `is_valid_para(ParaId) -> bool`: Returns true if the para ID references either a live parathread - or live parachain. +* `is_parachain(ParaId) -> bool`: Returns true if the para ID references any live lease holding parachain, + including those which may be transitioning to an on-demand parachain in the future. +* `is_parathread(ParaId) -> bool`: Returns true if the para ID references any live parathread (on-demand parachain), + including those which may be transitioning to a lease holding parachain in the future. +* `is_valid_para(ParaId) -> bool`: Returns true if the para ID references either a live on-demand parachain + or live lease holding parachain. * `can_upgrade_validation_code(ParaId) -> bool`: Returns true if the given para can signal code upgrade right now. * `pvfs_require_prechecking() -> Vec`: Returns the list of PVF validation code hashes that require PVF pre-checking votes. diff --git a/roadmap/implementers-guide/src/runtime/scheduler.md b/roadmap/implementers-guide/src/runtime/scheduler.md index 7383177aa1cb..d9c928c061c3 100644 --- a/roadmap/implementers-guide/src/runtime/scheduler.md +++ b/roadmap/implementers-guide/src/runtime/scheduler.md @@ -4,21 +4,21 @@ The Scheduler module is responsible for two main tasks: -- Partitioning validators into groups and assigning groups to parachains and parathreads. -- Scheduling parachains and parathreads +- Partitioning validators into groups and assigning groups to parachains. +- Scheduling parachains for each block It aims to achieve these tasks with these goals in mind: - It should be possible to know at least a block ahead-of-time, ideally more, which validators are going to be assigned to which parachains. - Parachains that have a candidate pending availability in this fork of the chain should not be assigned. - Validator assignments should not be gameable. Malicious cartels should not be able to manipulate the scheduler to assign themselves as desired. -- High or close to optimal throughput of parachains and parathreads. Work among validator groups should be balanced. +- High or close to optimal throughput of parachains. Work among validator groups should be balanced. ## Availability Cores -The Scheduler manages resource allocation using the concept of "Availability Cores". There will be one availability core for each parachain, and a fixed number of cores used for multiplexing parathreads. Validators will be partitioned into groups, with the same number of groups as availability cores. Validator groups will be assigned to different availability cores over time. +The Scheduler manages resource allocation using the concept of "Availability Cores". There will be one availability core for each lease holding parachain, and a fixed number of cores used for multiplexing on-demand parachains. Validators will be partitioned into groups, with the same number of groups as availability cores. Validator groups will be assigned to different availability cores over time. -An availability core can exist in either one of two states at the beginning or end of a block: free or occupied. A free availability core can have a parachain or parathread assigned to it for the potential to have a backed candidate included. After backing, the core enters the occupied state as the backed candidate is pending availability. There is an important distinction: a core is not considered occupied until it is in charge of a block pending availability, although the implementation may treat scheduled cores the same as occupied ones for brevity. A core exits the occupied state when the candidate is no longer pending availability - either on timeout or on availability. A core starting in the occupied state can move to the free state and back to occupied all within a single block, as availability bitfields are processed before backed candidates. At the end of the block, there is a possible timeout on availability which can move the core back to the free state if occupied. +An availability core can exist in either one of two states at the beginning or end of a block: free or occupied. A free availability core can have a lease holding or on-demand parachain assigned to it for the potential to have a backed candidate included. After backing, the core enters the occupied state as the backed candidate is pending availability. There is an important distinction: a core is not considered occupied until it is in charge of a block pending availability, although the implementation may treat scheduled cores the same as occupied ones for brevity. A core exits the occupied state when the candidate is no longer pending availability - either on timeout or on availability. A core starting in the occupied state can move to the free state and back to occupied all within a single block, as availability bitfields are processed before backed candidates. At the end of the block, there is a possible timeout on availability which can move the core back to the free state if occupied. Cores are treated as an ordered list and are typically referred to by their index in that list. @@ -82,54 +82,57 @@ digraph { ## Validator Groups -Validator group assignments do not need to change very quickly. The security benefits of fast rotation are redundant with the challenge mechanism in the [Approval process](../protocol-approval.md). Because of this, we only divide validators into groups at the beginning of the session and do not shuffle membership during the session. However, we do take steps to ensure that no particular validator group has dominance over a single parachain or parathread-multiplexer for an entire session to provide better guarantees of live-ness. +Validator group assignments do not need to change very quickly. The security benefits of fast rotation are redundant with the challenge mechanism in the [Approval process](../protocol-approval.md). Because of this, we only divide validators into groups at the beginning of the session and do not shuffle membership during the session. However, we do take steps to ensure that no particular validator group has dominance over a single lease holding parachain or on-demand parachain-multiplexer for an entire session to provide better guarantees of live-ness. Validator groups rotate across availability cores in a round-robin fashion, with rotation occurring at fixed intervals. The i'th group will be assigned to the `(i+k)%n`'th core at any point in time, where `k` is the number of rotations that have occurred in the session, and `n` is the number of cores. This makes upcoming rotations within the same session predictable. -When a rotation occurs, validator groups are still responsible for distributing availability chunks for any previous cores that are still occupied and pending availability. In practice, rotation and availability-timeout frequencies should be set so this will only be the core they have just been rotated from. It is possible that a validator group is rotated onto a core which is currently occupied. In this case, the validator group will have nothing to do until the previously-assigned group finishes their availability work and frees the core or the availability process times out. Depending on if the core is for a parachain or parathread, a different timeout `t` from the [`HostConfiguration`](../types/runtime.md#host-configuration) will apply. Availability timeouts should only be triggered in the first `t-1` blocks after the beginning of a rotation. +When a rotation occurs, validator groups are still responsible for distributing availability chunks for any previous cores that are still occupied and pending availability. In practice, rotation and availability-timeout frequencies should be set so this will only be the core they have just been rotated from. It is possible that a validator group is rotated onto a core which is currently occupied. In this case, the validator group will have nothing to do until the previously-assigned group finishes their availability work and frees the core or the availability process times out. Depending on if the core is for a lease holding parachain or on-demand parachain, a different timeout `t` from the [`HostConfiguration`](../types/runtime.md#host-configuration) will apply. Availability timeouts should only be triggered in the first `t-1` blocks after the beginning of a rotation. ## Claims -Parathreads operate on a system of claims. Collators participate in auctions to stake a claim on authoring the next block of a parathread, although the auction mechanism is beyond the scope of the scheduler. The scheduler guarantees that they'll be given at least a certain number of attempts to author a candidate that is backed. Attempts that fail during the availability phase are not counted, since ensuring availability at that stage is the responsibility of the backing validators, not of the collator. When a claim is accepted, it is placed into a queue of claims, and each claim is assigned to a particular parathread-multiplexing core in advance. Given that the current assignments of validator groups to cores are known, and the upcoming assignments are predictable, it is possible for parathread collators to know who they should be talking to now and how they should begin establishing connections with as a fallback. +On-demand parachains operate on a system of claims. Collators purchase claims on authoring the next block of an on-demand parachain, although the purchase mechanism is beyond the scope of the scheduler. The scheduler guarantees that they'll be given at least a certain number of attempts to author a candidate that is backed. Attempts that fail during the availability phase are not counted, since ensuring availability at that stage is the responsibility of the backing validators, not of the collator. When a claim is accepted, it is placed into a queue of claims, and each claim is assigned to a particular on-demand parachain-multiplexing core in advance. Given that the current assignments of validator groups to cores are known, and the upcoming assignments are predictable, it is possible for on-demand parachain collators to know who they should be talking to now and how they should begin establishing connections with as a fallback. -With this information, the Node-side can be aware of which parathreads have a good chance of being includable within the relay-chain block and can focus any additional resources on backing candidates from those parathreads. Furthermore, Node-side code is aware of which validator group will be responsible for that thread. If the necessary conditions are reached for core reassignment, those candidates can be backed within the same block as the core being freed. +With this information, the Node-side can be aware of which on-demand parachains have a good chance of being includable within the relay-chain block and can focus any additional resources on backing candidates from those on-demand parachains. Furthermore, Node-side code is aware of which validator group will be responsible for that thread. If the necessary conditions are reached for core reassignment, those candidates can be backed within the same block as the core being freed. -Parathread claims, when scheduled onto a free core, may not result in a block pending availability. This may be due to collator error, networking timeout, or censorship by the validator group. In this case, the claims should be retried a certain number of times to give the collator a fair shot. +On-demand claims, when scheduled onto a free core, may not result in a block pending availability. This may be due to collator error, networking timeout, or censorship by the validator group. In this case, the claims should be retried a certain number of times to give the collator a fair shot. ## Storage Utility structs: ```rust -// A claim on authoring the next block for a given parathread. +// A claim on authoring the next block for a given parathread (on-demand parachain). struct ParathreadClaim(ParaId, CollatorId); -// An entry tracking a claim to ensure it does not pass the maximum number of retries. +// An entry tracking a parathread (on-demand parachain) claim to ensure it does not +// pass the maximum number of retries. struct ParathreadEntry { claim: ParathreadClaim, retries: u32, } -// A queued parathread entry, pre-assigned to a core. +// A queued parathread (on-demand parachain) entry, pre-assigned to a core. struct QueuedParathread { claim: ParathreadEntry, - /// offset within the set of para-threads ranged `0..config.parathread_cores`. + /// offset within the set of parathreads (on-demand parachains) ranged `0..config.parathread_cores`. core_offset: u32, } struct ParathreadQueue { queue: Vec, - /// offset within the set of para-threads ranged `0..config.parathread_cores`. + /// offset within the set of parathreads (on-demand parachains) ranged `0..config.parathread_cores`. next_core_offset: u32, } enum CoreOccupied { + // On-demand parachain Parathread(ParathreadEntry), // claim & retries Parachain, } enum AssignmentKind { Parachain, + // On-demand parachain Parathread(CollatorId, u32), } @@ -150,13 +153,13 @@ Storage layout: ```rust /// All the validator groups. One for each core. Indices are into the `ActiveValidators` storage. ValidatorGroups: Vec>; -/// A queue of upcoming claims and which core they should be mapped onto. +/// A queue of upcoming parathread (on-demand parachain) claims and which core they should be mapped onto. ParathreadQueue: ParathreadQueue; /// One entry for each availability core. Entries are `None` if the core is not currently occupied. -/// The i'th parachain belongs to the i'th core, with the remaining cores all being -/// parathread-multiplexers. +/// The i'th parachain lease belongs to the i'th core, with the remaining cores all being +/// on-demand parachain-multiplexers. AvailabilityCores: Vec>; -/// An index used to ensure that only one claim on a parathread exists in the queue or is +/// An index used to ensure that only one claim on a parathread (on-demand parachain) exists in the queue or is /// currently being handled by an occupied core. ParathreadClaimIndex: Vec; /// The block number where the session start occurred. Used to track how many group rotations have occurred. @@ -186,11 +189,11 @@ Actions: - Note that the total number of validators `V` in AV may not be evenly divided by `n_cores`. - The groups are selected by partitioning AV. The first `V % N` groups will have `(V / n_cores) + 1` members, while the remaining groups will have `(V / N)` members each. - Instead of using the indices within AV, which point to the broader set, indices _into_ AV should be used. This implies that groups should have simply ascending validator indices. -1. Prune the parathread queue to remove all retries beyond `configuration.parathread_retries`. - - Also prune all parathread claims corresponding to de-registered parathreads. - - all pruned claims should have their entry removed from the parathread index. - - assign all non-pruned claims to new cores if the number of parathread cores has changed between the `new_config` and `old_config` of the `SessionChangeNotification`. - - Assign claims in equal balance across all cores if rebalancing, and set the `next_core` of the `ParathreadQueue` by incrementing the relative index of the last assigned core and taking it modulo the number of parathread cores. +1. Prune the parathread (on-demand parachain) queue to remove all retries beyond `configuration.parathread_retries`. + - Also prune all on-demand claims corresponding to de-registered parachains. + - all pruned claims should have their entry removed from the parathread (on-demand parachain) index. + - assign all non-pruned claims to new cores if the number of on-demand parachain cores has changed between the `new_config` and `old_config` of the `SessionChangeNotification`. + - Assign claims in equal balance across all cores if rebalancing, and set the `next_core` of the `ParathreadQueue` (on-demand queue) by incrementing the relative index of the last assigned core and taking it modulo the number of on-demand cores. ## Initialization @@ -202,17 +205,17 @@ No finalization routine runs for this module. ## Routines -- `add_parathread_claim(ParathreadClaim)`: Add a parathread claim to the queue. - - Fails if any parathread claim on the same parathread is currently indexed. +- `add_parathread_claim(ParathreadClaim)`: Add a parathread (on-demand parachain) claim to the queue. + - Fails if any on-demand claim on the same parachain is currently indexed. - Fails if the queue length is >= `config.scheduling_lookahead * config.parathread_cores`. - - The core used for the parathread claim is the `next_core` field of the `ParathreadQueue` and adding `Paras::parachains().len()` to it. + - The core used for the on-demand claim is the `next_core` field of the `ParathreadQueue` (on-demand queue) and adding `Paras::parachains().len()` to it. - `next_core` is then updated by adding 1 and taking it modulo `config.parathread_cores`. - The claim is then added to the claim index. - `free_cores(Vec<(CoreIndex, FreedReason)>)`: indicate previosuly-occupied cores which are to be considered returned and why they are being returned. - - All freed parachain cores should be assigned to their respective parachain - - All freed parathread cores whose reason for freeing was `FreedReason::Concluded` should have the claim removed from the claim index. - - All freed parathread cores whose reason for freeing was `FreedReason::TimedOut` should have the claim added to the parathread queue again without retries incremented - - All freed parathread cores should take the next parathread entry from the queue. + - All freed lease holding parachain cores should be assigned to their respective parachain + - All freed on-demand parachain cores whose reason for freeing was `FreedReason::Concluded` should have the claim removed from the claim index. + - All freed on-demand cores whose reason for freeing was `FreedReason::TimedOut` should have the claim added to the parathread queue (on-demand queue) again without retries incremented + - All freed on-demand cores should take the next on-demand parachain entry from the queue. - `schedule(Vec<(CoreIndex, FreedReason)>, now: BlockNumber)`: schedule new core assignments, with a parameter indicating previously-occupied cores which are to be considered returned and why they are being returned. - Invoke `free_cores(freed_cores)` - The i'th validator group will be assigned to the `(i+k)%n`'th core at any point in time, where `k` is the number of rotations that have occurred in the session, and `n` is the total number of cores. This makes upcoming rotations within the same session predictable. Rotations are based off of `now`. @@ -224,9 +227,9 @@ No finalization routine runs for this module. - Since both the availability cores and the newly-occupied cores lists are sorted ascending, this method can be implemented efficiently. - `core_para(CoreIndex) -> ParaId`: return the currently-scheduled or occupied ParaId for the given core. - `group_validators(GroupIndex) -> Option>`: return all validators in a given group, if the group index is valid for this session. -- `availability_timeout_predicate() -> Option bool>`: returns an optional predicate that should be used for timing out occupied cores. if `None`, no timing-out should be done. The predicate accepts the index of the core, and the block number since which it has been occupied. The predicate should be implemented based on the time since the last validator group rotation, and the respective parachain and parathread timeouts, i.e. only within `max(config.chain_availability_period, config.thread_availability_period)` of the last rotation would this return `Some`. +- `availability_timeout_predicate() -> Option bool>`: returns an optional predicate that should be used for timing out occupied cores. if `None`, no timing-out should be done. The predicate accepts the index of the core, and the block number since which it has been occupied. The predicate should be implemented based on the time since the last validator group rotation, and the respective parachain timeouts, i.e. only within `max(config.chain_availability_period, config.thread_availability_period)` of the last rotation would this return `Some`. - `group_rotation_info(now: BlockNumber) -> GroupRotationInfo`: Returns a helper for determining group rotation. -- `next_up_on_available(CoreIndex) -> Option`: Return the next thing that will be scheduled on this core assuming it is currently occupied and the candidate occupying it became available. Returns in `ScheduledCore` format (todo: link to Runtime APIs page; linkcheck doesn't allow this right now). For parachains, this is always the ID of the parachain and no specified collator. For parathreads, this is based on the next item in the `ParathreadQueue` assigned to that core, and is `None` if there isn't one. -- `next_up_on_time_out(CoreIndex) -> Option`: Return the next thing that will be scheduled on this core assuming it is currently occupied and the candidate occupying it timed out. Returns in `ScheduledCore` format (todo: link to Runtime APIs page; linkcheck doesn't allow this right now). For parachains, this is always the ID of the parachain and no specified collator. For parathreads, this is based on the next item in the `ParathreadQueue` assigned to that core, or if there isn't one, the claim that is currently occupying the core. Otherwise `None`. +- `next_up_on_available(CoreIndex) -> Option`: Return the next thing that will be scheduled on this core assuming it is currently occupied and the candidate occupying it became available. Returns in `ScheduledCore` format (todo: link to Runtime APIs page; linkcheck doesn't allow this right now). For lease holding parachains, this is always the ID of the parachain and no specified collator. For on-demand parachains, this is based on the next item in the `ParathreadQueue` (on-demand queue) assigned to that core, and is `None` if there isn't one. +- `next_up_on_time_out(CoreIndex) -> Option`: Return the next thing that will be scheduled on this core assuming it is currently occupied and the candidate occupying it timed out. Returns in `ScheduledCore` format (todo: link to Runtime APIs page; linkcheck doesn't allow this right now). For parachains, this is always the ID of the parachain and no specified collator. For on-demand parachains, this is based on the next item in the `ParathreadQueue` (on-demand queue) assigned to that core, or if there isn't one, the claim that is currently occupying the core. Otherwise `None`. - `clear()`: - - Free all scheduled cores and return parathread claims to queue, with retries incremented. Skip parathreads which no longer exist under paras. + - Free all scheduled cores and return on-demand claims to queue, with retries incremented. Skip on-demand parachains which no longer exist under paras. diff --git a/roadmap/implementers-guide/src/types/candidate.md b/roadmap/implementers-guide/src/types/candidate.md index 729c72180ee5..a37f98054c5e 100644 --- a/roadmap/implementers-guide/src/types/candidate.md +++ b/roadmap/implementers-guide/src/types/candidate.md @@ -1,7 +1,7 @@ # Candidate Types Para candidates are some of the most common types, both within the runtime and on the Node-side. -Candidates are the fundamental datatype for advancing parachains and parathreads, encapsulating the collator's signature, the context of the parablock, the commitments to the output, and a commitment to the data which proves it valid. +Candidates are the fundamental datatype for advancing parachains, encapsulating the collator's signature, the context of the parablock, the commitments to the output, and a commitment to the data which proves it valid. In a way, this entire guide is about these candidates: how they are scheduled, constructed, backed, included, and challenged. @@ -142,7 +142,7 @@ struct PersistedValidationData { ## `HeadData` -Head data is a type-safe abstraction around bytes (`Vec`) for the purposes of representing heads of parachains or parathreads. +Head data is a type-safe abstraction around bytes (`Vec`) for the purposes of representing heads of parachains. ```rust struct HeadData(Vec); @@ -150,7 +150,7 @@ struct HeadData(Vec); ## Candidate Commitments -The execution and validation of parachain or parathread candidates produces a number of values which either must be committed to on the relay chain or committed to the state of the relay chain. +The execution and validation of parachain candidates produces a number of values which either must be committed to blocks on the relay chain or committed to the state of the relay chain. ```rust /// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. diff --git a/roadmap/implementers-guide/src/types/runtime.md b/roadmap/implementers-guide/src/types/runtime.md index 55c0a571b6c8..79da899bd35e 100644 --- a/roadmap/implementers-guide/src/types/runtime.md +++ b/roadmap/implementers-guide/src/types/runtime.md @@ -19,9 +19,9 @@ struct HostConfiguration { pub max_code_size: u32, /// The maximum head-data size, in bytes. pub max_head_data_size: u32, - /// The amount of availability cores to dedicate to parathreads. + /// The amount of availability cores to dedicate to parathreads (on-demand parachains). pub parathread_cores: u32, - /// The number of retries that a parathread author has to submit their block. + /// The number of retries that a parathread (on-demand parachain) author has to submit their block. pub parathread_retries: u32, /// How often parachain groups should be rotated across parachains. pub group_rotation_frequency: BlockNumber, @@ -29,10 +29,10 @@ struct HostConfiguration { /// after inclusion that validators have to make the block available and signal its availability to /// the chain. Must be at least 1. pub chain_availability_period: BlockNumber, - /// The availability period, in blocks, for parathreads. Same as the `chain_availability_period`, + /// The availability period, in blocks, for parathreads (on-demand parachains). Same as the `chain_availability_period`, /// but a differing timeout due to differing requirements. Must be at least 1. pub thread_availability_period: BlockNumber, - /// The amount of blocks ahead to schedule parathreads. + /// The amount of blocks ahead to schedule on-demand parachains. pub scheduling_lookahead: u32, /// The maximum number of validators to have per core. `None` means no maximum. pub max_validators_per_core: Option, @@ -88,7 +88,7 @@ struct HostConfiguration { pub hrmp_channel_max_total_size: u32, /// The maximum number of inbound HRMP channels a parachain is allowed to accept. pub hrmp_max_parachain_inbound_channels: u32, - /// The maximum number of inbound HRMP channels a parathread is allowed to accept. + /// The maximum number of inbound HRMP channels a parathread (on-demand parachain) is allowed to accept. pub hrmp_max_parathread_inbound_channels: u32, /// The maximum size of a message that could ever be put into an HRMP channel. /// @@ -96,7 +96,7 @@ struct HostConfiguration { pub hrmp_channel_max_message_size: u32, /// The maximum number of outbound HRMP channels a parachain is allowed to open. pub hrmp_max_parachain_outbound_channels: u32, - /// The maximum number of outbound HRMP channels a parathread is allowed to open. + /// The maximum number of outbound HRMP channels a parathread (on-demand parachain) is allowed to open. pub hrmp_max_parathread_outbound_channels: u32, /// The maximum number of outbound HRMP messages can be sent by a candidate. /// diff --git a/roadmap/parachains.md b/roadmap/parachains.md index 89e8fdaf3892..9d6c014a1c7c 100644 --- a/roadmap/parachains.md +++ b/roadmap/parachains.md @@ -41,13 +41,13 @@ Category: Runtime Auctioning and registration of parachains. This is already implemented and follows the [Parachain Allocation — Research at W3F](https://research.web3.foundation/en/latest/polkadot/Parachain-Allocation.html) document. -#### *Parathread Auctions* +#### *On-demand Blockspace Purchase* Category: Runtime -Parathreads are pay-as-you-go parachains. This consists of an on-chain mechanism for resolving an auction by collators and ensuring that they author a block. +The blockspace purchasing system for on-demand parachains consists of an on-chain mechanism for resolving block space purchases by collators and ensuring that they author a block. -The node-side portion of parathreads is for collators to actually cast bids and to be configured for which conditions to cast bids under. +The node-side portion of on-demand parachains is for collators to actually purchase blockspace and to configure the conditions in which purchases are made. #### *Validator Assignment* @@ -76,11 +76,11 @@ Category: Networking A black-box networking component for validators or fishermen on a parachain to obtain the PoV block referenced by hash in an attestation, for the purpose of validating. When fetching "current" PoV blocks (close to the head of the chain, or relating to the block currently being built), this should be fast. When fetching "old" PoV blocks, it should be possible and fall back on recovering from the availability erasure-coding. -#### *Parathread Auction Voting* +#### *On-demand Blockspace Purchase* Category: Node, Networking -How and when collators are configured to cast votes in parathread auctions. +How and when collators are configured to purchase on-demand blockspace. #### *Collation Loop* @@ -146,7 +146,7 @@ We will need a network where collators of paras can discover and fetch the relev Category: Runtime -Runtime logic for paras to open and close channels by putting down a deposit. The amount of channels a parathread can open will be limited. Channels that are pending close should remain open until the watermark of the recipient has reached the block height of the close request. +Runtime logic for paras to open and close channels by putting down a deposit. The amount of channels an on-demand parachain can open will be limited. Channels that are pending close should remain open until the watermark of the recipient has reached the block height of the close request. --- ### Fishing/Slashing @@ -197,7 +197,7 @@ The very first phase - this is parachains without slashing (full security) or cr ### Assignment: - Auctions - - Parathread Auctions + - On-demand Blockspace purchase - Validator Assignment ### Agreement: diff --git a/runtime/common/src/assigned_slots.rs b/runtime/common/src/assigned_slots.rs index b2c43b0d5b3f..90771e9da08e 100644 --- a/runtime/common/src/assigned_slots.rs +++ b/runtime/common/src/assigned_slots.rs @@ -160,13 +160,15 @@ pub mod pallet { #[pallet::error] pub enum Error { - /// The specified parachain or parathread is not registered. + /// The specified parachain is not registered. ParaDoesntExist, - /// Not a parathread. + /// Not a parathread (on-demand parachain). NotParathread, - /// Cannot upgrade parathread. + /// Cannot upgrade on-demand parachain to lease holding + /// parachain. CannotUpgrade, - /// Cannot downgrade parachain. + /// Cannot downgrade lease holding parachain to + /// on-demand. CannotDowngrade, /// Permanent or Temporary slot already assigned. SlotAlreadyAssigned, @@ -371,7 +373,7 @@ pub mod pallet { } } - // Force downgrade to parathread (if needed) before end of lease period + // Force downgrade to on-demand parachain (if needed) before end of lease period if is_parachain { if let Err(err) = runtime_parachains::schedule_parachain_downgrade::(id) { // Treat failed downgrade as warning .. slot lease has been cleared, @@ -507,7 +509,7 @@ impl Pallet { TemporarySlots::::contains_key(id) } - /// Returns whether a para is currently a parachain. + /// Returns whether a para is currently a lease holding parachain. fn is_parachain(id: ParaId) -> bool { T::Registrar::is_parachain(id) } @@ -913,7 +915,7 @@ mod tests { run_to_block(block); } - // Para lease ended, downgraded back to parathread + // Para lease ended, downgraded back to parathread (on-demand parachain) assert_eq!(TestRegistrar::::is_parathread(ParaId::from(1_u32)), true); assert_eq!(Slots::already_leased(ParaId::from(1_u32), 0, 5), false); }); @@ -1112,7 +1114,7 @@ mod tests { println!("lease period #{}", AssignedSlots::current_lease_period_index()); println!("lease {:?}", Slots::lease(ParaId::from(1_u32))); - // Para lease ended, downgraded back to parathread + // Para lease ended, downgraded back to on-demand parachain assert_eq!(TestRegistrar::::is_parathread(ParaId::from(1_u32)), true); assert_eq!(Slots::already_leased(ParaId::from(1_u32), 0, 3), false); assert_eq!(AssignedSlots::active_temporary_slot_count(), 0); diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index 30e4758d24c1..49fbc7065631 100644 --- a/runtime/common/src/integration_tests.rs +++ b/runtime/common/src/integration_tests.rs @@ -382,7 +382,7 @@ fn basic_end_to_end_works() { // User 1 and 2 will own parachains Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); - // First register 2 parathreads + // First register 2 on-demand parachains let genesis_head = Registrar::worst_head_data(); let validation_code = Registrar::worst_validation_code(); assert_ok!(Registrar::reserve(signed(1))); @@ -414,8 +414,8 @@ fn basic_end_to_end_works() { lease_period_index_start )); - // 2 sessions later they are parathreads - run_to_session(START_SESSION_INDEX + 2); + // 2 sessions later they are parathreads (on-demand parachains) + run_to_session(2); assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); @@ -499,7 +499,7 @@ fn basic_end_to_end_works() { let lease_start_block = start_block + 400 + offset; run_to_block(lease_start_block); - // First slot, Para 1 should be transitioning to Parachain + // First slot, Para 1 should be transitioning to lease holding Parachain assert_eq!( Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::UpgradingParathread) @@ -815,7 +815,7 @@ fn competing_bids() { #[test] fn basic_swap_works() { - // This test will test a swap between a parachain and parathread works successfully. + // This test will test a swap between a lease holding parachain and on-demand parachain works successfully. new_test_ext().execute_with(|| { assert!(System::block_number().is_one()); /* So events are emitted */ @@ -825,8 +825,7 @@ fn basic_swap_works() { // User 1 and 2 will own paras Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); - // First register 2 parathreads with different data - let validation_code = test_validation_code(10); + // First register 2 on-demand parachains with different data assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -859,8 +858,8 @@ fn basic_swap_works() { lease_period_index_start )); - // 2 sessions later they are parathreads - run_to_session(START_SESSION_INDEX + 2); + // 2 sessions later they are on-demand parachains + run_to_session(2); assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); @@ -932,7 +931,7 @@ fn basic_swap_works() { assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parachain)); - // Deregister parathread + // Deregister on-demand parachain assert_ok!(Registrar::deregister(para_origin(2000).into(), ParaId::from(2000))); // Correct deposit is unreserved assert_eq!(Balances::reserved_balance(&account_id(1)), 100); // crowdloan deposit left over @@ -987,8 +986,7 @@ fn parachain_swap_works() { // User 1 and 2 will own paras Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); - // First register 2 parathreads with different data - let validation_code = test_validation_code(10); + // First register 2 on-demand parachains with different data assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -1028,7 +1026,7 @@ fn parachain_swap_works() { lease_period_index_start )); - // 2 sessions later they are parathreads + // 2 sessions later they are on-demand parachains run_to_block(starting_block + 20); assert_eq!(Paras::lifecycle(ParaId::from(winner)), Some(ParaLifecycle::Parathread)); @@ -1165,9 +1163,7 @@ fn crowdloan_ending_period_bid() { // User 1 and 2 will own paras Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); - - // First register 2 parathreads - let validation_code = test_validation_code(10); + // First register 2 on-demand parachains assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -1201,8 +1197,8 @@ fn crowdloan_ending_period_bid() { lease_period_index_start )); - // 2 sessions later they are parathreads - run_to_session(START_SESSION_INDEX + 2); + // 2 sessions later they are on-demand parachains + run_to_session(2); assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); @@ -1534,8 +1530,7 @@ fn cant_bid_on_existing_lease_periods() { run_to_session(START_SESSION_INDEX); Balances::make_free_balance_be(&account_id(1), 1_000_000_000); - // First register a parathread - let validation_code = test_validation_code(10); + // First register an on-demand parachain assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -1555,8 +1550,8 @@ fn cant_bid_on_existing_lease_periods() { lease_period_index_start )); - // 2 sessions later they are parathreads - run_to_session(START_SESSION_INDEX + 2); + // 2 sessions later they are on-demand parachains + run_to_session(2); // Open a crowdloan for Para 1 for slots 0-3 assert_ok!(Crowdloan::create( diff --git a/runtime/common/src/mock.rs b/runtime/common/src/mock.rs index 06cc7771dede..6693c41489c9 100644 --- a/runtime/common/src/mock.rs +++ b/runtime/common/src/mock.rs @@ -31,6 +31,7 @@ use std::{cell::RefCell, collections::HashMap}; thread_local! { static OPERATIONS: RefCell> = RefCell::new(Vec::new()); static PARACHAINS: RefCell> = RefCell::new(Vec::new()); + // On-demand parachains static PARATHREADS: RefCell> = RefCell::new(Vec::new()); static LOCKS: RefCell> = RefCell::new(HashMap::new()); static MANAGERS: RefCell>> = RefCell::new(HashMap::new()); @@ -49,6 +50,7 @@ impl Registrar for TestRegistrar { PARACHAINS.with(|x| x.borrow().clone()) } + // Is on-demand parachain fn is_parathread(id: ParaId) -> bool { PARATHREADS.with(|x| x.borrow().binary_search(&id).is_ok()) } @@ -75,7 +77,7 @@ impl Registrar for TestRegistrar { Err(_) => Ok(()), } })?; - // Should not be parathread, then make it. + // Should not be parathread (on-demand parachain), then make it. PARATHREADS.with(|x| { let mut parathreads = x.borrow_mut(); match parathreads.binary_search(&id) { @@ -99,7 +101,7 @@ impl Registrar for TestRegistrar { Err(_) => Ok(()), } })?; - // Remove from parathread. + // Remove from parathreads (on-demand parachains). PARATHREADS.with(|x| { let mut parathreads = x.borrow_mut(); match parathreads.binary_search(&id) { @@ -114,6 +116,8 @@ impl Registrar for TestRegistrar { Ok(()) } + /// If the ParaId corresponds to a parathread (on-demand parachain), + /// then upgrade it to a lease holding parachain fn make_parachain(id: ParaId) -> DispatchResult { PARATHREADS.with(|x| { let mut parathreads = x.borrow_mut(); @@ -144,6 +148,9 @@ impl Registrar for TestRegistrar { }); Ok(()) } + + /// If the ParaId corresponds to a lease holding parachain, then downgrade it to a + /// parathread (on-demand parachain) fn make_parathread(id: ParaId) -> DispatchResult { PARACHAINS.with(|x| { let mut parachains = x.borrow_mut(); diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 0dbc47ee2ae8..2d92fadeeb9b 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Pallet to handle parathread/parachain registration and related fund management. +//! Pallet to handle parachain registration and related fund management. //! In essence this is a simple wrapper around `paras`. use frame_support::{ @@ -113,13 +113,13 @@ pub mod pallet { type RuntimeOrigin: From<::RuntimeOrigin> + Into::RuntimeOrigin>>; - /// The system's currency for parathread payment. + /// The system's currency for on-demand parachain payment. type Currency: ReservableCurrency; - /// Runtime hook for when a parachain and parathread swap. + /// Runtime hook for when a lease holding parachain and on-demand parachain swap. type OnSwap: crate::traits::OnSwap; - /// The deposit to be paid to run a parathread. + /// The deposit to be paid to run a on-demand parachain. /// This should include the cost for storing the genesis head and validation code. #[pallet::constant] type ParaDeposit: Get>; @@ -155,13 +155,13 @@ pub mod pallet { HeadDataTooLarge, /// Para is not a Parachain. NotParachain, - /// Para is not a Parathread. + /// Para is not a Parathread (on-demand parachain). NotParathread, /// Cannot deregister para CannotDeregister, - /// Cannot schedule downgrade of parachain to parathread + /// Cannot schedule downgrade of lease holding parachain to on-demand parachain CannotDowngrade, - /// Cannot schedule upgrade of parathread to parachain + /// Cannot schedule upgrade of on-demand parachain to lease holding parachain CannotUpgrade, /// Para is locked from manipulation by the manager. Must use parachain or relay chain governance. ParaLocked, @@ -263,7 +263,7 @@ pub mod pallet { /// Deregister a Para Id, freeing all data and returning any deposit. /// - /// The caller must be Root, the `para` owner, or the `para` itself. The para must be a parathread. + /// The caller must be Root, the `para` owner, or the `para` itself. The para must be an on-demand parachain. #[pallet::call_index(2)] #[pallet::weight(::WeightInfo::deregister())] pub fn deregister(origin: OriginFor, id: ParaId) -> DispatchResult { @@ -271,7 +271,7 @@ pub mod pallet { Self::do_deregister(id) } - /// Swap a parachain with another parachain or parathread. + /// Swap a lease holding parachain with another parachain, either on-demand or lease holding. /// /// The origin must be Root, the `para` owner, or the `para` itself. /// @@ -280,8 +280,8 @@ pub mod pallet { /// /// The `ParaId`s remain mapped to the same head data and code so external code can rely on /// `ParaId` to be a long-term identifier of a notional "parachain". However, their - /// scheduling info (i.e. whether they're a parathread or parachain), auction information - /// and the auction deposit are switched. + /// scheduling info (i.e. whether they're an on-demand parachain or lease holding parachain), + /// auction information and the auction deposit are switched. #[pallet::call_index(3)] #[pallet::weight(::WeightInfo::swap())] pub fn swap(origin: OriginFor, id: ParaId, other: ParaId) -> DispatchResult { @@ -301,7 +301,7 @@ pub mod pallet { if PendingSwap::::get(other) == Some(id) { let other_lifecycle = paras::Pallet::::lifecycle(other).ok_or(Error::::NotRegistered)?; - // identify which is a parachain and which is a parathread + // identify which is a lease holding parachain and which is a parathread (on-demand parachain) if id_lifecycle == ParaLifecycle::Parachain && other_lifecycle == ParaLifecycle::Parathread { @@ -345,7 +345,8 @@ pub mod pallet { /// /// This function will reserve a new Para Id to be owned/managed by the origin account. /// The origin account is able to register head data and validation code using `register` to create - /// a parathread. Using the Slots pallet, a parathread can then be upgraded to get a parachain slot. + /// an on-demand parachain. Using the Slots pallet, an on-demand parachain can then be upgraded to + /// a lease holding parachain. /// /// ## Arguments /// - `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new para ID. @@ -417,12 +418,12 @@ impl Registrar for Pallet { Some(Paras::::get(id)?.manager) } - // All parachains. Ordered ascending by ParaId. Parathreads are not included. + // All lease holding parachains. Ordered ascending by ParaId. On-demand parachains are not included. fn parachains() -> Vec { paras::Pallet::::parachains() } - // Return if a para is a parathread + // Return if a para is a parathread (on-demand parachain) fn is_parathread(id: ParaId) -> bool { paras::Pallet::::is_parathread(id) } @@ -460,9 +461,9 @@ impl Registrar for Pallet { Self::do_deregister(id) } - // Upgrade a registered parathread into a parachain. + // Upgrade a registered on-demand parachain into a lease holding parachain. fn make_parachain(id: ParaId) -> DispatchResult { - // Para backend should think this is a parathread... + // Para backend should think this is an on-demand parachain... ensure!( paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parathread), Error::::NotParathread @@ -475,7 +476,7 @@ impl Registrar for Pallet { Ok(()) } - // Downgrade a registered para into a parathread. + // Downgrade a registered para into a parathread (on-demand parachain). fn make_parathread(id: ParaId) -> DispatchResult { // Para backend should think this is a parachain... ensure!( @@ -602,7 +603,7 @@ impl Pallet { /// Deregister a Para Id, freeing all data returning any deposit. fn do_deregister(id: ParaId) -> DispatchResult { match paras::Pallet::::lifecycle(id) { - // Para must be a parathread, or not exist at all. + // Para must be a parathread (on-demand parachain), or not exist at all. Some(ParaLifecycle::Parathread) | None => {}, _ => return Err(Error::::NotParathread.into()), } @@ -642,7 +643,7 @@ impl Pallet { Ok((ParaGenesisArgs { genesis_head, validation_code, para_kind }, deposit)) } - /// Swap a parachain and parathread, which involves scheduling an appropriate lifecycle update. + /// Swap a lease holding parachain and parathread (on-demand parachain), which involves scheduling an appropriate lifecycle update. fn do_thread_and_chain_swap(to_downgrade: ParaId, to_upgrade: ParaId) { let res1 = runtime_parachains::schedule_parachain_downgrade::(to_downgrade); debug_assert!(res1.is_ok()); @@ -925,19 +926,17 @@ mod tests { test_genesis_head(32), validation_code.clone(), )); - conclude_pvf_checking::(&validation_code, VALIDATORS, START_SESSION_INDEX); - - run_to_session(START_SESSION_INDEX + 2); - // It is now a parathread. + run_to_session(2); + // It is now a parathread (on-demand parachain). assert!(Parachains::is_parathread(para_id)); assert!(!Parachains::is_parachain(para_id)); - // Some other external process will elevate parathread to parachain + // Some other external process will elevate on-demand to lease holding parachain assert_ok!(Registrar::make_parachain(para_id)); - run_to_session(START_SESSION_INDEX + 4); - // It is now a parachain. + run_to_session(4); + // It is now a lease holding parachain. assert!(!Parachains::is_parathread(para_id)); assert!(Parachains::is_parachain(para_id)); - // Turn it back into a parathread + // Turn it back into a parathread (on-demand parachain) assert_ok!(Registrar::make_parathread(para_id)); run_to_session(START_SESSION_INDEX + 6); assert!(Parachains::is_parathread(para_id)); @@ -1325,7 +1324,7 @@ mod tests { run_to_session(START_SESSION_INDEX + 2); - // They are now a parathread. + // They are now parathreads (on-demand parachains). assert!(Parachains::is_parathread(para_1)); assert!(Parachains::is_parathread(para_2)); @@ -1336,7 +1335,8 @@ mod tests { Error::::CannotSwap ); - // Some other external process will elevate one parathread to parachain + // Some other external process will elevate one on-demand + // parachain to a lease holding parachain assert_ok!(Registrar::make_parachain(para_1)); // Cannot swap @@ -1357,7 +1357,7 @@ mod tests { run_to_session(START_SESSION_INDEX + 4); - // It is now a parachain. + // It is now a lease holding parachain. assert!(Parachains::is_parachain(para_1)); assert!(Parachains::is_parathread(para_2)); @@ -1518,6 +1518,7 @@ mod benchmarking { } swap { + // On demand parachain let parathread = register_para::(LOWEST_PUBLIC_ID.into()); let parachain = register_para::((LOWEST_PUBLIC_ID + 1).into()); diff --git a/runtime/common/src/paras_sudo_wrapper.rs b/runtime/common/src/paras_sudo_wrapper.rs index 8944e932e9ef..c1c2973568fa 100644 --- a/runtime/common/src/paras_sudo_wrapper.rs +++ b/runtime/common/src/paras_sudo_wrapper.rs @@ -41,22 +41,22 @@ pub mod pallet { #[pallet::error] pub enum Error { - /// The specified parachain or parathread is not registered. + /// The specified parachain is not registered. ParaDoesntExist, - /// The specified parachain or parathread is already registered. + /// The specified parachain is already registered. ParaAlreadyExists, /// A DMP message couldn't be sent because it exceeds the maximum size allowed for a downward /// message. ExceedsMaxMessageSize, /// Could not schedule para cleanup. CouldntCleanup, - /// Not a parathread. + /// Not a parathread (on-demand parachain). NotParathread, - /// Not a parachain. + /// Not a lease holding parachain. NotParachain, - /// Cannot upgrade parathread. + /// Cannot upgrade on-demand parachain to lease holding parachain. CannotUpgrade, - /// Cannot downgrade parachain. + /// Cannot downgrade lease holding parachain to on-demand. CannotDowngrade, } @@ -89,7 +89,7 @@ pub mod pallet { Ok(()) } - /// Upgrade a parathread to a parachain + /// Upgrade a parathread (on-demand parachain) to a lease holding parachain #[pallet::call_index(2)] #[pallet::weight((1_000, DispatchClass::Operational))] pub fn sudo_schedule_parathread_upgrade( @@ -97,7 +97,7 @@ pub mod pallet { id: ParaId, ) -> DispatchResult { ensure_root(origin)?; - // Para backend should think this is a parathread... + // Para backend should think this is a parathread (on-demand parachain)... ensure!( paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parathread), Error::::NotParathread, @@ -107,7 +107,7 @@ pub mod pallet { Ok(()) } - /// Downgrade a parachain to a parathread + /// Downgrade a lease holding parachain to an on-demand parachain #[pallet::call_index(3)] #[pallet::weight((1_000, DispatchClass::Operational))] pub fn sudo_schedule_parachain_downgrade( diff --git a/runtime/common/src/slots/mod.rs b/runtime/common/src/slots/mod.rs index 162d3031855a..8ef33954f374 100644 --- a/runtime/common/src/slots/mod.rs +++ b/runtime/common/src/slots/mod.rs @@ -14,9 +14,9 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Parathread and parachains leasing system. Allows para IDs to be claimed, the code and data to be initialized and -//! parachain slots (i.e. continuous scheduling) to be leased. Also allows for parachains and parathreads to be -//! swapped. +//! Parachains leasing system. Allows para IDs to be claimed, the code and data to be initialized and +//! parachain slots (i.e. continuous scheduling) to be leased. Also allows for lease holding parachains and +//! on-demand parachains to be swapped. //! //! This doesn't handle the mechanics of determining which para ID actually ends up with a parachain lease. This //! must handled by a separately, through the trait interface that this pallet provides or the root dispatchables. @@ -244,7 +244,7 @@ impl Pallet { if lease_periods.len() == 1 { // Just one entry, which corresponds to the now-ended lease period. // - // `para` is now just a parathread. + // `para` is now just an on-demand parachain. // // Unreserve whatever is left. if let Some((who, value)) = &lease_periods[0] { @@ -944,7 +944,7 @@ mod tests { Error::::ParaNotOnboarding ); - // Trying Para 2 again should fail cause they are not currently a parathread + // Trying Para 2 again should fail cause they are not currently an on-demand parachain assert!(Slots::trigger_onboard(RuntimeOrigin::signed(1), 2.into()).is_err()); assert_eq!(TestRegistrar::::operations(), vec![(2.into(), 1, true),]); @@ -1003,7 +1003,8 @@ mod benchmarking { assert_eq!(event, &system_event); } - fn register_a_parathread(i: u32) -> (ParaId, T::AccountId) { + // Registers a parathread (on-demand parachain) + fn register_a_parathread(i: u32) -> (ParaId, T::AccountId) { let para = ParaId::from(i); let leaser: T::AccountId = account("leaser", i, 0); T::Currency::make_free_balance_be(&leaser, BalanceOf::::max_value()); @@ -1051,7 +1052,7 @@ mod benchmarking { }.into()); } - // Worst case scenario, T parathreads onboard, and C parachains offboard. + // Worst case scenario, T on-demand parachains onboard, and C lease holding parachains offboard. manage_lease_period_start { // Assume reasonable maximum of 100 paras at any time let c in 0 .. 100; @@ -1063,14 +1064,14 @@ mod benchmarking { // If there is an offset, we need to be on that block to be able to do lease things. frame_system::Pallet::::set_block_number(T::LeaseOffset::get() + One::one()); - // Make T parathreads + // Make T parathreads (on-demand parachains) let paras_info = (0..t).map(|i| { register_a_parathread::(i) }).collect::>(); T::Registrar::execute_pending_transitions(); - // T parathread are upgrading to parachains + // T on-demand parachains are upgrading to lease holding parachains for (para, leaser) in paras_info { let amount = T::Currency::minimum_balance(); let origin = T::ForceOrigin::try_successful_origin() @@ -1080,7 +1081,7 @@ mod benchmarking { T::Registrar::execute_pending_transitions(); - // C parachains are downgrading to parathreads + // C lease holding parachains are downgrading to on-demand parachains for i in 200 .. 200 + c { let (para, leaser) = register_a_parathread::(i); T::Registrar::make_parachain(para)?; diff --git a/runtime/common/src/traits.rs b/runtime/common/src/traits.rs index f24a5b977968..726cebfb545a 100644 --- a/runtime/common/src/traits.rs +++ b/runtime/common/src/traits.rs @@ -31,15 +31,16 @@ pub trait Registrar { /// Report the manager (permissioned owner) of a parachain, if there is one. fn manager_of(id: ParaId) -> Option; - /// All parachains. Ordered ascending by `ParaId`. Parathreads are not included. + /// All lease holding parachains. Ordered ascending by `ParaId`. On-demand + /// parachains are not included. fn parachains() -> Vec; - /// Return if a `ParaId` is a Parachain. + /// Return if a `ParaId` is a lease holding Parachain. fn is_parachain(id: ParaId) -> bool { Self::parachains().binary_search(&id).is_ok() } - /// Return if a `ParaId` is a Parathread. + /// Return if a `ParaId` is a Parathread (on-demand parachain). fn is_parathread(id: ParaId) -> bool; /// Return if a `ParaId` is registered in the system. @@ -70,7 +71,7 @@ pub trait Registrar { /// Elevate a para to parachain status. fn make_parachain(id: ParaId) -> DispatchResult; - /// Lower a para back to normal from parachain status. + /// Downgrade lease holding parachain into parathread (on-demand parachain) fn make_parathread(id: ParaId) -> DispatchResult; #[cfg(any(feature = "runtime-benchmarks", test))] @@ -80,7 +81,8 @@ pub trait Registrar { fn worst_validation_code() -> ValidationCode; /// Execute any pending state transitions for paras. - /// For example onboarding to parathread, or parathread to parachain. + /// For example onboarding to on-demand parachain, or upgrading on-demand to + /// lease holding parachain. #[cfg(any(feature = "runtime-benchmarks", test))] fn execute_pending_transitions(); } @@ -250,7 +252,7 @@ pub trait Auctioneer { fn has_won_an_auction(para: ParaId, bidder: &Self::AccountId) -> bool; } -/// Runtime hook for when we swap a parachain and parathread. +/// Runtime hook for when we swap a lease holding parachain and an on-demand parachain. #[impl_trait_for_tuples::impl_for_tuples(30)] pub trait OnSwap { /// Updates any needed state/references to enact a logical swap of two parachains. Identity, diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index 05b0ca1fc538..a825693a4bcc 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -43,7 +43,7 @@ pub use pallet::*; const LOG_TARGET: &str = "runtime::configuration"; -/// All configuration of the runtime with respect to parachains and parathreads. +/// All configuration of the runtime with respect to parachains. #[derive(Clone, Encode, Decode, PartialEq, sp_core::RuntimeDebug, scale_info::TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] pub struct HostConfiguration { @@ -135,7 +135,8 @@ pub struct HostConfiguration { pub max_downward_message_size: u32, /// The maximum number of outbound HRMP channels a parachain is allowed to open. pub hrmp_max_parachain_outbound_channels: u32, - /// The maximum number of outbound HRMP channels a parathread is allowed to open. + /// The maximum number of outbound HRMP channels a parathread (on-demand parachain) is allowed + /// to open. pub hrmp_max_parathread_outbound_channels: u32, /// The deposit that the sender should provide for opening an HRMP channel. pub hrmp_sender_deposit: Balance, @@ -147,7 +148,8 @@ pub struct HostConfiguration { pub hrmp_channel_max_total_size: u32, /// The maximum number of inbound HRMP channels a parachain is allowed to accept. pub hrmp_max_parachain_inbound_channels: u32, - /// The maximum number of inbound HRMP channels a parathread is allowed to accept. + /// The maximum number of inbound HRMP channels a parathread (on-demand parachain) is allowed + /// to accept. pub hrmp_max_parathread_inbound_channels: u32, /// The maximum size of a message that could ever be put into an HRMP channel. /// @@ -163,9 +165,9 @@ pub struct HostConfiguration { /// How long to keep code on-chain, in blocks. This should be sufficiently long that disputes /// have concluded. pub code_retention_period: BlockNumber, - /// The amount of execution cores to dedicate to parathread execution. + /// The amount of execution cores to dedicate to parathread (on-demand parachain) execution. pub parathread_cores: u32, - /// The number of retries that a parathread author has to submit their block. + /// The number of retries that a parathread (on-demand parachain) author has to submit their block. pub parathread_retries: u32, /// How often parachain groups should be rotated across parachains. /// @@ -177,12 +179,12 @@ pub struct HostConfiguration { /// /// Must be at least 1. pub chain_availability_period: BlockNumber, - /// The availability period, in blocks, for parathreads. Same as the `chain_availability_period`, - /// but a differing timeout due to differing requirements. + /// The availability period, in blocks, for parathreads (on-demand parachains). Same as the + /// `chain_availability_period`, but a differing timeout due to differing requirements. /// /// Must be at least 1. pub thread_availability_period: BlockNumber, - /// The amount of blocks ahead to schedule parachains and parathreads. + /// The amount of blocks ahead to schedule parachains. pub scheduling_lookahead: u32, /// The maximum number of validators to have per core. /// @@ -633,7 +635,7 @@ pub mod pallet { }) } - /// Set the number of parathread execution cores. + /// Set the number of parathread (on-demand parachain) execution cores. #[pallet::call_index(6)] #[pallet::weight(( T::WeightInfo::set_config_with_u32(), @@ -646,7 +648,7 @@ pub mod pallet { }) } - /// Set the number of retries for a particular parathread. + /// Set the number of retries for a particular parathread (on-demand parachain). #[pallet::call_index(7)] #[pallet::weight(( T::WeightInfo::set_config_with_u32(), @@ -691,7 +693,7 @@ pub mod pallet { }) } - /// Set the availability period for parathreads. + /// Set the availability period for parathreads (on-demand parachains). #[pallet::call_index(10)] #[pallet::weight(( T::WeightInfo::set_config_with_block_number(), @@ -995,7 +997,7 @@ pub mod pallet { }) } - /// Sets the maximum number of inbound HRMP channels a parathread is allowed to accept. + /// Sets the maximum number of inbound HRMP channels a parathread (on-demand parachain) is allowed to accept. #[pallet::call_index(35)] #[pallet::weight(( T::WeightInfo::set_config_with_u32(), @@ -1040,7 +1042,7 @@ pub mod pallet { }) } - /// Sets the maximum number of outbound HRMP channels a parathread is allowed to open. + /// Sets the maximum number of outbound HRMP channels a parathread (on-demand parachain) is allowed to open. #[pallet::call_index(38)] #[pallet::weight(( T::WeightInfo::set_config_with_u32(), diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index 993c4a2fcbb2..12ef3a6384e9 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -331,7 +331,7 @@ pub mod pallet { StorageMap<_, Twox64Concat, HrmpChannelId, HrmpOpenChannelRequest>; // NOTE: could become bounded, but we don't have a global maximum for this. - // `HRMP_MAX_INBOUND_CHANNELS_BOUND` are per parachain/parathread, while this storage tracks the + // `HRMP_MAX_INBOUND_CHANNELS_BOUND` are per parachain, while this storage tracks the // global state. #[pallet::storage] pub type HrmpOpenChannelRequestsList = diff --git a/runtime/parachains/src/inclusion/mod.rs b/runtime/parachains/src/inclusion/mod.rs index c77b51f6b6f9..09902dbe39d7 100644 --- a/runtime/parachains/src/inclusion/mod.rs +++ b/runtime/parachains/src/inclusion/mod.rs @@ -14,8 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! The inclusion pallet is responsible for inclusion and availability of scheduled parachains -//! and parathreads. +//! The inclusion pallet is responsible for inclusion and availability of scheduled parachains. //! //! It is responsible for carrying candidates from being backable to being backed, and then from backed //! to included. diff --git a/runtime/parachains/src/lib.rs b/runtime/parachains/src/lib.rs index 43c5c6441ad9..a80898b97480 100644 --- a/runtime/parachains/src/lib.rs +++ b/runtime/parachains/src/lib.rs @@ -76,12 +76,12 @@ pub fn schedule_para_cleanup(id: primitives::Id) -> Result<(), >::schedule_para_cleanup(id).map_err(|_| ()) } -/// Schedule a parathread to be upgraded to a parachain. +/// Schedule a parathread (on-demand parachain) to be upgraded to a lease holding parachain. pub fn schedule_parathread_upgrade(id: ParaId) -> Result<(), ()> { paras::Pallet::::schedule_parathread_upgrade(id).map_err(|_| ()) } -/// Schedule a parachain to be downgraded to a parathread. +/// Schedule a lease holding parachain to be downgraded to an on-demand parachain. pub fn schedule_parachain_downgrade(id: ParaId) -> Result<(), ()> { paras::Pallet::::schedule_parachain_downgrade(id).map_err(|_| ()) } diff --git a/runtime/parachains/src/paras/mod.rs b/runtime/parachains/src/paras/mod.rs index 68ebd15aeb6a..1f615e85393d 100644 --- a/runtime/parachains/src/paras/mod.rs +++ b/runtime/parachains/src/paras/mod.rs @@ -18,15 +18,15 @@ //! //! # Tracking State of Paras //! -//! The most important responsibility of this module is to track which parachains and parathreads +//! The most important responsibility of this module is to track which parachains //! are active and what their current state is. The current state of a para consists of the current //! head data and the current validation code (AKA Parachain Validation Function (PVF)). //! //! A para is not considered live until it is registered and activated in this pallet. //! -//! The set of parachains and parathreads cannot change except at session boundaries. This is -//! primarily to ensure that the number and meaning of bits required for the availability bitfields -//! does not change except at session boundaries. +//! The set of parachains cannot change except at session boundaries. This is primarily to ensure +//! that the number and meaning of bits required for the availability bitfields does not change +//! except at session boundaries. //! //! # Validation Code Upgrades //! @@ -61,7 +61,8 @@ //! //! # Para Lifecycle Management //! -//! A para can be in one of the two stable states: it is either a parachain or a parathread. +//! A para can be in one of the two stable states: it is either a lease holding parachain or an +//! on-demand parachain. //! //! However, in order to get into one of those two states, it must first be onboarded. Onboarding //! can be only enacted at session boundaries. Onboarding must take at least one full session. @@ -181,17 +182,17 @@ pub struct ParaPastCodeMeta { /// state will be used to determine the state transition to apply to the para. #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub enum ParaLifecycle { - /// Para is new and is onboarding as a Parathread or Parachain. + /// Para is new and is onboarding as an on-demand or lease holding Parachain. Onboarding, - /// Para is a Parathread. + /// Para is a Parathread (on-demand parachain). Parathread, - /// Para is a Parachain. + /// Para is a lease holding Parachain. Parachain, - /// Para is a Parathread which is upgrading to a Parachain. + /// Para is a Parathread (on-demand parachain) which is upgrading to a lease holding Parachain. UpgradingParathread, - /// Para is a Parachain which is downgrading to a Parathread. + /// Para is a lease holding Parachain which is downgrading to an on-demand parachain. DowngradingParachain, - /// Parathread is queued to be offboarded. + /// Parathread (on-demand parachain) is queued to be offboarded. OffboardingParathread, /// Parachain is queued to be offboarded. OffboardingParachain, @@ -199,14 +200,14 @@ pub enum ParaLifecycle { impl ParaLifecycle { /// Returns true if parachain is currently onboarding. To learn if the - /// parachain is onboarding as a parachain or parathread, look at the + /// parachain is onboarding as a lease holding or on-demand parachain, look at the /// `UpcomingGenesis` storage item. pub fn is_onboarding(&self) -> bool { matches!(self, ParaLifecycle::Onboarding) } /// Returns true if para is in a stable state, i.e. it is currently - /// a parachain or parathread, and not in any transition state. + /// a lease holding or on-demand parachain, and not in any transition state. pub fn is_stable(&self) -> bool { matches!(self, ParaLifecycle::Parathread | ParaLifecycle::Parachain) } @@ -223,7 +224,7 @@ impl ParaLifecycle { ) } - /// Returns true if para is currently treated as a parathread. + /// Returns true if para is currently treated as a parathread (on-demand parachain). /// This also includes transitioning states, so you may want to combine /// this check with `is_stable` if you specifically want `Paralifecycle::Parathread`. pub fn is_parathread(&self) -> bool { @@ -297,12 +298,12 @@ pub struct ParaGenesisArgs { pub genesis_head: HeadData, /// The initial validation code to use. pub validation_code: ValidationCode, - /// Parachain or Parathread. + /// Lease holding or on-demand parachain. #[cfg_attr(feature = "std", serde(rename = "parachain"))] pub para_kind: ParaKind, } -/// Distinguishes between Parachain and Parathread +/// Distinguishes between lease holding Parachain and Parathread (on-demand parachain) #[derive(PartialEq, Eq, Clone, RuntimeDebug)] pub enum ParaKind { Parathread, @@ -602,9 +603,9 @@ pub mod pallet { CannotOnboard, /// Para cannot be offboarded at this time. CannotOffboard, - /// Para cannot be upgraded to a parachain. + /// Para cannot be upgraded to a lease holding parachain. CannotUpgrade, - /// Para cannot be downgraded to a parathread. + /// Para cannot be downgraded to an on-demand parachain. CannotDowngrade, /// The statement for PVF pre-checking is stale. PvfCheckStatementStale, @@ -640,7 +641,7 @@ pub mod pallet { pub(super) type PvfActiveVoteList = StorageValue<_, Vec, ValueQuery>; - /// All parachains. Ordered ascending by `ParaId`. Parathreads are not included. + /// All lease holding parachains. Ordered ascending by `ParaId`. On demand parachains are not included. /// /// Consider using the [`ParachainsCache`] type of modifying. #[pallet::storage] @@ -1219,7 +1220,7 @@ impl Pallet { // The actions to take are based on the lifecycle of of the paras. // // The final state of any para after the actions queue should be as a - // parachain, parathread, or not registered. (stable states) + // lease holding parachain, on-demand parachain, or not registered. (stable states) // // Returns the list of outgoing paras from the actions queue. fn apply_actions_queue(session: SessionIndex) -> Vec { @@ -1238,17 +1239,17 @@ impl Pallet { Self::initialize_para_now(&mut parachains, para, &genesis_data); } }, - // Upgrade a parathread to a parachain + // Upgrade an on-demand parachain to a lease holding parachain Some(ParaLifecycle::UpgradingParathread) => { parachains.add(para); ParaLifecycles::::insert(¶, ParaLifecycle::Parachain); }, - // Downgrade a parachain to a parathread + // Downgrade a lease holding parachain to an on-demand parachain Some(ParaLifecycle::DowngradingParachain) => { parachains.remove(para); ParaLifecycles::::insert(¶, ParaLifecycle::Parathread); }, - // Offboard a parathread or parachain from the system + // Offboard a lease holding or on-demand parachain from the system Some(ParaLifecycle::OffboardingParachain) | Some(ParaLifecycle::OffboardingParathread) => { parachains.remove(para); @@ -1688,7 +1689,7 @@ impl Pallet { /// /// Will return error if either is true: /// - /// - para is not a stable parachain or parathread (i.e. [`ParaLifecycle::is_stable`] is `false`) + /// - para is not a stable parachain (i.e. [`ParaLifecycle::is_stable`] is `false`) /// - para has a pending upgrade. /// - para has unprocessed messages in its UMP queue. /// @@ -1738,7 +1739,7 @@ impl Pallet { Ok(()) } - /// Schedule a parathread to be upgraded to a parachain. + /// Schedule a parathread (on-demand parachain) to be upgraded to a lease holding parachain. /// /// Will return error if `ParaLifecycle` is not `Parathread`. pub(crate) fn schedule_parathread_upgrade(id: ParaId) -> DispatchResult { @@ -1757,7 +1758,7 @@ impl Pallet { Ok(()) } - /// Schedule a parachain to be downgraded to a parathread. + /// Schedule a lease holding parachain to be downgraded to an on-demand parachain. /// /// Noop if `ParaLifecycle` is not `Parachain`. pub(crate) fn schedule_parachain_downgrade(id: ParaId) -> DispatchResult { @@ -2029,16 +2030,9 @@ impl Pallet { } } - /// Returns whether the given ID refers to a para that is offboarding. + /// Whether a para ID corresponds to any live lease holding parachain. /// - /// An invalid or non-offboarding para ID will return `false`. - pub fn is_offboarding(id: ParaId) -> bool { - ParaLifecycles::::get(&id).map_or(false, |state| state.is_offboarding()) - } - - /// Whether a para ID corresponds to any live parachain. - /// - /// Includes parachains which will downgrade to a parathread in the future. + /// Includes lease holding parachains which will downgrade to a on-demand parachains in the future. pub fn is_parachain(id: ParaId) -> bool { if let Some(state) = ParaLifecycles::::get(&id) { state.is_parachain() @@ -2047,9 +2041,9 @@ impl Pallet { } } - /// Whether a para ID corresponds to any live parathread. + /// Whether a para ID corresponds to any live parathread (on-demand parachain). /// - /// Includes parathreads which will upgrade to parachains in the future. + /// Includes on-demand parachains which will upgrade to lease holding parachains in the future. pub fn is_parathread(id: ParaId) -> bool { if let Some(state) = ParaLifecycles::::get(&id) { state.is_parathread() diff --git a/runtime/parachains/src/scheduler.rs b/runtime/parachains/src/scheduler.rs index ccbb237f3ba5..200c4c52d2ea 100644 --- a/runtime/parachains/src/scheduler.rs +++ b/runtime/parachains/src/scheduler.rs @@ -14,11 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! The scheduler module for parachains and parathreads. +//! The scheduler module for parachains. //! //! This module is responsible for two main tasks: -//! - Partitioning validators into groups and assigning groups to parachains and parathreads -//! - Scheduling parachains and parathreads +//! - Partitioning validators into groups and assigning groups to parachains +//! - Scheduling parachains //! //! It aims to achieve these tasks with these goals in mind: //! - It should be possible to know at least a block ahead-of-time, ideally more, @@ -27,11 +27,11 @@ //! should not be assigned. //! - Validator assignments should not be gameable. Malicious cartels should not be able to //! manipulate the scheduler to assign themselves as desired. -//! - High or close to optimal throughput of parachains and parathreads. Work among validator groups should be balanced. +//! - High or close to optimal throughput of parachains. Work among validator groups should be balanced. //! //! The Scheduler manages resource allocation using the concept of "Availability Cores". //! There will be one availability core for each parachain, and a fixed number of cores -//! used for multiplexing parathreads. Validators will be partitioned into groups, with the same +//! used for multiplexing on-demand parachains. Validators will be partitioned into groups, with the same //! number of groups as availability cores. Validator groups will be assigned to different availability cores //! over time. @@ -55,7 +55,7 @@ pub mod migration; const LOG_TARGET: &str = "runtime::scheduler"; -/// A queued parathread entry, pre-assigned to a core. +/// A queued parathread (on-demand parachain) entry, pre-assigned to a core. #[derive(Encode, Decode, TypeInfo)] #[cfg_attr(test, derive(PartialEq, Debug))] pub struct QueuedParathread { @@ -63,7 +63,7 @@ pub struct QueuedParathread { core_offset: u32, } -/// The queue of all parathread claims. +/// The queue of all parathread (on-demand parachain) claims. #[derive(Encode, Decode, TypeInfo)] #[cfg_attr(test, derive(PartialEq, Debug))] pub struct ParathreadClaimQueue { @@ -73,9 +73,10 @@ pub struct ParathreadClaimQueue { } impl ParathreadClaimQueue { - /// Queue a parathread entry to be processed. + /// Queue a parathread (on-demand parachain) entry to be processed. /// - /// Provide the entry and the number of parathread cores, which must be greater than 0. + /// Provide the entry and the number of parathread (on-demand parachain) cores, + /// which must be greater than 0. fn enqueue_entry(&mut self, entry: ParathreadEntry, n_parathread_cores: u32) { let core_offset = self.next_core_offset; self.next_core_offset = (self.next_core_offset + 1) % n_parathread_cores; @@ -117,7 +118,7 @@ pub enum FreedReason { pub enum AssignmentKind { /// A parachain. Parachain, - /// A parathread. + /// A parathread (on-demand parachain). Parathread(CollatorId, u32), } @@ -171,8 +172,9 @@ pub mod pallet { /// broader set of Polkadot validators, but instead just the subset used for parachains during /// this session. /// - /// Bound: The number of cores is the sum of the numbers of parachains and parathread multiplexers. - /// Reasonably, 100-1000. The dominant factor is the number of validators: safe upper bound at 10k. + /// Bound: The number of cores is the sum of the numbers of lease holding parachains and on-demand + /// parachain multiplexers. Reasonably, 100-1000. The dominant factor is the number of validators: + /// safe upper bound at 10k. #[pallet::storage] #[pallet::getter(fn validator_groups)] pub(crate) type ValidatorGroups = StorageValue<_, Vec>, ValueQuery>; @@ -180,26 +182,27 @@ pub mod pallet { /// A queue of upcoming claims and which core they should be mapped onto. /// /// The number of queued claims is bounded at the `scheduling_lookahead` - /// multiplied by the number of parathread multiplexer cores. Reasonably, 10 * 50 = 500. + /// multiplied by the number of parathread (on-demand parachain) multiplexer cores. Reasonably, + /// 10 * 50 = 500. #[pallet::storage] pub(crate) type ParathreadQueue = StorageValue<_, ParathreadClaimQueue, ValueQuery>; /// One entry for each availability core. Entries are `None` if the core is not currently occupied. Can be /// temporarily `Some` if scheduled but not occupied. /// The i'th parachain belongs to the i'th core, with the remaining cores all being - /// parathread-multiplexers. + /// on-demand parachain-multiplexers. /// /// Bounded by the maximum of either of these two values: - /// * The number of parachains and parathread multiplexers + /// * The number of lease holding parachains and on-demand parachain multiplexers /// * The number of validators divided by `configuration.max_validators_per_core`. #[pallet::storage] #[pallet::getter(fn availability_cores)] pub(crate) type AvailabilityCores = StorageValue<_, Vec>, ValueQuery>; - /// An index used to ensure that only one claim on a parathread exists in the queue or is - /// currently being handled by an occupied core. + /// An index used to ensure that only one claim on a parathread (on-demand parachain) exists in the queue + /// or is currently being handled by an occupied core. /// - /// Bounded by the number of parathread cores and scheduling lookahead. Reasonably, 10 * 50 = 500. + /// Bounded by the number of parathread (on-demand parachain) cores and scheduling lookahead. Reasonably, 10 * 50 = 500. #[pallet::storage] pub(crate) type ParathreadClaimIndex = StorageValue<_, Vec, ValueQuery>; @@ -215,7 +218,7 @@ pub mod pallet { /// Currently scheduled cores - free but up to be occupied. /// - /// Bounded by the number of cores: one for each parachain and parathread multiplexer. + /// Bounded by the number of cores: one for each lease holding parachain and on-demand parachain multiplexer. /// /// The value contained here will not be valid after the end of a block. Runtime APIs should be used to determine scheduled cores/ /// for the upcoming block. @@ -301,17 +304,17 @@ impl Pallet { ValidatorGroups::::set(groups); } - // prune out all parathread claims with too many retries. + // prune out all parathread (on-demand parachain) claims with too many retries. // assign all non-pruned claims to new cores, if they've changed. ParathreadClaimIndex::::mutate(|claim_index| { - // wipe all parathread metadata if no parathread cores are configured. + // wipe all on-demand metadata if no parathread (on-demand parachain) cores are configured. if config.parathread_cores == 0 { thread_queue = ParathreadClaimQueue { queue: Vec::new(), next_core_offset: 0 }; claim_index.clear(); return } - // prune out all entries beyond retry or that no longer correspond to live parathread. + // prune out all entries beyond retry or that no longer correspond to live parathread (on-demand parachain). thread_queue.queue.retain(|queued| { let will_keep = queued.claim.retries <= config.parathread_retries && >::is_parathread(queued.claim.claim.0); @@ -344,10 +347,11 @@ impl Pallet { >::set(now); } - /// Add a parathread claim to the queue. If there is a competing claim in the queue or currently - /// assigned to a core, this call will fail. This call will also fail if the queue is full. + /// Add a parathread (on-demand parachain) claim to the queue. If there is a competing claim in the + /// queue or currently assigned to a core, this call will fail. This call will also fail if the queue + /// is full. /// - /// Fails if the claim does not correspond to any live parathread. + /// Fails if the claim does not correspond to any live on-demand parachain. #[allow(unused)] pub fn add_parathread_claim(claim: ParathreadClaim) { if !>::is_parathread(claim.0) { @@ -396,7 +400,7 @@ impl Pallet { Some(CoreOccupied::Parathread(entry)) => { match freed_reason { FreedReason::Concluded => { - // After a parathread candidate has successfully been included, + // After a parathread (on-demand parachain) candidate has successfully been included, // open it up for further claims! ParathreadClaimIndex::::mutate(|index| { if let Ok(i) = index.binary_search(&entry.claim.0) { @@ -405,7 +409,7 @@ impl Pallet { }) }, FreedReason::TimedOut => { - // If a parathread candidate times out, it's not the collator's fault, + // If a parathread (on-demand parachain) candidate times out, it's not the collator's fault, // so we don't increment retries. ParathreadQueue::::mutate(|queue| { queue.enqueue_entry(entry, config.parathread_cores); @@ -485,7 +489,7 @@ impl Pallet { core, }) } else { - // parathread core offset, rel. to beginning. + // parathread (on-demand parachain) core offset, rel. to beginning. let core_offset = (core_index - parachains.len()) as u32; parathread_queue.take_next_on_core(core_offset).map(|entry| CoreAssignment { @@ -613,7 +617,7 @@ impl Pallet { /// Returns an optional predicate that should be used for timing out occupied cores. /// /// If `None`, no timing-out should be done. The predicate accepts the index of the core, and the - /// block number since which it has been occupied, and the respective parachain and parathread + /// block number since which it has been occupied, and the respective lease holding and on-demand parachain /// timeouts, i.e. only within `max(config.chain_availability_period, config.thread_availability_period)` /// of the last rotation would this return `Some`, unless there are no rotations. /// @@ -673,8 +677,8 @@ impl Pallet { /// Return the next thing that will be scheduled on this core assuming it is currently /// occupied and the candidate occupying it became available. /// - /// For parachains, this is always the ID of the parachain and no specified collator. - /// For parathreads, this is based on the next item in the `ParathreadQueue` assigned to that + /// For lease holding parachains, this is always the ID of the parachain and no specified collator. + /// For on-demand parachains, this is based on the next item in the `ParathreadQueue` assigned to that /// core, and is None if there isn't one. pub(crate) fn next_up_on_available(core: CoreIndex) -> Option { let parachains = >::parachains(); @@ -693,8 +697,8 @@ impl Pallet { /// Return the next thing that will be scheduled on this core assuming it is currently /// occupied and the candidate occupying it became available. /// - /// For parachains, this is always the ID of the parachain and no specified collator. - /// For parathreads, this is based on the next item in the `ParathreadQueue` assigned to that + /// For lease holding parachains, this is always the ID of the parachain and no specified collator. + /// For on-demand parachains, this is based on the next item in the `ParathreadQueue` assigned to that /// core, or if there isn't one, the claim that is currently occupying the core, as long /// as the claim's retries would not exceed the limit. Otherwise None. pub(crate) fn next_up_on_time_out(core: CoreIndex) -> Option { @@ -729,7 +733,7 @@ impl Pallet { } } - // Free all scheduled cores and return parathread claims to queue, with retries incremented. + // Free all scheduled cores and return parathread (on-demand parachain) claims to queue, with retries incremented. pub(crate) fn clear() { let config = >::config(); ParathreadQueue::::mutate(|queue| { diff --git a/runtime/parachains/src/scheduler/tests.rs b/runtime/parachains/src/scheduler/tests.rs index be77ec03ed84..01c9c1a69e8e 100644 --- a/runtime/parachains/src/scheduler/tests.rs +++ b/runtime/parachains/src/scheduler/tests.rs @@ -170,7 +170,7 @@ fn add_parathread_claim_works() { ); } - // claims on non-live parathreads have no effect. + // claims on non-live parathreads (on-demand parachains) have no effect. { let thread_id2 = ParaId::from(11); Scheduler::add_parathread_claim(ParathreadClaim(thread_id2, collator.clone())); @@ -276,7 +276,7 @@ fn session_change_prunes_cores_beyond_retries_and_those_from_non_live_parathread 4, ); - // Will be pruned: not a live parathread. + // Will be pruned: not a live parathread (on-demand parachain). queue.enqueue_entry( ParathreadEntry { claim: ParathreadClaim(thread_d, collator.clone()), retries: 0 }, 4, @@ -450,11 +450,11 @@ fn schedule_schedules() { new_test_ext(genesis_config).execute_with(|| { assert_eq!(default_config().parathread_cores, 3); - // register 2 parachains + // register 2 lease holding parachains schedule_blank_para(chain_a, ParaKind::Parachain); schedule_blank_para(chain_b, ParaKind::Parachain); - // and 3 parathreads + // and 3 parathreads (on-demand parachains) schedule_blank_para(thread_a, ParaKind::Parathread); schedule_blank_para(thread_b, ParaKind::Parathread); schedule_blank_para(thread_c, ParaKind::Parathread); @@ -498,7 +498,7 @@ fn schedule_schedules() { ); } - // add a couple of parathread claims. + // add a couple of parathread (on-demand parachain) claims. Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); Scheduler::add_parathread_claim(ParathreadClaim(thread_c, collator.clone())); @@ -571,11 +571,11 @@ fn schedule_schedules_including_just_freed() { new_test_ext(genesis_config).execute_with(|| { assert_eq!(default_config().parathread_cores, 3); - // register 2 parachains + // register 2 lease holding parachains schedule_blank_para(chain_a, ParaKind::Parachain); schedule_blank_para(chain_b, ParaKind::Parachain); - // and 5 parathreads + // and 5 parathreads (on-demand parachains) schedule_blank_para(thread_a, ParaKind::Parathread); schedule_blank_para(thread_b, ParaKind::Parathread); schedule_blank_para(thread_c, ParaKind::Parathread); @@ -598,7 +598,7 @@ fn schedule_schedules_including_just_freed() { _ => None, }); - // add a couple of parathread claims now that the parathreads are live. + // add a couple of parathread (on-demand parachain) claims now that the on-demand parachains are live. Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); Scheduler::add_parathread_claim(ParathreadClaim(thread_c, collator.clone())); @@ -621,9 +621,9 @@ fn schedule_schedules_including_just_freed() { assert!(Scheduler::scheduled().is_empty()); } - // add a couple more parathread claims - the claim on `b` will go to the 3rd parathread core (4) - // and the claim on `d` will go back to the 1st parathread core (2). The claim on `e` then - // will go for core `3`. + // add a couple more parathread (on-demand parachain) claims - the claim on `b` will go to + // the 3rd on-demand core (4) and the claim on `d` will go back to the 1st on-demand + // core (2). The claim on `e` then will go for core `3`. Scheduler::add_parathread_claim(ParathreadClaim(thread_b, collator.clone())); Scheduler::add_parathread_claim(ParathreadClaim(thread_d, collator.clone())); Scheduler::add_parathread_claim(ParathreadClaim(thread_e, collator.clone())); @@ -633,8 +633,8 @@ fn schedule_schedules_including_just_freed() { { let scheduled = Scheduler::scheduled(); - // cores 0 and 1 are occupied by parachains. cores 2 and 3 are occupied by parathread - // claims. core 4 was free. + // cores 0 and 1 are occupied by lease holding parachains. cores 2 and 3 are occupied by + // on-demand parachain claims. core 4 was free. assert_eq!(scheduled.len(), 1); assert_eq!( scheduled[0], @@ -812,7 +812,7 @@ fn schedule_rotates_groups() { let config = { let mut config = default_config(); - // make sure parathread requests don't retry-out + // make sure parathread (on-demand parachain) requests don't retry-out config.parathread_retries = config.group_rotation_frequency * 3; config.parathread_cores = 2; config diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index d6a54ce5543c..3d0ba01ea087 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -836,6 +836,7 @@ where } parameter_types! { + // Deposit for a parathread (on-demand parachain) pub const ParathreadDeposit: Balance = 500 * DOLLARS; pub const MaxRetries: u32 = 3; } From d69e7ceac776246b00b61e4c5148f20907e32028 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 24 May 2023 16:28:25 -0700 Subject: [PATCH 02/28] Renaming module to pallet --- .../src/vstaging/mod.rs | 4 ++-- roadmap/implementers-guide/src/SUMMARY.md | 24 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/node/network/statement-distribution/src/vstaging/mod.rs b/node/network/statement-distribution/src/vstaging/mod.rs index 711ad0df33b2..f12c64957f0c 100644 --- a/node/network/statement-distribution/src/vstaging/mod.rs +++ b/node/network/statement-distribution/src/vstaging/mod.rs @@ -549,7 +549,7 @@ fn find_local_validator_state( let our_group = groups.by_validator_index(validator_index)?; - // note: this won't work well for parathreads because it only works + // note: this won't work well for on-demand parachains because it only works // when core assignments to paras are static throughout the session. let core = group_rotation_info.core_for_group(our_group, availability_cores.len()); @@ -1708,7 +1708,7 @@ fn group_for_para( group_rotation_info: &GroupRotationInfo, para_id: ParaId, ) -> Option { - // Note: this won't work well for parathreads as it assumes that core assignments are fixed + // Note: this won't work well for on-demand parachains as it assumes that core assignments are fixed // across blocks. let core_index = availability_cores.iter().position(|c| c.para_id() == Some(para_id)); diff --git a/roadmap/implementers-guide/src/SUMMARY.md b/roadmap/implementers-guide/src/SUMMARY.md index ef94ef3659c6..8a1fb267194d 100644 --- a/roadmap/implementers-guide/src/SUMMARY.md +++ b/roadmap/implementers-guide/src/SUMMARY.md @@ -12,18 +12,18 @@ - [Messaging Overview](messaging.md) - [PVF Pre-checking](pvf-prechecking.md) - [Runtime Architecture](runtime/README.md) - - [`Initializer` Module](runtime/initializer.md) - - [`Configuration` Module](runtime/configuration.md) - - [`Shared`](runtime/shared.md) - - [`Disputes` Module](runtime/disputes.md) - - [`Paras` Module](runtime/paras.md) - - [`Scheduler` Module](runtime/scheduler.md) - - [`Inclusion` Module](runtime/inclusion.md) - - [`ParaInherent` Module](runtime/parainherent.md) - - [`DMP` Module](runtime/dmp.md) - - [`UMP` Module](runtime/ump.md) - - [`HRMP` Module](runtime/hrmp.md) - - [`Session Info` Module](runtime/session_info.md) + - [`Initializer` Pallet](runtime/initializer.md) + - [`Configuration` Pallet](runtime/configuration.md) + - [`Shared` Pallet](runtime/shared.md) + - [`Disputes` Pallet](runtime/disputes.md) + - [`Paras` Pallet](runtime/paras.md) + - [`Scheduler` Pallet](runtime/scheduler.md) + - [`Inclusion` Pallet](runtime/inclusion.md) + - [`ParaInherent` Pallet](runtime/parainherent.md) + - [`DMP` Pallet](runtime/dmp.md) + - [`UMP` Pallet](runtime/ump.md) + - [`HRMP` Pallet](runtime/hrmp.md) + - [`Session Info` Pallet](runtime/session_info.md) - [Runtime APIs](runtime-api/README.md) - [Validators](runtime-api/validators.md) - [Validator Groups](runtime-api/validator-groups.md) From 76ad62eb00fcb142e2bf5e3f7079aef21f214a34 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Thu, 25 May 2023 08:41:50 -0700 Subject: [PATCH 03/28] More updates --- roadmap/implementers-guide/src/runtime/configuration.md | 2 +- roadmap/implementers-guide/src/runtime/disputes.md | 2 +- roadmap/implementers-guide/src/runtime/dmp.md | 2 +- roadmap/implementers-guide/src/runtime/hrmp.md | 2 +- roadmap/implementers-guide/src/runtime/inclusion.md | 4 ++-- roadmap/implementers-guide/src/runtime/initializer.md | 2 +- roadmap/implementers-guide/src/runtime/paras.md | 6 +++--- roadmap/implementers-guide/src/runtime/scheduler.md | 2 +- roadmap/implementers-guide/src/runtime/shared.md | 2 +- runtime/common/src/assigned_slots.rs | 4 ++-- runtime/common/src/paras_registrar.rs | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/roadmap/implementers-guide/src/runtime/configuration.md b/roadmap/implementers-guide/src/runtime/configuration.md index 96d63faccedd..e3463846b3cb 100644 --- a/roadmap/implementers-guide/src/runtime/configuration.md +++ b/roadmap/implementers-guide/src/runtime/configuration.md @@ -1,4 +1,4 @@ -# Configuration Module +# Configuration Pallet This module is responsible for managing all configuration of the parachain host in-flight. It provides a central point for configuration updates to prevent races between configuration changes and parachain-processing logic. Configuration can only change during the session change routine, and as this module handles the session change notification first it provides an invariant that the configuration does not change throughout the entire session. Both the [scheduler](scheduler.md) and [inclusion](inclusion.md) modules rely on this invariant to ensure proper behavior of the scheduler. diff --git a/roadmap/implementers-guide/src/runtime/disputes.md b/roadmap/implementers-guide/src/runtime/disputes.md index 1d3e3f62dc01..a2558b74f562 100644 --- a/roadmap/implementers-guide/src/runtime/disputes.md +++ b/roadmap/implementers-guide/src/runtime/disputes.md @@ -1,4 +1,4 @@ -# Disputes Module +# Disputes Pallet After a backed candidate is made available, it is included and proceeds into an acceptance period during which validators are randomly selected to do (secondary) approval checks of the parablock. Any reports disputing the validity of the candidate will cause escalation, where even more validators are requested to check the block, and so on, until either the parablock is determined to be invalid or valid. Those on the wrong side of the dispute are slashed and, if the parablock is deemed invalid, the relay chain is rolled back to a point before that block was included. diff --git a/roadmap/implementers-guide/src/runtime/dmp.md b/roadmap/implementers-guide/src/runtime/dmp.md index bade5ad4b8c4..f56df31934ef 100644 --- a/roadmap/implementers-guide/src/runtime/dmp.md +++ b/roadmap/implementers-guide/src/runtime/dmp.md @@ -1,4 +1,4 @@ -# DMP Module +# DMP Pallet A module responsible for Downward Message Processing (DMP). See [Messaging Overview](../messaging.md) for more details. diff --git a/roadmap/implementers-guide/src/runtime/hrmp.md b/roadmap/implementers-guide/src/runtime/hrmp.md index 2b0b4751e30a..927c14cd5969 100644 --- a/roadmap/implementers-guide/src/runtime/hrmp.md +++ b/roadmap/implementers-guide/src/runtime/hrmp.md @@ -1,4 +1,4 @@ -# HRMP Module +# HRMP Pallet A module responsible for Horizontally Relay-routed Message Passing (HRMP). See [Messaging Overview](../messaging.md) for more details. diff --git a/roadmap/implementers-guide/src/runtime/inclusion.md b/roadmap/implementers-guide/src/runtime/inclusion.md index ca8fabcfb06b..3fe7711ae2d0 100644 --- a/roadmap/implementers-guide/src/runtime/inclusion.md +++ b/roadmap/implementers-guide/src/runtime/inclusion.md @@ -1,6 +1,6 @@ -# Inclusion Module +# Inclusion Pallet -The inclusion module is responsible for inclusion and availability of scheduled parachains. +The inclusion module is responsible for inclusion and availability of scheduled parachains. It also manages the UMP dispatch queue of each parachain. ## Storage diff --git a/roadmap/implementers-guide/src/runtime/initializer.md b/roadmap/implementers-guide/src/runtime/initializer.md index ffeacd5cb357..19dfcbde50a9 100644 --- a/roadmap/implementers-guide/src/runtime/initializer.md +++ b/roadmap/implementers-guide/src/runtime/initializer.md @@ -1,4 +1,4 @@ -# Initializer Module +# Initializer Pallet This module is responsible for initializing the other modules in a deterministic order. It also has one other purpose as described in the overview of the runtime: accepting and forwarding session change notifications. diff --git a/roadmap/implementers-guide/src/runtime/paras.md b/roadmap/implementers-guide/src/runtime/paras.md index 70b12af7493d..71e5fcbaea21 100644 --- a/roadmap/implementers-guide/src/runtime/paras.md +++ b/roadmap/implementers-guide/src/runtime/paras.md @@ -1,4 +1,4 @@ -# Paras Module +# Paras Pallet The Paras module is responsible for storing information on parachains. Registered parachains cannot change except at session boundaries and after at least a full @@ -56,7 +56,7 @@ pub enum ParaLifecycle { Onboarding, /// Para is a Parathread (on-demand parachain). Parathread, - /// Para is a Parachain. + /// Para is a lease holding Parachain. Parachain, /// Para is a Parathread (on-demand Parachain) which is upgrading to a lease holding Parachain. UpgradingParathread, @@ -255,7 +255,7 @@ CodeByHash: map ValidationCodeHash => Option session. Noop if para is already registered in the system with some `ParaLifecycle`. * `schedule_para_cleanup(ParaId)`: Schedule a para to be cleaned up after the next full session. * `schedule_parathread_upgrade(ParaId)`: Schedule a parathread (on-demand parachain) to be upgraded to a parachain. -* `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded to a parathread (on-demand parachain). +* `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded from lease holding to on-demand. * `schedule_code_upgrade(ParaId, new_code, relay_parent: BlockNumber, HostConfiguration)`: Schedule a future code upgrade of the given parachain. In case the PVF pre-checking is disabled, or the new code is already present in the storage, the upgrade will be applied after inclusion of a block of the same parachain executed in the context of a relay-chain block with number >= `relay_parent + config.validation_upgrade_delay`. If the upgrade is scheduled `UpgradeRestrictionSignal` is set and it will remain set until `relay_parent + config.validation_upgrade_cooldown`. diff --git a/roadmap/implementers-guide/src/runtime/scheduler.md b/roadmap/implementers-guide/src/runtime/scheduler.md index d9c928c061c3..312ecedcb50f 100644 --- a/roadmap/implementers-guide/src/runtime/scheduler.md +++ b/roadmap/implementers-guide/src/runtime/scheduler.md @@ -1,4 +1,4 @@ -# Scheduler Module +# Scheduler Pallet > TODO: this section is still heavily under construction. key questions about availability cores and validator assignment are still open and the flow of the the section may be contradictory or inconsistent diff --git a/roadmap/implementers-guide/src/runtime/shared.md b/roadmap/implementers-guide/src/runtime/shared.md index 58845e19a0dc..0f173134e2a2 100644 --- a/roadmap/implementers-guide/src/runtime/shared.md +++ b/roadmap/implementers-guide/src/runtime/shared.md @@ -1,4 +1,4 @@ -# Shared Module +# Shared Pallet This module is responsible for managing shared storage and configuration for other modules. diff --git a/runtime/common/src/assigned_slots.rs b/runtime/common/src/assigned_slots.rs index 90771e9da08e..24d34f1a8965 100644 --- a/runtime/common/src/assigned_slots.rs +++ b/runtime/common/src/assigned_slots.rs @@ -899,7 +899,7 @@ mod tests { ParaId::from(1_u32), )); - // Para is a parachain for PermanentSlotLeasePeriodLength * LeasePeriod blocks + // Para is a lease holding parachain for PermanentSlotLeasePeriodLength * LeasePeriod blocks while block < 9 { println!("block #{}", block); @@ -1082,7 +1082,7 @@ mod tests { assert_eq!(AssignedSlots::active_temporary_slot_count(), 1); // Block 1-5 - // Para is a parachain for TemporarySlotLeasePeriodLength * LeasePeriod blocks + // Para is a lease holding parachain for TemporarySlotLeasePeriodLength * LeasePeriod blocks while block < 6 { println!("block #{}", block); println!("lease period #{}", AssignedSlots::current_lease_period_index()); diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 2d92fadeeb9b..f2c294045ad8 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -428,7 +428,7 @@ impl Registrar for Pallet { paras::Pallet::::is_parathread(id) } - // Return if a para is a parachain + // Return if a para is a lease holding parachain fn is_parachain(id: ParaId) -> bool { paras::Pallet::::is_parachain(id) } From e82feb7501948a6f4fe67a283521a7e3bc5b46a5 Mon Sep 17 00:00:00 2001 From: Marcin S Date: Thu, 25 May 2023 16:29:13 -0400 Subject: [PATCH 04/28] PVF: Refactor workers into separate crates, remove host dependency (#7253) * PVF: Refactor workers into separate crates, remove host dependency * Fix compile error * Remove some leftover code * Fix compile errors * Update Cargo.lock * Remove worker main.rs files I accidentally copied these from the other PR. This PR isn't intended to introduce standalone workers yet. * Address review comments * cargo fmt * Update a couple of comments * Update log targets --- Cargo.lock | 68 ++++++++-- Cargo.toml | 8 +- cli/Cargo.toml | 6 +- cli/src/command.rs | 4 +- node/core/pvf/Cargo.toml | 12 +- .../pvf/{worker => }/bin/puppet_worker.rs | 2 +- node/core/pvf/common/Cargo.toml | 26 ++++ node/core/pvf/{worker => common}/build.rs | 0 node/core/pvf/common/src/error.rs | 106 +++++++++++++++ node/core/pvf/common/src/execute.rs | 60 +++++++++ node/core/pvf/common/src/executor_intf.rs | 114 ++++++++++++++++ node/core/pvf/common/src/lib.rs | 57 ++++++++ node/core/pvf/common/src/prepare.rs | 48 +++++++ node/core/pvf/{ => common}/src/pvf.rs | 24 ++-- .../src/common.rs => common/src/worker.rs} | 38 ++++++ .../pvf/{worker => execute-worker}/Cargo.toml | 22 +--- .../src/executor_intf.rs | 122 +----------------- .../execute.rs => execute-worker/src/lib.rs} | 26 ++-- node/core/pvf/prepare-worker/Cargo.toml | 33 +++++ .../pvf/prepare-worker/src/executor_intf.rs | 42 ++++++ .../prepare.rs => prepare-worker/src/lib.rs} | 42 ++++-- .../src/memory_stats.rs | 8 +- node/core/pvf/src/artifacts.rs | 26 ++-- node/core/pvf/src/error.rs | 91 +------------ node/core/pvf/src/execute/mod.rs | 1 - node/core/pvf/src/execute/queue.rs | 2 +- node/core/pvf/src/execute/worker_intf.rs | 52 ++------ node/core/pvf/src/host.rs | 18 ++- node/core/pvf/src/lib.rs | 40 +++--- node/core/pvf/src/metrics.rs | 2 +- node/core/pvf/src/prepare/mod.rs | 33 ----- node/core/pvf/src/prepare/pool.rs | 8 +- node/core/pvf/src/prepare/queue.rs | 26 ++-- node/core/pvf/src/prepare/worker_intf.rs | 15 ++- node/core/pvf/{worker => }/src/testing.rs | 6 +- .../src/{worker_common.rs => worker_intf.rs} | 0 node/core/pvf/{worker => }/tests/it/adder.rs | 0 node/core/pvf/{worker => }/tests/it/main.rs | 0 .../{worker => }/tests/it/worker_common.rs | 0 node/core/pvf/worker/src/lib.rs | 73 ----------- node/malus/Cargo.toml | 3 +- node/malus/src/malus.rs | 4 +- node/test/performance-test/Cargo.toml | 2 +- node/test/performance-test/src/lib.rs | 6 +- .../test-parachains/adder/collator/Cargo.toml | 2 +- .../adder/collator/bin/puppet_worker.rs | 2 +- .../test-parachains/adder/collator/src/lib.rs | 2 +- .../undying/collator/Cargo.toml | 2 +- .../undying/collator/bin/puppet_worker.rs | 2 +- .../undying/collator/src/lib.rs | 2 +- 50 files changed, 773 insertions(+), 515 deletions(-) rename node/core/pvf/{worker => }/bin/puppet_worker.rs (92%) create mode 100644 node/core/pvf/common/Cargo.toml rename node/core/pvf/{worker => common}/build.rs (100%) create mode 100644 node/core/pvf/common/src/error.rs create mode 100644 node/core/pvf/common/src/execute.rs create mode 100644 node/core/pvf/common/src/executor_intf.rs create mode 100644 node/core/pvf/common/src/lib.rs create mode 100644 node/core/pvf/common/src/prepare.rs rename node/core/pvf/{ => common}/src/pvf.rs (81%) rename node/core/pvf/{worker/src/common.rs => common/src/worker.rs} (90%) rename node/core/pvf/{worker => execute-worker}/Cargo.toml (67%) rename node/core/pvf/{worker => execute-worker}/src/executor_intf.rs (65%) rename node/core/pvf/{worker/src/execute.rs => execute-worker/src/lib.rs} (93%) create mode 100644 node/core/pvf/prepare-worker/Cargo.toml create mode 100644 node/core/pvf/prepare-worker/src/executor_intf.rs rename node/core/pvf/{worker/src/prepare.rs => prepare-worker/src/lib.rs} (90%) rename node/core/pvf/{worker => prepare-worker}/src/memory_stats.rs (97%) rename node/core/pvf/{worker => }/src/testing.rs (93%) rename node/core/pvf/src/{worker_common.rs => worker_intf.rs} (100%) rename node/core/pvf/{worker => }/tests/it/adder.rs (100%) rename node/core/pvf/{worker => }/tests/it/main.rs (100%) rename node/core/pvf/{worker => }/tests/it/worker_common.rs (100%) delete mode 100644 node/core/pvf/worker/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 4e37115acc04..54f27915d8a7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6862,7 +6862,7 @@ dependencies = [ "nix 0.26.2", "polkadot-cli", "polkadot-core-primitives", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf-prepare-worker", "polkadot-overseer", "substrate-rpc-client", "tempfile", @@ -6988,7 +6988,8 @@ dependencies = [ "futures", "log", "polkadot-client", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf-execute-worker", + "polkadot-node-core-pvf-prepare-worker", "polkadot-node-metrics", "polkadot-performance-test", "polkadot-service", @@ -7467,6 +7468,9 @@ dependencies = [ "parity-scale-codec", "pin-project", "polkadot-core-primitives", + "polkadot-node-core-pvf-common", + "polkadot-node-core-pvf-execute-worker", + "polkadot-node-core-pvf-prepare-worker", "polkadot-node-metrics", "polkadot-node-primitives", "polkadot-parachain", @@ -7479,6 +7483,8 @@ dependencies = [ "sp-wasm-interface", "substrate-build-script-utils", "tempfile", + "test-parachain-adder", + "test-parachain-halt", "tokio", "tracing-gum", ] @@ -7507,15 +7513,32 @@ dependencies = [ ] [[package]] -name = "polkadot-node-core-pvf-worker" +name = "polkadot-node-core-pvf-common" version = "0.9.41" dependencies = [ - "assert_matches", "cpu-time", "futures", "libc", "parity-scale-codec", - "polkadot-node-core-pvf", + "polkadot-parachain", + "polkadot-primitives", + "sc-executor-common", + "sc-executor-wasmtime", + "sp-core", + "sp-tracing", + "substrate-build-script-utils", + "tokio", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf-execute-worker" +version = "0.9.41" +dependencies = [ + "cpu-time", + "futures", + "parity-scale-codec", + "polkadot-node-core-pvf-common", "polkadot-parachain", "polkadot-primitives", "rayon", @@ -7527,10 +7550,28 @@ dependencies = [ "sp-io", "sp-maybe-compressed-blob", "sp-tracing", - "substrate-build-script-utils", - "tempfile", - "test-parachain-adder", - "test-parachain-halt", + "tikv-jemalloc-ctl", + "tokio", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf-prepare-worker" +version = "0.9.41" +dependencies = [ + "futures", + "libc", + "parity-scale-codec", + "polkadot-node-core-pvf-common", + "polkadot-parachain", + "polkadot-primitives", + "rayon", + "sc-executor", + "sc-executor-common", + "sc-executor-wasmtime", + "sp-io", + "sp-maybe-compressed-blob", + "sp-tracing", "tikv-jemalloc-ctl", "tokio", "tracing-gum", @@ -7786,7 +7827,7 @@ dependencies = [ "kusama-runtime", "log", "polkadot-erasure-coding", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf-prepare-worker", "polkadot-node-primitives", "polkadot-primitives", "quote", @@ -8292,7 +8333,8 @@ dependencies = [ "polkadot-node-core-backing", "polkadot-node-core-candidate-validation", "polkadot-node-core-dispute-coordinator", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf-execute-worker", + "polkadot-node-core-pvf-prepare-worker", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-test-helpers", @@ -12464,7 +12506,7 @@ dependencies = [ "log", "parity-scale-codec", "polkadot-cli", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-parachain", @@ -12512,7 +12554,7 @@ dependencies = [ "log", "parity-scale-codec", "polkadot-cli", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-parachain", diff --git a/Cargo.toml b/Cargo.toml index 02722fd28653..cc3b4e4c1d35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ tikv-jemallocator = "0.5.0" # Crates in our workspace, defined as dependencies so we can pass them feature flags. polkadot-cli = { path = "cli", features = [ "kusama-native", "westend-native", "rococo-native" ] } -polkadot-node-core-pvf-worker = { path = "node/core/pvf/worker" } +polkadot-node-core-pvf-prepare-worker = { path = "node/core/pvf/prepare-worker" } polkadot-overseer = { path = "node/overseer" } [dev-dependencies] @@ -81,7 +81,9 @@ members = [ "node/core/parachains-inherent", "node/core/provisioner", "node/core/pvf", - "node/core/pvf/worker", + "node/core/pvf/common", + "node/core/pvf/execute-worker", + "node/core/pvf/prepare-worker", "node/core/pvf-checker", "node/core/runtime-api", "node/network/approval-distribution", @@ -208,7 +210,7 @@ try-runtime = [ "polkadot-cli/try-runtime" ] fast-runtime = [ "polkadot-cli/fast-runtime" ] runtime-metrics = [ "polkadot-cli/runtime-metrics" ] pyroscope = ["polkadot-cli/pyroscope"] -jemalloc-allocator = ["polkadot-node-core-pvf-worker/jemalloc-allocator", "polkadot-overseer/jemalloc-allocator"] +jemalloc-allocator = ["polkadot-node-core-pvf-prepare-worker/jemalloc-allocator", "polkadot-overseer/jemalloc-allocator"] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 04596d5a6d0b..1fe9fa696cfd 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -23,7 +23,8 @@ pyroscope_pprofrs = { version = "0.2", optional = true } service = { package = "polkadot-service", path = "../node/service", default-features = false, optional = true } polkadot-client = { path = "../node/client", optional = true } -polkadot-node-core-pvf-worker = { path = "../node/core/pvf/worker", optional = true } +polkadot-node-core-pvf-execute-worker = { path = "../node/core/pvf/execute-worker", optional = true } +polkadot-node-core-pvf-prepare-worker = { path = "../node/core/pvf/prepare-worker", optional = true } polkadot-performance-test = { path = "../node/test/performance-test", optional = true } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -54,7 +55,8 @@ cli = [ "frame-benchmarking-cli", "try-runtime-cli", "polkadot-client", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf-execute-worker", + "polkadot-node-core-pvf-prepare-worker", ] runtime-benchmarks = [ "service/runtime-benchmarks", diff --git a/cli/src/command.rs b/cli/src/command.rs index 802ba93941c3..132d8279eb13 100644 --- a/cli/src/command.rs +++ b/cli/src/command.rs @@ -495,7 +495,7 @@ pub fn run() -> Result<()> { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_worker::prepare_worker_entrypoint( + polkadot_node_core_pvf_prepare_worker::worker_entrypoint( &cmd.socket_path, Some(&cmd.node_impl_version), ); @@ -517,7 +517,7 @@ pub fn run() -> Result<()> { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_worker::execute_worker_entrypoint( + polkadot_node_core_pvf_execute_worker::worker_entrypoint( &cmd.socket_path, Some(&cmd.node_impl_version), ); diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 026930758b86..d00c13fda2b0 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -4,6 +4,10 @@ version.workspace = true authors.workspace = true edition.workspace = true +[[bin]] +name = "puppet_worker" +path = "bin/puppet_worker.rs" + [dependencies] always-assert = "0.1" futures = "0.3.21" @@ -13,12 +17,16 @@ libc = "0.2.139" pin-project = "1.0.9" rand = "0.8.5" slotmap = "1.0" +tempfile = "3.3.0" tokio = { version = "1.24.2", features = ["fs", "process"] } parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } polkadot-parachain = { path = "../../../parachain" } polkadot-core-primitives = { path = "../../../core-primitives" } +polkadot-node-core-pvf-common = { path = "common" } +polkadot-node-core-pvf-execute-worker = { path = "execute-worker" } +polkadot-node-core-pvf-prepare-worker = { path = "prepare-worker" } polkadot-node-metrics = { path = "../../metrics" } polkadot-node-primitives = { path = "../../primitives" } polkadot-primitives = { path = "../../../primitives" } @@ -34,4 +42,6 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/substrate" [dev-dependencies] assert_matches = "1.4.0" hex-literal = "0.3.4" -tempfile = "3.3.0" + +adder = { package = "test-parachain-adder", path = "../../../parachain/test-parachains/adder" } +halt = { package = "test-parachain-halt", path = "../../../parachain/test-parachains/halt" } diff --git a/node/core/pvf/worker/bin/puppet_worker.rs b/node/core/pvf/bin/puppet_worker.rs similarity index 92% rename from node/core/pvf/worker/bin/puppet_worker.rs rename to node/core/pvf/bin/puppet_worker.rs index ddd81971292b..7f93519d8454 100644 --- a/node/core/pvf/worker/bin/puppet_worker.rs +++ b/node/core/pvf/bin/puppet_worker.rs @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -polkadot_node_core_pvf_worker::decl_puppet_worker_main!(); +polkadot_node_core_pvf::decl_puppet_worker_main!(); diff --git a/node/core/pvf/common/Cargo.toml b/node/core/pvf/common/Cargo.toml new file mode 100644 index 000000000000..de9fa10804c7 --- /dev/null +++ b/node/core/pvf/common/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "polkadot-node-core-pvf-common" +version.workspace = true +authors.workspace = true +edition.workspace = true + +[dependencies] +cpu-time = "1.0.0" +futures = "0.3.21" +gum = { package = "tracing-gum", path = "../../../gum" } +libc = "0.2.139" +tokio = { version = "1.24.2", features = ["fs", "process", "io-util"] } + +parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } + +polkadot-parachain = { path = "../../../../parachain" } +polkadot-primitives = { path = "../../../../primitives" } + +sc-executor-common = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor-wasmtime = { git = "https://github.com/paritytech/substrate", branch = "master" } + +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[build-dependencies] +substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/pvf/worker/build.rs b/node/core/pvf/common/build.rs similarity index 100% rename from node/core/pvf/worker/build.rs rename to node/core/pvf/common/build.rs diff --git a/node/core/pvf/common/src/error.rs b/node/core/pvf/common/src/error.rs new file mode 100644 index 000000000000..56353c53b4d2 --- /dev/null +++ b/node/core/pvf/common/src/error.rs @@ -0,0 +1,106 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use crate::prepare::PrepareStats; +use parity_scale_codec::{Decode, Encode}; +use std::fmt; + +/// Result of PVF preparation performed by the validation host. Contains stats about the preparation if +/// successful +pub type PrepareResult = Result; + +/// An error that occurred during the prepare part of the PVF pipeline. +#[derive(Debug, Clone, Encode, Decode)] +pub enum PrepareError { + /// During the prevalidation stage of preparation an issue was found with the PVF. + Prevalidation(String), + /// Compilation failed for the given PVF. + Preparation(String), + /// An unexpected panic has occurred in the preparation worker. + Panic(String), + /// Failed to prepare the PVF due to the time limit. + TimedOut, + /// An IO error occurred. This state is reported by either the validation host or by the worker. + IoErr(String), + /// The temporary file for the artifact could not be created at the given cache path. This state is reported by the + /// validation host (not by the worker). + CreateTmpFileErr(String), + /// The response from the worker is received, but the file cannot be renamed (moved) to the final destination + /// location. This state is reported by the validation host (not by the worker). + RenameTmpFileErr(String), +} + +impl PrepareError { + /// Returns whether this is a deterministic error, i.e. one that should trigger reliably. Those + /// errors depend on the PVF itself and the sc-executor/wasmtime logic. + /// + /// Non-deterministic errors can happen spuriously. Typically, they occur due to resource + /// starvation, e.g. under heavy load or memory pressure. Those errors are typically transient + /// but may persist e.g. if the node is run by overwhelmingly underpowered machine. + pub fn is_deterministic(&self) -> bool { + use PrepareError::*; + match self { + Prevalidation(_) | Preparation(_) | Panic(_) => true, + TimedOut | IoErr(_) | CreateTmpFileErr(_) | RenameTmpFileErr(_) => false, + } + } +} + +impl fmt::Display for PrepareError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use PrepareError::*; + match self { + Prevalidation(err) => write!(f, "prevalidation: {}", err), + Preparation(err) => write!(f, "preparation: {}", err), + Panic(err) => write!(f, "panic: {}", err), + TimedOut => write!(f, "prepare: timeout"), + IoErr(err) => write!(f, "prepare: io error while receiving response: {}", err), + CreateTmpFileErr(err) => write!(f, "prepare: error creating tmp file: {}", err), + RenameTmpFileErr(err) => write!(f, "prepare: error renaming tmp file: {}", err), + } + } +} + +/// Some internal error occurred. +/// +/// Should only ever be used for validation errors independent of the candidate and PVF, or for errors we ruled out +/// during pre-checking (so preparation errors are fine). +#[derive(Debug, Clone, Encode, Decode)] +pub enum InternalValidationError { + /// Some communication error occurred with the host. + HostCommunication(String), + /// Could not find or open compiled artifact file. + CouldNotOpenFile(String), + /// An error occurred in the CPU time monitor thread. Should be totally unrelated to validation. + CpuTimeMonitorThread(String), + /// Some non-deterministic preparation error occurred. + NonDeterministicPrepareError(PrepareError), +} + +impl fmt::Display for InternalValidationError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use InternalValidationError::*; + match self { + HostCommunication(err) => + write!(f, "validation: some communication error occurred with the host: {}", err), + CouldNotOpenFile(err) => + write!(f, "validation: could not find or open compiled artifact file: {}", err), + CpuTimeMonitorThread(err) => + write!(f, "validation: an error occurred in the CPU time monitor thread: {}", err), + NonDeterministicPrepareError(err) => write!(f, "validation: prepare: {}", err), + } + } +} diff --git a/node/core/pvf/common/src/execute.rs b/node/core/pvf/common/src/execute.rs new file mode 100644 index 000000000000..de5ce39f7838 --- /dev/null +++ b/node/core/pvf/common/src/execute.rs @@ -0,0 +1,60 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use crate::error::InternalValidationError; +use parity_scale_codec::{Decode, Encode}; +use polkadot_parachain::primitives::ValidationResult; +use polkadot_primitives::ExecutorParams; +use std::time::Duration; + +/// The payload of the one-time handshake that is done when a worker process is created. Carries +/// data from the host to the worker. +#[derive(Encode, Decode)] +pub struct Handshake { + /// The executor parameters. + pub executor_params: ExecutorParams, +} + +/// The response from an execution job on the worker. +#[derive(Encode, Decode)] +pub enum Response { + /// The job completed successfully. + Ok { + /// The result of parachain validation. + result_descriptor: ValidationResult, + /// The amount of CPU time taken by the job. + duration: Duration, + }, + /// The candidate is invalid. + InvalidCandidate(String), + /// The job timed out. + TimedOut, + /// An unexpected panic has occurred in the execution worker. + Panic(String), + /// Some internal error occurred. + InternalError(InternalValidationError), +} + +impl Response { + /// Creates an invalid response from a context `ctx` and a message `msg` (which can be empty). + pub fn format_invalid(ctx: &'static str, msg: &str) -> Self { + if msg.is_empty() { + Self::InvalidCandidate(ctx.to_string()) + } else { + Self::InvalidCandidate(format!("{}: {}", ctx, msg)) + } + } +} diff --git a/node/core/pvf/common/src/executor_intf.rs b/node/core/pvf/common/src/executor_intf.rs new file mode 100644 index 000000000000..5926f3c5dbc7 --- /dev/null +++ b/node/core/pvf/common/src/executor_intf.rs @@ -0,0 +1,114 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Interface to the Substrate Executor + +use polkadot_primitives::{ExecutorParam, ExecutorParams}; +use sc_executor_common::wasm_runtime::HeapAllocStrategy; +use sc_executor_wasmtime::{Config, DeterministicStackLimit, Semantics}; + +// Memory configuration +// +// When Substrate Runtime is instantiated, a number of WASM pages are allocated for the Substrate +// Runtime instance's linear memory. The exact number of pages is a sum of whatever the WASM blob +// itself requests (by default at least enough to hold the data section as well as have some space +// left for the stack; this is, of course, overridable at link time when compiling the runtime) +// plus the number of pages specified in the `extra_heap_pages` passed to the executor. +// +// By default, rustc (or `lld` specifically) should allocate 1 MiB for the shadow stack, or 16 pages. +// The data section for runtimes are typically rather small and can fit in a single digit number of +// WASM pages, so let's say an extra 16 pages. Thus let's assume that 32 pages or 2 MiB are used for +// these needs by default. +const DEFAULT_HEAP_PAGES_ESTIMATE: u32 = 32; +const EXTRA_HEAP_PAGES: u32 = 2048; + +/// The number of bytes devoted for the stack during wasm execution of a PVF. +pub const NATIVE_STACK_MAX: u32 = 256 * 1024 * 1024; + +// VALUES OF THE DEFAULT CONFIGURATION SHOULD NEVER BE CHANGED +// They are used as base values for the execution environment parametrization. +// To overwrite them, add new ones to `EXECUTOR_PARAMS` in the `session_info` pallet and perform +// a runtime upgrade to make them active. +pub const DEFAULT_CONFIG: Config = Config { + allow_missing_func_imports: true, + cache_path: None, + semantics: Semantics { + heap_alloc_strategy: sc_executor_common::wasm_runtime::HeapAllocStrategy::Dynamic { + maximum_pages: Some(DEFAULT_HEAP_PAGES_ESTIMATE + EXTRA_HEAP_PAGES), + }, + + instantiation_strategy: + sc_executor_wasmtime::InstantiationStrategy::RecreateInstanceCopyOnWrite, + + // Enable deterministic stack limit to pin down the exact number of items the wasmtime stack + // can contain before it traps with stack overflow. + // + // Here is how the values below were chosen. + // + // At the moment of writing, the default native stack size limit is 1 MiB. Assuming a logical item + // (see the docs about the field and the instrumentation algorithm) is 8 bytes, 1 MiB can + // fit 2x 65536 logical items. + // + // Since reaching the native stack limit is undesirable, we halve the logical item limit and + // also increase the native 256x. This hopefully should preclude wasm code from reaching + // the stack limit set by the wasmtime. + deterministic_stack_limit: Some(DeterministicStackLimit { + logical_max: 65536, + native_stack_max: NATIVE_STACK_MAX, + }), + canonicalize_nans: true, + // Rationale for turning the multi-threaded compilation off is to make the preparation time + // easily reproducible and as deterministic as possible. + // + // Currently the prepare queue doesn't distinguish between precheck and prepare requests. + // On the one hand, it simplifies the code, on the other, however, slows down compile times + // for execute requests. This behavior may change in future. + parallel_compilation: false, + + // WASM extensions. Only those that are meaningful to us may be controlled here. By default, + // we're using WASM MVP, which means all the extensions are disabled. Nevertheless, some + // extensions (e.g., sign extension ops) are enabled by Wasmtime and cannot be disabled. + wasm_reference_types: false, + wasm_simd: false, + wasm_bulk_memory: false, + wasm_multi_value: false, + }, +}; + +pub fn params_to_wasmtime_semantics(par: &ExecutorParams) -> Result { + let mut sem = DEFAULT_CONFIG.semantics.clone(); + let mut stack_limit = if let Some(stack_limit) = sem.deterministic_stack_limit.clone() { + stack_limit + } else { + return Err("No default stack limit set".to_owned()) + }; + + for p in par.iter() { + match p { + ExecutorParam::MaxMemoryPages(max_pages) => + sem.heap_alloc_strategy = + HeapAllocStrategy::Dynamic { maximum_pages: Some(*max_pages) }, + ExecutorParam::StackLogicalMax(slm) => stack_limit.logical_max = *slm, + ExecutorParam::StackNativeMax(snm) => stack_limit.native_stack_max = *snm, + ExecutorParam::WasmExtBulkMemory => sem.wasm_bulk_memory = true, + // TODO: Not implemented yet; . + ExecutorParam::PrecheckingMaxMemory(_) => (), + ExecutorParam::PvfPrepTimeout(_, _) | ExecutorParam::PvfExecTimeout(_, _) => (), // Not used here + } + } + sem.deterministic_stack_limit = Some(stack_limit); + Ok(sem) +} diff --git a/node/core/pvf/common/src/lib.rs b/node/core/pvf/common/src/lib.rs new file mode 100644 index 000000000000..028fd9b17947 --- /dev/null +++ b/node/core/pvf/common/src/lib.rs @@ -0,0 +1,57 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Functionality that is shared by the host and the workers. + +pub mod error; +pub mod execute; +pub mod executor_intf; +pub mod prepare; +pub mod pvf; +pub mod worker; + +pub use cpu_time::ProcessTime; + +const LOG_TARGET: &str = "parachain::pvf-common"; + +use std::mem; +use tokio::io::{self, AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; + +#[doc(hidden)] +pub mod tests { + use std::time::Duration; + + pub const TEST_EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); + pub const TEST_PREPARATION_TIMEOUT: Duration = Duration::from_secs(30); +} + +/// Write some data prefixed by its length into `w`. +pub async fn framed_send(w: &mut (impl AsyncWrite + Unpin), buf: &[u8]) -> io::Result<()> { + let len_buf = buf.len().to_le_bytes(); + w.write_all(&len_buf).await?; + w.write_all(buf).await?; + Ok(()) +} + +/// Read some data prefixed by its length from `r`. +pub async fn framed_recv(r: &mut (impl AsyncRead + Unpin)) -> io::Result> { + let mut len_buf = [0u8; mem::size_of::()]; + r.read_exact(&mut len_buf).await?; + let len = usize::from_le_bytes(len_buf); + let mut buf = vec![0; len]; + r.read_exact(&mut buf).await?; + Ok(buf) +} diff --git a/node/core/pvf/common/src/prepare.rs b/node/core/pvf/common/src/prepare.rs new file mode 100644 index 000000000000..ac64e2927a16 --- /dev/null +++ b/node/core/pvf/common/src/prepare.rs @@ -0,0 +1,48 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use parity_scale_codec::{Decode, Encode}; + +/// Preparation statistics, including the CPU time and memory taken. +#[derive(Debug, Clone, Default, Encode, Decode)] +pub struct PrepareStats { + /// The CPU time that elapsed for the preparation job. + pub cpu_time_elapsed: std::time::Duration, + /// The observed memory statistics for the preparation job. + pub memory_stats: MemoryStats, +} + +/// Helper struct to contain all the memory stats, including `MemoryAllocationStats` and, if +/// supported by the OS, `ru_maxrss`. +#[derive(Clone, Debug, Default, Encode, Decode)] +pub struct MemoryStats { + /// Memory stats from `tikv_jemalloc_ctl`. + #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] + pub memory_tracker_stats: Option, + /// `ru_maxrss` from `getrusage`. `None` if an error occurred. + #[cfg(target_os = "linux")] + pub max_rss: Option, +} + +/// Statistics of collected memory metrics. +#[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] +#[derive(Clone, Debug, Default, Encode, Decode)] +pub struct MemoryAllocationStats { + /// Total resident memory, in bytes. + pub resident: u64, + /// Total allocated memory, in bytes. + pub allocated: u64, +} diff --git a/node/core/pvf/src/pvf.rs b/node/core/pvf/common/src/pvf.rs similarity index 81% rename from node/core/pvf/src/pvf.rs rename to node/core/pvf/common/src/pvf.rs index c134cacb4acf..1661f324083a 100644 --- a/node/core/pvf/src/pvf.rs +++ b/node/core/pvf/common/src/pvf.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use crate::artifacts::ArtifactId; use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::ValidationCodeHash; use polkadot_primitives::ExecutorParams; @@ -26,9 +25,6 @@ use std::{ time::Duration, }; -#[cfg(test)] -use crate::host::tests::TEST_PREPARATION_TIMEOUT; - /// A struct that carries the exhaustive set of data to prepare an artifact out of plain /// Wasm binary /// @@ -58,13 +54,8 @@ impl PvfPrepData { Self { code, code_hash, executor_params, prep_timeout } } - /// Returns artifact ID that corresponds to the PVF with given executor params - pub(crate) fn as_artifact_id(&self) -> ArtifactId { - ArtifactId::new(self.code_hash, self.executor_params.hash()) - } - /// Returns validation code hash for the PVF - pub(crate) fn code_hash(&self) -> ValidationCodeHash { + pub fn code_hash(&self) -> ValidationCodeHash { self.code_hash } @@ -83,16 +74,17 @@ impl PvfPrepData { self.prep_timeout } - /// Creates a structure for tests - #[cfg(test)] - pub(crate) fn from_discriminator_and_timeout(num: u32, timeout: Duration) -> Self { + /// Creates a structure for tests. + #[doc(hidden)] + pub fn from_discriminator_and_timeout(num: u32, timeout: Duration) -> Self { let descriminator_buf = num.to_le_bytes().to_vec(); Self::from_code(descriminator_buf, ExecutorParams::default(), timeout) } - #[cfg(test)] - pub(crate) fn from_discriminator(num: u32) -> Self { - Self::from_discriminator_and_timeout(num, TEST_PREPARATION_TIMEOUT) + /// Creates a structure for tests. + #[doc(hidden)] + pub fn from_discriminator(num: u32) -> Self { + Self::from_discriminator_and_timeout(num, crate::tests::TEST_PREPARATION_TIMEOUT) } } diff --git a/node/core/pvf/worker/src/common.rs b/node/core/pvf/common/src/worker.rs similarity index 90% rename from node/core/pvf/worker/src/common.rs rename to node/core/pvf/common/src/worker.rs index 00289737a5c8..debe18985b37 100644 --- a/node/core/pvf/worker/src/common.rs +++ b/node/core/pvf/common/src/worker.rs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +//! Functionality common to both prepare and execute workers. + use crate::LOG_TARGET; use cpu_time::ProcessTime; use futures::never::Never; @@ -25,6 +27,42 @@ use std::{ }; use tokio::{io, net::UnixStream, runtime::Runtime}; +/// Use this macro to declare a `fn main() {}` that will create an executable that can be used for +/// spawning the desired worker. +#[macro_export] +macro_rules! decl_worker_main { + ($expected_command:expr, $entrypoint:expr) => { + fn main() { + ::sp_tracing::try_init_simple(); + + let args = std::env::args().collect::>(); + if args.len() < 3 { + panic!("wrong number of arguments"); + } + + let mut version = None; + let mut socket_path: &str = ""; + + for i in 2..args.len() { + match args[i].as_ref() { + "--socket-path" => socket_path = args[i + 1].as_str(), + "--node-version" => version = Some(args[i + 1].as_str()), + _ => (), + } + } + + let subcommand = &args[1]; + if subcommand != $expected_command { + panic!( + "trying to run {} binary with the {} subcommand", + $expected_command, subcommand + ) + } + $entrypoint(&socket_path, version); + } + }; +} + /// Some allowed overhead that we account for in the "CPU time monitor" thread's sleeps, on the /// child process. pub const JOB_TIMEOUT_OVERHEAD: Duration = Duration::from_millis(50); diff --git a/node/core/pvf/worker/Cargo.toml b/node/core/pvf/execute-worker/Cargo.toml similarity index 67% rename from node/core/pvf/worker/Cargo.toml rename to node/core/pvf/execute-worker/Cargo.toml index 53d548dbac6f..c360cee8bf5d 100644 --- a/node/core/pvf/worker/Cargo.toml +++ b/node/core/pvf/execute-worker/Cargo.toml @@ -1,27 +1,20 @@ [package] -name = "polkadot-node-core-pvf-worker" +name = "polkadot-node-core-pvf-execute-worker" version.workspace = true authors.workspace = true edition.workspace = true -[[bin]] -name = "puppet_worker" -path = "bin/puppet_worker.rs" - [dependencies] -assert_matches = "1.4.0" cpu-time = "1.0.0" futures = "0.3.21" gum = { package = "tracing-gum", path = "../../../gum" } -libc = "0.2.139" rayon = "1.5.1" -tempfile = "3.3.0" tikv-jemalloc-ctl = { version = "0.5.0", optional = true } -tokio = "1.24.2" +tokio = { version = "1.24.2", features = ["fs", "process"] } parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } -polkadot-node-core-pvf = { path = ".." } +polkadot-node-core-pvf-common = { path = "../common" } polkadot-parachain = { path = "../../../../parachain" } polkadot-primitives = { path = "../../../../primitives" } @@ -37,12 +30,5 @@ sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master [target.'cfg(target_os = "linux")'.dependencies] tikv-jemalloc-ctl = "0.5.0" -[build-dependencies] -substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -adder = { package = "test-parachain-adder", path = "../../../../parachain/test-parachains/adder" } -halt = { package = "test-parachain-halt", path = "../../../../parachain/test-parachains/halt" } - [features] -jemalloc-allocator = ["dep:tikv-jemalloc-ctl"] +builder = [] diff --git a/node/core/pvf/worker/src/executor_intf.rs b/node/core/pvf/execute-worker/src/executor_intf.rs similarity index 65% rename from node/core/pvf/worker/src/executor_intf.rs rename to node/core/pvf/execute-worker/src/executor_intf.rs index ff286dd74d64..98424a3dcd1d 100644 --- a/node/core/pvf/worker/src/executor_intf.rs +++ b/node/core/pvf/execute-worker/src/executor_intf.rs @@ -16,13 +16,16 @@ //! Interface to the Substrate Executor -use polkadot_primitives::{ExecutorParam, ExecutorParams}; +use polkadot_node_core_pvf_common::executor_intf::{ + params_to_wasmtime_semantics, DEFAULT_CONFIG, NATIVE_STACK_MAX, +}; +use polkadot_primitives::ExecutorParams; use sc_executor_common::{ error::WasmError, runtime_blob::RuntimeBlob, - wasm_runtime::{HeapAllocStrategy, InvokeMethod, WasmModule as _}, + wasm_runtime::{InvokeMethod, WasmModule as _}, }; -use sc_executor_wasmtime::{Config, DeterministicStackLimit, Semantics, WasmtimeRuntime}; +use sc_executor_wasmtime::{Config, WasmtimeRuntime}; use sp_core::storage::{ChildInfo, TrackedStorageKey}; use sp_externalities::MultiRemovalResults; use std::any::{Any, TypeId}; @@ -63,119 +66,6 @@ use std::any::{Any, TypeId}; /// The stack size for the execute thread. pub const EXECUTE_THREAD_STACK_SIZE: usize = 2 * 1024 * 1024 + NATIVE_STACK_MAX as usize; -// Memory configuration -// -// When Substrate Runtime is instantiated, a number of WASM pages are allocated for the Substrate -// Runtime instance's linear memory. The exact number of pages is a sum of whatever the WASM blob -// itself requests (by default at least enough to hold the data section as well as have some space -// left for the stack; this is, of course, overridable at link time when compiling the runtime) -// plus the number of pages specified in the `extra_heap_pages` passed to the executor. -// -// By default, rustc (or `lld` specifically) should allocate 1 MiB for the shadow stack, or 16 pages. -// The data section for runtimes are typically rather small and can fit in a single digit number of -// WASM pages, so let's say an extra 16 pages. Thus let's assume that 32 pages or 2 MiB are used for -// these needs by default. -const DEFAULT_HEAP_PAGES_ESTIMATE: u32 = 32; -const EXTRA_HEAP_PAGES: u32 = 2048; - -/// The number of bytes devoted for the stack during wasm execution of a PVF. -const NATIVE_STACK_MAX: u32 = 256 * 1024 * 1024; - -// VALUES OF THE DEFAULT CONFIGURATION SHOULD NEVER BE CHANGED -// They are used as base values for the execution environment parametrization. -// To overwrite them, add new ones to `EXECUTOR_PARAMS` in the `session_info` pallet and perform -// a runtime upgrade to make them active. -const DEFAULT_CONFIG: Config = Config { - allow_missing_func_imports: true, - cache_path: None, - semantics: Semantics { - heap_alloc_strategy: sc_executor_common::wasm_runtime::HeapAllocStrategy::Dynamic { - maximum_pages: Some(DEFAULT_HEAP_PAGES_ESTIMATE + EXTRA_HEAP_PAGES), - }, - - instantiation_strategy: - sc_executor_wasmtime::InstantiationStrategy::RecreateInstanceCopyOnWrite, - - // Enable deterministic stack limit to pin down the exact number of items the wasmtime stack - // can contain before it traps with stack overflow. - // - // Here is how the values below were chosen. - // - // At the moment of writing, the default native stack size limit is 1 MiB. Assuming a logical item - // (see the docs about the field and the instrumentation algorithm) is 8 bytes, 1 MiB can - // fit 2x 65536 logical items. - // - // Since reaching the native stack limit is undesirable, we halve the logical item limit and - // also increase the native 256x. This hopefully should preclude wasm code from reaching - // the stack limit set by the wasmtime. - deterministic_stack_limit: Some(DeterministicStackLimit { - logical_max: 65536, - native_stack_max: NATIVE_STACK_MAX, - }), - canonicalize_nans: true, - // Rationale for turning the multi-threaded compilation off is to make the preparation time - // easily reproducible and as deterministic as possible. - // - // Currently the prepare queue doesn't distinguish between precheck and prepare requests. - // On the one hand, it simplifies the code, on the other, however, slows down compile times - // for execute requests. This behavior may change in future. - parallel_compilation: false, - - // WASM extensions. Only those that are meaningful to us may be controlled here. By default, - // we're using WASM MVP, which means all the extensions are disabled. Nevertheless, some - // extensions (e.g., sign extension ops) are enabled by Wasmtime and cannot be disabled. - wasm_reference_types: false, - wasm_simd: false, - wasm_bulk_memory: false, - wasm_multi_value: false, - }, -}; - -/// Runs the prevalidation on the given code. Returns a [`RuntimeBlob`] if it succeeds. -pub fn prevalidate(code: &[u8]) -> Result { - let blob = RuntimeBlob::new(code)?; - // It's assumed this function will take care of any prevalidation logic - // that needs to be done. - // - // Do nothing for now. - Ok(blob) -} - -/// Runs preparation on the given runtime blob. If successful, it returns a serialized compiled -/// artifact which can then be used to pass into `Executor::execute` after writing it to the disk. -pub fn prepare( - blob: RuntimeBlob, - executor_params: &ExecutorParams, -) -> Result, sc_executor_common::error::WasmError> { - let semantics = params_to_wasmtime_semantics(executor_params) - .map_err(|e| sc_executor_common::error::WasmError::Other(e))?; - sc_executor_wasmtime::prepare_runtime_artifact(blob, &semantics) -} - -fn params_to_wasmtime_semantics(par: &ExecutorParams) -> Result { - let mut sem = DEFAULT_CONFIG.semantics.clone(); - let mut stack_limit = if let Some(stack_limit) = sem.deterministic_stack_limit.clone() { - stack_limit - } else { - return Err("No default stack limit set".to_owned()) - }; - - for p in par.iter() { - match p { - ExecutorParam::MaxMemoryPages(max_pages) => - sem.heap_alloc_strategy = - HeapAllocStrategy::Dynamic { maximum_pages: Some(*max_pages) }, - ExecutorParam::StackLogicalMax(slm) => stack_limit.logical_max = *slm, - ExecutorParam::StackNativeMax(snm) => stack_limit.native_stack_max = *snm, - ExecutorParam::WasmExtBulkMemory => sem.wasm_bulk_memory = true, - ExecutorParam::PrecheckingMaxMemory(_) => (), // TODO: Not implemented yet - ExecutorParam::PvfPrepTimeout(_, _) | ExecutorParam::PvfExecTimeout(_, _) => (), // Not used here - } - } - sem.deterministic_stack_limit = Some(stack_limit); - Ok(sem) -} - #[derive(Clone)] pub struct Executor { config: Config, diff --git a/node/core/pvf/worker/src/execute.rs b/node/core/pvf/execute-worker/src/lib.rs similarity index 93% rename from node/core/pvf/worker/src/execute.rs rename to node/core/pvf/execute-worker/src/lib.rs index c5b8ddc9dd18..0ac39aafb0c9 100644 --- a/node/core/pvf/worker/src/execute.rs +++ b/node/core/pvf/execute-worker/src/lib.rs @@ -14,20 +14,26 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use crate::{ - common::{ +mod executor_intf; + +pub use executor_intf::Executor; + +// NOTE: Initializing logging in e.g. tests will not have an effect in the workers, as they are +// separate spawned processes. Run with e.g. `RUST_LOG=parachain::pvf-execute-worker=trace`. +const LOG_TARGET: &str = "parachain::pvf-execute-worker"; + +use crate::executor_intf::EXECUTE_THREAD_STACK_SIZE; +use cpu_time::ProcessTime; +use parity_scale_codec::{Decode, Encode}; +use polkadot_node_core_pvf_common::{ + error::InternalValidationError, + execute::{Handshake, Response}, + framed_recv, framed_send, + worker::{ bytes_to_path, cpu_time_monitor_loop, stringify_panic_payload, thread::{self, WaitOutcome}, worker_event_loop, }, - executor_intf::{Executor, EXECUTE_THREAD_STACK_SIZE}, - LOG_TARGET, -}; -use cpu_time::ProcessTime; -use parity_scale_codec::{Decode, Encode}; -use polkadot_node_core_pvf::{ - framed_recv, framed_send, ExecuteHandshake as Handshake, ExecuteResponse as Response, - InternalValidationError, }; use polkadot_parachain::primitives::ValidationResult; use std::{ diff --git a/node/core/pvf/prepare-worker/Cargo.toml b/node/core/pvf/prepare-worker/Cargo.toml new file mode 100644 index 000000000000..07386de35962 --- /dev/null +++ b/node/core/pvf/prepare-worker/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "polkadot-node-core-pvf-prepare-worker" +version.workspace = true +authors.workspace = true +edition.workspace = true + +[dependencies] +futures = "0.3.21" +gum = { package = "tracing-gum", path = "../../../gum" } +libc = "0.2.139" +rayon = "1.5.1" +tikv-jemalloc-ctl = { version = "0.5.0", optional = true } +tokio = { version = "1.24.2", features = ["fs", "process"] } + +parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } + +polkadot-node-core-pvf-common = { path = "../common" } +polkadot-parachain = { path = "../../../../parachain" } +polkadot-primitives = { path = "../../../../primitives" } + +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor-common = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor-wasmtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-maybe-compressed-blob = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[target.'cfg(target_os = "linux")'.dependencies] +tikv-jemalloc-ctl = "0.5.0" + +[features] +builder = [] +jemalloc-allocator = ["dep:tikv-jemalloc-ctl"] diff --git a/node/core/pvf/prepare-worker/src/executor_intf.rs b/node/core/pvf/prepare-worker/src/executor_intf.rs new file mode 100644 index 000000000000..1f88f6a6dd6e --- /dev/null +++ b/node/core/pvf/prepare-worker/src/executor_intf.rs @@ -0,0 +1,42 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Interface to the Substrate Executor + +use polkadot_node_core_pvf_common::executor_intf::params_to_wasmtime_semantics; +use polkadot_primitives::ExecutorParams; +use sc_executor_common::runtime_blob::RuntimeBlob; + +/// Runs the prevalidation on the given code. Returns a [`RuntimeBlob`] if it succeeds. +pub fn prevalidate(code: &[u8]) -> Result { + let blob = RuntimeBlob::new(code)?; + // It's assumed this function will take care of any prevalidation logic + // that needs to be done. + // + // Do nothing for now. + Ok(blob) +} + +/// Runs preparation on the given runtime blob. If successful, it returns a serialized compiled +/// artifact which can then be used to pass into `Executor::execute` after writing it to the disk. +pub fn prepare( + blob: RuntimeBlob, + executor_params: &ExecutorParams, +) -> Result, sc_executor_common::error::WasmError> { + let semantics = params_to_wasmtime_semantics(executor_params) + .map_err(|e| sc_executor_common::error::WasmError::Other(e))?; + sc_executor_wasmtime::prepare_runtime_artifact(blob, &semantics) +} diff --git a/node/core/pvf/worker/src/prepare.rs b/node/core/pvf/prepare-worker/src/lib.rs similarity index 90% rename from node/core/pvf/worker/src/prepare.rs rename to node/core/pvf/prepare-worker/src/lib.rs index fe9c1a85545a..8f36ef397cfb 100644 --- a/node/core/pvf/worker/src/prepare.rs +++ b/node/core/pvf/prepare-worker/src/lib.rs @@ -14,23 +14,31 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +mod executor_intf; +mod memory_stats; + +pub use executor_intf::{prepare, prevalidate}; + +// NOTE: Initializing logging in e.g. tests will not have an effect in the workers, as they are +// separate spawned processes. Run with e.g. `RUST_LOG=parachain::pvf-prepare-worker=trace`. +const LOG_TARGET: &str = "parachain::pvf-prepare-worker"; + #[cfg(target_os = "linux")] use crate::memory_stats::max_rss_stat::{extract_max_rss_stat, get_max_rss_thread}; #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] use crate::memory_stats::memory_tracker::{get_memory_tracker_loop_stats, memory_tracker_loop}; -use crate::{ - common::{ +use parity_scale_codec::{Decode, Encode}; +use polkadot_node_core_pvf_common::{ + error::{PrepareError, PrepareResult}, + framed_recv, framed_send, + prepare::{MemoryStats, PrepareStats}, + pvf::PvfPrepData, + worker::{ bytes_to_path, cpu_time_monitor_loop, stringify_panic_payload, thread::{self, WaitOutcome}, worker_event_loop, }, - prepare, prevalidate, LOG_TARGET, -}; -use cpu_time::ProcessTime; -use parity_scale_codec::{Decode, Encode}; -use polkadot_node_core_pvf::{ - framed_recv, framed_send, CompiledArtifact, MemoryStats, PrepareError, PrepareResult, - PrepareStats, PvfPrepData, + ProcessTime, }; use std::{ path::PathBuf, @@ -39,6 +47,22 @@ use std::{ }; use tokio::{io, net::UnixStream}; +/// Contains the bytes for a successfully compiled artifact. +pub struct CompiledArtifact(Vec); + +impl CompiledArtifact { + /// Creates a `CompiledArtifact`. + pub fn new(code: Vec) -> Self { + Self(code) + } +} + +impl AsRef<[u8]> for CompiledArtifact { + fn as_ref(&self) -> &[u8] { + self.0.as_slice() + } +} + async fn recv_request(stream: &mut UnixStream) -> io::Result<(PvfPrepData, PathBuf)> { let pvf = framed_recv(stream).await?; let pvf = PvfPrepData::decode(&mut &pvf[..]).map_err(|e| { diff --git a/node/core/pvf/worker/src/memory_stats.rs b/node/core/pvf/prepare-worker/src/memory_stats.rs similarity index 97% rename from node/core/pvf/worker/src/memory_stats.rs rename to node/core/pvf/prepare-worker/src/memory_stats.rs index 907f793d87af..e6dc8572c4a3 100644 --- a/node/core/pvf/worker/src/memory_stats.rs +++ b/node/core/pvf/prepare-worker/src/memory_stats.rs @@ -33,11 +33,11 @@ /// NOTE: Requires jemalloc enabled. #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] pub mod memory_tracker { - use crate::{ - common::{stringify_panic_payload, thread}, - LOG_TARGET, + use crate::LOG_TARGET; + use polkadot_node_core_pvf_common::{ + prepare::MemoryAllocationStats, + worker::{stringify_panic_payload, thread}, }; - use polkadot_node_core_pvf::MemoryAllocationStats; use std::{thread::JoinHandle, time::Duration}; use tikv_jemalloc_ctl::{epoch, stats, Error}; diff --git a/node/core/pvf/src/artifacts.rs b/node/core/pvf/src/artifacts.rs index d5a660cc3aa5..78d2f88941b8 100644 --- a/node/core/pvf/src/artifacts.rs +++ b/node/core/pvf/src/artifacts.rs @@ -55,8 +55,9 @@ //! older by a predefined parameter. This process is run very rarely (say, once a day). Once the //! artifact is expired it is removed from disk eagerly atomically. -use crate::{error::PrepareError, host::PrepareResultSender, prepare::PrepareStats}; +use crate::host::PrepareResultSender; use always_assert::always; +use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats, pvf::PvfPrepData}; use polkadot_parachain::primitives::ValidationCodeHash; use polkadot_primitives::ExecutorParamsHash; use std::{ @@ -65,22 +66,6 @@ use std::{ time::{Duration, SystemTime}, }; -/// Contains the bytes for a successfully compiled artifact. -pub struct CompiledArtifact(Vec); - -impl CompiledArtifact { - /// Creates a `CompiledArtifact`. - pub fn new(code: Vec) -> Self { - Self(code) - } -} - -impl AsRef<[u8]> for CompiledArtifact { - fn as_ref(&self) -> &[u8] { - self.0.as_slice() - } -} - /// Identifier of an artifact. Encodes a code hash of the PVF and a hash of executor parameter set. #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct ArtifactId { @@ -96,6 +81,11 @@ impl ArtifactId { Self { code_hash, executor_params_hash } } + /// Returns an artifact ID that corresponds to the PVF with given executor params. + pub fn from_pvf_prep_data(pvf: &PvfPrepData) -> Self { + Self::new(pvf.code_hash(), pvf.executor_params().hash()) + } + /// Tries to recover the artifact id from the given file name. #[cfg(test)] pub fn from_file_name(file_name: &str) -> Option { @@ -304,7 +294,7 @@ mod tests { #[tokio::test] async fn artifacts_removes_cache_on_startup() { - let fake_cache_path = crate::worker_common::tmpfile("test-cache").await.unwrap(); + let fake_cache_path = crate::worker_intf::tmpfile("test-cache").await.unwrap(); let fake_artifact_path = { let mut p = fake_cache_path.clone(); p.push("wasmtime_0x1234567890123456789012345678901234567890123456789012345678901234"); diff --git a/node/core/pvf/src/error.rs b/node/core/pvf/src/error.rs index 33f3f00810f2..7372cd233c49 100644 --- a/node/core/pvf/src/error.rs +++ b/node/core/pvf/src/error.rs @@ -14,65 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use crate::prepare::PrepareStats; -use parity_scale_codec::{Decode, Encode}; -use std::fmt; - -/// Result of PVF preparation performed by the validation host. Contains stats about the preparation if -/// successful -pub type PrepareResult = Result; - -/// An error that occurred during the prepare part of the PVF pipeline. -#[derive(Debug, Clone, Encode, Decode)] -pub enum PrepareError { - /// During the prevalidation stage of preparation an issue was found with the PVF. - Prevalidation(String), - /// Compilation failed for the given PVF. - Preparation(String), - /// An unexpected panic has occurred in the preparation worker. - Panic(String), - /// Failed to prepare the PVF due to the time limit. - TimedOut, - /// An IO error occurred. This state is reported by either the validation host or by the worker. - IoErr(String), - /// The temporary file for the artifact could not be created at the given cache path. This state is reported by the - /// validation host (not by the worker). - CreateTmpFileErr(String), - /// The response from the worker is received, but the file cannot be renamed (moved) to the final destination - /// location. This state is reported by the validation host (not by the worker). - RenameTmpFileErr(String), -} - -impl PrepareError { - /// Returns whether this is a deterministic error, i.e. one that should trigger reliably. Those - /// errors depend on the PVF itself and the sc-executor/wasmtime logic. - /// - /// Non-deterministic errors can happen spuriously. Typically, they occur due to resource - /// starvation, e.g. under heavy load or memory pressure. Those errors are typically transient - /// but may persist e.g. if the node is run by overwhelmingly underpowered machine. - pub fn is_deterministic(&self) -> bool { - use PrepareError::*; - match self { - Prevalidation(_) | Preparation(_) | Panic(_) => true, - TimedOut | IoErr(_) | CreateTmpFileErr(_) | RenameTmpFileErr(_) => false, - } - } -} - -impl fmt::Display for PrepareError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - use PrepareError::*; - match self { - Prevalidation(err) => write!(f, "prevalidation: {}", err), - Preparation(err) => write!(f, "preparation: {}", err), - Panic(err) => write!(f, "panic: {}", err), - TimedOut => write!(f, "prepare: timeout"), - IoErr(err) => write!(f, "prepare: io error while receiving response: {}", err), - CreateTmpFileErr(err) => write!(f, "prepare: error creating tmp file: {}", err), - RenameTmpFileErr(err) => write!(f, "prepare: error renaming tmp file: {}", err), - } - } -} +use polkadot_node_core_pvf_common::error::{InternalValidationError, PrepareError}; /// A error raised during validation of the candidate. #[derive(Debug, Clone)] @@ -122,37 +64,6 @@ pub enum InvalidCandidate { Panic(String), } -/// Some internal error occurred. -/// -/// Should only ever be used for validation errors independent of the candidate and PVF, or for errors we ruled out -/// during pre-checking (so preparation errors are fine). -#[derive(Debug, Clone, Encode, Decode)] -pub enum InternalValidationError { - /// Some communication error occurred with the host. - HostCommunication(String), - /// Could not find or open compiled artifact file. - CouldNotOpenFile(String), - /// An error occurred in the CPU time monitor thread. Should be totally unrelated to validation. - CpuTimeMonitorThread(String), - /// Some non-deterministic preparation error occurred. - NonDeterministicPrepareError(PrepareError), -} - -impl fmt::Display for InternalValidationError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - use InternalValidationError::*; - match self { - HostCommunication(err) => - write!(f, "validation: some communication error occurred with the host: {}", err), - CouldNotOpenFile(err) => - write!(f, "validation: could not find or open compiled artifact file: {}", err), - CpuTimeMonitorThread(err) => - write!(f, "validation: an error occurred in the CPU time monitor thread: {}", err), - NonDeterministicPrepareError(err) => write!(f, "validation: prepare: {}", err), - } - } -} - impl From for ValidationError { fn from(error: InternalValidationError) -> Self { Self::InternalError(error) diff --git a/node/core/pvf/src/execute/mod.rs b/node/core/pvf/src/execute/mod.rs index 8e3b17d71569..669b9dc04d7c 100644 --- a/node/core/pvf/src/execute/mod.rs +++ b/node/core/pvf/src/execute/mod.rs @@ -24,4 +24,3 @@ mod queue; mod worker_intf; pub use queue::{start, PendingExecutionRequest, ToQueue}; -pub use worker_intf::{Handshake as ExecuteHandshake, Response as ExecuteResponse}; diff --git a/node/core/pvf/src/execute/queue.rs b/node/core/pvf/src/execute/queue.rs index 61cebc5e2c46..395697616b36 100644 --- a/node/core/pvf/src/execute/queue.rs +++ b/node/core/pvf/src/execute/queue.rs @@ -21,7 +21,7 @@ use crate::{ artifacts::{ArtifactId, ArtifactPathId}, host::ResultSender, metrics::Metrics, - worker_common::{IdleWorker, WorkerHandle}, + worker_intf::{IdleWorker, WorkerHandle}, InvalidCandidate, ValidationError, LOG_TARGET, }; use futures::{ diff --git a/node/core/pvf/src/execute/worker_intf.rs b/node/core/pvf/src/execute/worker_intf.rs index 4c26aeb0260a..6e54e17e515a 100644 --- a/node/core/pvf/src/execute/worker_intf.rs +++ b/node/core/pvf/src/execute/worker_intf.rs @@ -18,17 +18,20 @@ use crate::{ artifacts::ArtifactPathId, - error::InternalValidationError, - worker_common::{ - framed_recv, framed_send, path_to_bytes, spawn_with_program_path, IdleWorker, SpawnErr, - WorkerHandle, JOB_TIMEOUT_WALL_CLOCK_FACTOR, + worker_intf::{ + path_to_bytes, spawn_with_program_path, IdleWorker, SpawnErr, WorkerHandle, + JOB_TIMEOUT_WALL_CLOCK_FACTOR, }, LOG_TARGET, }; use futures::FutureExt; use futures_timer::Delay; use parity_scale_codec::{Decode, Encode}; - +use polkadot_node_core_pvf_common::{ + error::InternalValidationError, + execute::{Handshake, Response}, + framed_recv, framed_send, +}; use polkadot_parachain::primitives::ValidationResult; use polkadot_primitives::ExecutorParams; use std::{path::Path, time::Duration}; @@ -208,42 +211,3 @@ async fn recv_response(stream: &mut UnixStream) -> io::Result { ) }) } - -/// The payload of the one-time handshake that is done when a worker process is created. Carries -/// data from the host to the worker. -#[derive(Encode, Decode)] -pub struct Handshake { - /// The executor parameters. - pub executor_params: ExecutorParams, -} - -/// The response from an execution job on the worker. -#[derive(Encode, Decode)] -pub enum Response { - /// The job completed successfully. - Ok { - /// The result of parachain validation. - result_descriptor: ValidationResult, - /// The amount of CPU time taken by the job. - duration: Duration, - }, - /// The candidate is invalid. - InvalidCandidate(String), - /// The job timed out. - TimedOut, - /// An unexpected panic has occurred in the execution worker. - Panic(String), - /// Some internal error occurred. - InternalError(InternalValidationError), -} - -impl Response { - /// Creates an invalid response from a context `ctx` and a message `msg` (which can be empty). - pub fn format_invalid(ctx: &'static str, msg: &str) -> Self { - if msg.is_empty() { - Self::InvalidCandidate(ctx.to_string()) - } else { - Self::InvalidCandidate(format!("{}: {}", ctx, msg)) - } - } -} diff --git a/node/core/pvf/src/host.rs b/node/core/pvf/src/host.rs index bfc775a32dee..67f4a66e9748 100644 --- a/node/core/pvf/src/host.rs +++ b/node/core/pvf/src/host.rs @@ -22,16 +22,19 @@ use crate::{ artifacts::{ArtifactId, ArtifactPathId, ArtifactState, Artifacts}, - error::PrepareError, execute::{self, PendingExecutionRequest}, metrics::Metrics, - prepare, PrepareResult, Priority, PvfPrepData, ValidationError, LOG_TARGET, + prepare, Priority, ValidationError, LOG_TARGET, }; use always_assert::never; use futures::{ channel::{mpsc, oneshot}, Future, FutureExt, SinkExt, StreamExt, }; +use polkadot_node_core_pvf_common::{ + error::{PrepareError, PrepareResult}, + pvf::PvfPrepData, +}; use polkadot_parachain::primitives::ValidationResult; use std::{ collections::HashMap, @@ -423,7 +426,7 @@ async fn handle_precheck_pvf( pvf: PvfPrepData, result_sender: PrepareResultSender, ) -> Result<(), Fatal> { - let artifact_id = pvf.as_artifact_id(); + let artifact_id = ArtifactId::from_pvf_prep_data(&pvf); if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { match state { @@ -467,7 +470,7 @@ async fn handle_execute_pvf( inputs: ExecutePvfInputs, ) -> Result<(), Fatal> { let ExecutePvfInputs { pvf, exec_timeout, params, priority, result_tx } = inputs; - let artifact_id = pvf.as_artifact_id(); + let artifact_id = ArtifactId::from_pvf_prep_data(&pvf); let executor_params = (*pvf.executor_params()).clone(); if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { @@ -590,7 +593,7 @@ async fn handle_heads_up( let now = SystemTime::now(); for active_pvf in active_pvfs { - let artifact_id = active_pvf.as_artifact_id(); + let artifact_id = ArtifactId::from_pvf_prep_data(&active_pvf); if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { match state { ArtifactState::Prepared { last_time_needed, .. } => { @@ -854,9 +857,10 @@ fn pulse_every(interval: std::time::Duration) -> impl futures::Stream #[cfg(test)] pub(crate) mod tests { use super::*; - use crate::{prepare::PrepareStats, InvalidCandidate, PrepareError}; + use crate::InvalidCandidate; use assert_matches::assert_matches; use futures::future::BoxFuture; + use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats}; const TEST_EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); pub(crate) const TEST_PREPARATION_TIMEOUT: Duration = Duration::from_secs(30); @@ -877,7 +881,7 @@ pub(crate) mod tests { /// Creates a new PVF which artifact id can be uniquely identified by the given number. fn artifact_id(descriminator: u32) -> ArtifactId { - PvfPrepData::from_discriminator(descriminator).as_artifact_id() + ArtifactId::from_pvf_prep_data(&PvfPrepData::from_discriminator(descriminator)) } fn artifact_path(descriminator: u32) -> PathBuf { diff --git a/node/core/pvf/src/lib.rs b/node/core/pvf/src/lib.rs index 9b302150fd36..d8b801292ca8 100644 --- a/node/core/pvf/src/lib.rs +++ b/node/core/pvf/src/lib.rs @@ -95,27 +95,31 @@ mod host; mod metrics; mod prepare; mod priority; -mod pvf; -mod worker_common; +mod worker_intf; -pub use artifacts::CompiledArtifact; -pub use error::{ - InternalValidationError, InvalidCandidate, PrepareError, PrepareResult, ValidationError, -}; -pub use execute::{ExecuteHandshake, ExecuteResponse}; -#[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] -pub use prepare::MemoryAllocationStats; -pub use prepare::{MemoryStats, PrepareStats}; -pub use priority::Priority; -pub use pvf::PvfPrepData; +#[doc(hidden)] +pub mod testing; + +// Used by `decl_puppet_worker_main!`. +#[doc(hidden)] +pub use sp_tracing; +pub use error::{InvalidCandidate, ValidationError}; pub use host::{start, Config, ValidationHost}; pub use metrics::Metrics; -pub use worker_common::{framed_recv, framed_send, JOB_TIMEOUT_WALL_CLOCK_FACTOR}; +pub use priority::Priority; +pub use worker_intf::{framed_recv, framed_send, JOB_TIMEOUT_WALL_CLOCK_FACTOR}; + +// Re-export some common types. +pub use polkadot_node_core_pvf_common::{ + error::{InternalValidationError, PrepareError}, + prepare::PrepareStats, + pvf::PvfPrepData, +}; -const LOG_TARGET: &str = "parachain::pvf"; +// Re-export worker entrypoints. +pub use polkadot_node_core_pvf_execute_worker::worker_entrypoint as execute_worker_entrypoint; +pub use polkadot_node_core_pvf_prepare_worker::worker_entrypoint as prepare_worker_entrypoint; -#[doc(hidden)] -pub mod testing { - pub use crate::worker_common::{spawn_with_program_path, SpawnErr}; -} +/// The log target for this crate. +pub const LOG_TARGET: &str = "parachain::pvf"; diff --git a/node/core/pvf/src/metrics.rs b/node/core/pvf/src/metrics.rs index 12bcd9eadad3..62f8c6dc5157 100644 --- a/node/core/pvf/src/metrics.rs +++ b/node/core/pvf/src/metrics.rs @@ -16,7 +16,7 @@ //! Prometheus metrics related to the validation host. -use crate::prepare::MemoryStats; +use polkadot_node_core_pvf_common::prepare::MemoryStats; use polkadot_node_metrics::metrics::{self, prometheus}; /// Validation host metrics. diff --git a/node/core/pvf/src/prepare/mod.rs b/node/core/pvf/src/prepare/mod.rs index de40c48464c4..580f67f73fa0 100644 --- a/node/core/pvf/src/prepare/mod.rs +++ b/node/core/pvf/src/prepare/mod.rs @@ -28,36 +28,3 @@ mod worker_intf; pub use pool::start as start_pool; pub use queue::{start as start_queue, FromQueue, ToQueue}; - -use parity_scale_codec::{Decode, Encode}; - -/// Preparation statistics, including the CPU time and memory taken. -#[derive(Debug, Clone, Default, Encode, Decode)] -pub struct PrepareStats { - /// The CPU time that elapsed for the preparation job. - pub cpu_time_elapsed: std::time::Duration, - /// The observed memory statistics for the preparation job. - pub memory_stats: MemoryStats, -} - -/// Helper struct to contain all the memory stats, including `MemoryAllocationStats` and, if -/// supported by the OS, `ru_maxrss`. -#[derive(Clone, Debug, Default, Encode, Decode)] -pub struct MemoryStats { - /// Memory stats from `tikv_jemalloc_ctl`. - #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] - pub memory_tracker_stats: Option, - /// `ru_maxrss` from `getrusage`. `None` if an error occurred. - #[cfg(target_os = "linux")] - pub max_rss: Option, -} - -/// Statistics of collected memory metrics. -#[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] -#[derive(Clone, Debug, Default, Encode, Decode)] -pub struct MemoryAllocationStats { - /// Total resident memory, in bytes. - pub resident: u64, - /// Total allocated memory, in bytes. - pub allocated: u64, -} diff --git a/node/core/pvf/src/prepare/pool.rs b/node/core/pvf/src/prepare/pool.rs index d151f097805e..ae8ecff5285c 100644 --- a/node/core/pvf/src/prepare/pool.rs +++ b/node/core/pvf/src/prepare/pool.rs @@ -16,16 +16,18 @@ use super::worker_intf::{self, Outcome}; use crate::{ - error::{PrepareError, PrepareResult}, metrics::Metrics, - pvf::PvfPrepData, - worker_common::{IdleWorker, WorkerHandle}, + worker_intf::{IdleWorker, WorkerHandle}, LOG_TARGET, }; use always_assert::never; use futures::{ channel::mpsc, future::BoxFuture, stream::FuturesUnordered, Future, FutureExt, StreamExt, }; +use polkadot_node_core_pvf_common::{ + error::{PrepareError, PrepareResult}, + pvf::PvfPrepData, +}; use slotmap::HopSlotMap; use std::{ fmt, diff --git a/node/core/pvf/src/prepare/queue.rs b/node/core/pvf/src/prepare/queue.rs index f84d5ab0e56e..5e19a4c7217a 100644 --- a/node/core/pvf/src/prepare/queue.rs +++ b/node/core/pvf/src/prepare/queue.rs @@ -17,11 +17,10 @@ //! A queue that handles requests for PVF preparation. use super::pool::{self, Worker}; -use crate::{ - artifacts::ArtifactId, metrics::Metrics, PrepareResult, Priority, PvfPrepData, LOG_TARGET, -}; +use crate::{artifacts::ArtifactId, metrics::Metrics, Priority, LOG_TARGET}; use always_assert::{always, never}; use futures::{channel::mpsc, stream::StreamExt as _, Future, SinkExt}; +use polkadot_node_core_pvf_common::{error::PrepareResult, pvf::PvfPrepData}; use std::{ collections::{HashMap, VecDeque}, path::PathBuf, @@ -231,7 +230,7 @@ async fn handle_enqueue( ); queue.metrics.prepare_enqueued(); - let artifact_id = pvf.as_artifact_id(); + let artifact_id = ArtifactId::from_pvf_prep_data(&pvf); if never!( queue.artifact_id_to_job.contains_key(&artifact_id), "second Enqueue sent for a known artifact" @@ -339,7 +338,7 @@ async fn handle_worker_concluded( // this can't be None; // qed. let job_data = never_none!(queue.jobs.remove(job)); - let artifact_id = job_data.pvf.as_artifact_id(); + let artifact_id = ArtifactId::from_pvf_prep_data(&job_data.pvf); queue.artifact_id_to_job.remove(&artifact_id); @@ -425,7 +424,7 @@ async fn spawn_extra_worker(queue: &mut Queue, critical: bool) -> Result<(), Fat async fn assign(queue: &mut Queue, worker: Worker, job: Job) -> Result<(), Fatal> { let job_data = &mut queue.jobs[job]; - let artifact_id = job_data.pvf.as_artifact_id(); + let artifact_id = ArtifactId::from_pvf_prep_data(&job_data.pvf); let artifact_path = artifact_id.path(&queue.cache_path); job_data.worker = Some(worker); @@ -488,11 +487,10 @@ pub fn start( #[cfg(test)] mod tests { use super::*; - use crate::{ - error::PrepareError, host::tests::TEST_PREPARATION_TIMEOUT, prepare::PrepareStats, - }; + use crate::host::tests::TEST_PREPARATION_TIMEOUT; use assert_matches::assert_matches; use futures::{future::BoxFuture, FutureExt}; + use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats}; use slotmap::SlotMap; use std::task::Poll; @@ -616,7 +614,10 @@ mod tests { result: Ok(PrepareStats::default()), }); - assert_eq!(test.poll_and_recv_from_queue().await.artifact_id, pvf(1).as_artifact_id()); + assert_eq!( + test.poll_and_recv_from_queue().await.artifact_id, + ArtifactId::from_pvf_prep_data(&pvf(1)) + ); } #[tokio::test] @@ -735,7 +736,10 @@ mod tests { // Since there is still work, the queue requested one extra worker to spawn to handle the // remaining enqueued work items. assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - assert_eq!(test.poll_and_recv_from_queue().await.artifact_id, pvf(1).as_artifact_id()); + assert_eq!( + test.poll_and_recv_from_queue().await.artifact_id, + ArtifactId::from_pvf_prep_data(&pvf(1)) + ); } #[tokio::test] diff --git a/node/core/pvf/src/prepare/worker_intf.rs b/node/core/pvf/src/prepare/worker_intf.rs index daf94aadc672..47522d3f0856 100644 --- a/node/core/pvf/src/prepare/worker_intf.rs +++ b/node/core/pvf/src/prepare/worker_intf.rs @@ -17,17 +17,20 @@ //! Host interface to the prepare worker. use crate::{ - error::{PrepareError, PrepareResult}, metrics::Metrics, - prepare::PrepareStats, - pvf::PvfPrepData, - worker_common::{ - framed_recv, framed_send, path_to_bytes, spawn_with_program_path, tmpfile_in, IdleWorker, - SpawnErr, WorkerHandle, JOB_TIMEOUT_WALL_CLOCK_FACTOR, + worker_intf::{ + path_to_bytes, spawn_with_program_path, tmpfile_in, IdleWorker, SpawnErr, WorkerHandle, + JOB_TIMEOUT_WALL_CLOCK_FACTOR, }, LOG_TARGET, }; use parity_scale_codec::{Decode, Encode}; +use polkadot_node_core_pvf_common::{ + error::{PrepareError, PrepareResult}, + framed_recv, framed_send, + prepare::PrepareStats, + pvf::PvfPrepData, +}; use sp_core::hexdisplay::HexDisplay; use std::{ diff --git a/node/core/pvf/worker/src/testing.rs b/node/core/pvf/src/testing.rs similarity index 93% rename from node/core/pvf/worker/src/testing.rs rename to node/core/pvf/src/testing.rs index 7497d4aed31c..cc07d7aeef02 100644 --- a/node/core/pvf/worker/src/testing.rs +++ b/node/core/pvf/src/testing.rs @@ -19,6 +19,9 @@ //! N.B. This is not guarded with some feature flag. Overexposing items here may affect the final //! artifact even for production builds. +#[doc(hidden)] +pub use crate::worker_intf::{spawn_with_program_path, SpawnErr}; + use polkadot_primitives::ExecutorParams; /// A function that emulates the stitches together behaviors of the preparation and the execution @@ -27,7 +30,8 @@ pub fn validate_candidate( code: &[u8], params: &[u8], ) -> Result, Box> { - use crate::executor_intf::{prepare, prevalidate, Executor}; + use polkadot_node_core_pvf_execute_worker::Executor; + use polkadot_node_core_pvf_prepare_worker::{prepare, prevalidate}; let code = sp_maybe_compressed_blob::decompress(code, 10 * 1024 * 1024) .expect("Decompressing code failed"); diff --git a/node/core/pvf/src/worker_common.rs b/node/core/pvf/src/worker_intf.rs similarity index 100% rename from node/core/pvf/src/worker_common.rs rename to node/core/pvf/src/worker_intf.rs diff --git a/node/core/pvf/worker/tests/it/adder.rs b/node/core/pvf/tests/it/adder.rs similarity index 100% rename from node/core/pvf/worker/tests/it/adder.rs rename to node/core/pvf/tests/it/adder.rs diff --git a/node/core/pvf/worker/tests/it/main.rs b/node/core/pvf/tests/it/main.rs similarity index 100% rename from node/core/pvf/worker/tests/it/main.rs rename to node/core/pvf/tests/it/main.rs diff --git a/node/core/pvf/worker/tests/it/worker_common.rs b/node/core/pvf/tests/it/worker_common.rs similarity index 100% rename from node/core/pvf/worker/tests/it/worker_common.rs rename to node/core/pvf/tests/it/worker_common.rs diff --git a/node/core/pvf/worker/src/lib.rs b/node/core/pvf/worker/src/lib.rs deleted file mode 100644 index 456362cf8f57..000000000000 --- a/node/core/pvf/worker/src/lib.rs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -mod common; -mod execute; -mod executor_intf; -mod memory_stats; -mod prepare; - -#[doc(hidden)] -pub mod testing; - -#[doc(hidden)] -pub use sp_tracing; - -pub use execute::worker_entrypoint as execute_worker_entrypoint; -pub use prepare::worker_entrypoint as prepare_worker_entrypoint; - -pub use executor_intf::{prepare, prevalidate}; - -// NOTE: Initializing logging in e.g. tests will not have an effect in the workers, as they are -// separate spawned processes. Run with e.g. `RUST_LOG=parachain::pvf-worker=trace`. -const LOG_TARGET: &str = "parachain::pvf-worker"; - -/// Use this macro to declare a `fn main() {}` that will create an executable that can be used for -/// spawning the desired worker. -#[macro_export(local_inner_macros)] -macro_rules! decl_worker_main { - ($command:tt) => { - fn main() { - $crate::sp_tracing::try_init_simple(); - - let args = std::env::args().collect::>(); - - let mut version = None; - let mut socket_path: &str = ""; - - for i in 1..args.len() { - match args[i].as_ref() { - "--socket-path" => socket_path = args[i + 1].as_str(), - "--node-version" => version = Some(args[i + 1].as_str()), - _ => (), - } - } - - decl_worker_main_command!($command, socket_path, version) - } - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! decl_worker_main_command { - (prepare, $socket_path:expr, $version: expr) => { - $crate::prepare_worker_entrypoint(&$socket_path, $version) - }; - (execute, $socket_path:expr, $version: expr) => { - $crate::execute_worker_entrypoint(&$socket_path, $version) - }; -} diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index a36822b041a3..8e23e623174f 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -20,7 +20,8 @@ polkadot-node-subsystem-types = { path = "../subsystem-types" } polkadot-node-core-dispute-coordinator = { path = "../core/dispute-coordinator" } polkadot-node-core-candidate-validation = { path = "../core/candidate-validation" } polkadot-node-core-backing = { path = "../core/backing" } -polkadot-node-core-pvf-worker = { path = "../core/pvf/worker" } +polkadot-node-core-pvf-execute-worker = { path = "../core/pvf/execute-worker" } +polkadot-node-core-pvf-prepare-worker = { path = "../core/pvf/prepare-worker" } polkadot-node-primitives = { path = "../primitives" } polkadot-primitives = { path = "../../primitives" } color-eyre = { version = "0.6.1", default-features = false } diff --git a/node/malus/src/malus.rs b/node/malus/src/malus.rs index 36cf0cca06bf..d09f8be990a4 100644 --- a/node/malus/src/malus.rs +++ b/node/malus/src/malus.rs @@ -97,7 +97,7 @@ impl MalusCli { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_worker::prepare_worker_entrypoint( + polkadot_node_core_pvf_prepare_worker::worker_entrypoint( &cmd.socket_path, None, ); @@ -111,7 +111,7 @@ impl MalusCli { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_worker::execute_worker_entrypoint( + polkadot_node_core_pvf_execute_worker::worker_entrypoint( &cmd.socket_path, None, ); diff --git a/node/test/performance-test/Cargo.toml b/node/test/performance-test/Cargo.toml index 70f072c03ae1..4e3001b3ee66 100644 --- a/node/test/performance-test/Cargo.toml +++ b/node/test/performance-test/Cargo.toml @@ -10,7 +10,7 @@ quote = "1.0.26" env_logger = "0.9" log = "0.4" -polkadot-node-core-pvf-worker = { path = "../../core/pvf/worker" } +polkadot-node-core-pvf-prepare-worker = { path = "../../core/pvf/prepare-worker" } polkadot-erasure-coding = { path = "../../../erasure-coding" } polkadot-node-primitives = { path = "../../primitives" } polkadot-primitives = { path = "../../../primitives" } diff --git a/node/test/performance-test/src/lib.rs b/node/test/performance-test/src/lib.rs index 1afa43cc62ba..15073912654a 100644 --- a/node/test/performance-test/src/lib.rs +++ b/node/test/performance-test/src/lib.rs @@ -65,9 +65,9 @@ pub fn measure_pvf_prepare(wasm_code: &[u8]) -> Result .or(Err(PerfCheckError::CodeDecompressionFailed))?; // Recreate the pipeline from the pvf prepare worker. - let blob = - polkadot_node_core_pvf_worker::prevalidate(code.as_ref()).map_err(PerfCheckError::from)?; - polkadot_node_core_pvf_worker::prepare(blob, &ExecutorParams::default()) + let blob = polkadot_node_core_pvf_prepare_worker::prevalidate(code.as_ref()) + .map_err(PerfCheckError::from)?; + polkadot_node_core_pvf_prepare_worker::prepare(blob, &ExecutorParams::default()) .map_err(PerfCheckError::from)?; Ok(start.elapsed()) diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index ee20cb0b0d17..7fe4aefc688d 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -34,7 +34,7 @@ sc-service = { git = "https://github.com/paritytech/substrate", branch = "master # This one is tricky. Even though it is not used directly by the collator, we still need it for the # `puppet_worker` binary, which is required for the integration test. However, this shouldn't be # a big problem since it is used transitively anyway. -polkadot-node-core-pvf-worker = { path = "../../../../node/core/pvf/worker" } +polkadot-node-core-pvf = { path = "../../../../node/core/pvf" } [dev-dependencies] polkadot-parachain = { path = "../../.." } diff --git a/parachain/test-parachains/adder/collator/bin/puppet_worker.rs b/parachain/test-parachains/adder/collator/bin/puppet_worker.rs index ddd81971292b..7f93519d8454 100644 --- a/parachain/test-parachains/adder/collator/bin/puppet_worker.rs +++ b/parachain/test-parachains/adder/collator/bin/puppet_worker.rs @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -polkadot_node_core_pvf_worker::decl_puppet_worker_main!(); +polkadot_node_core_pvf::decl_puppet_worker_main!(); diff --git a/parachain/test-parachains/adder/collator/src/lib.rs b/parachain/test-parachains/adder/collator/src/lib.rs index 4b2b9248de22..02a4598f9e47 100644 --- a/parachain/test-parachains/adder/collator/src/lib.rs +++ b/parachain/test-parachains/adder/collator/src/lib.rs @@ -272,7 +272,7 @@ mod tests { } fn validate_collation(collator: &Collator, parent_head: HeadData, collation: Collation) { - use polkadot_node_core_pvf_worker::testing::validate_candidate; + use polkadot_node_core_pvf::testing::validate_candidate; let block_data = match collation.proof_of_validity { MaybeCompressedPoV::Raw(pov) => pov.block_data, diff --git a/parachain/test-parachains/undying/collator/Cargo.toml b/parachain/test-parachains/undying/collator/Cargo.toml index 1b2ccf3be0ca..2b9d80401f5d 100644 --- a/parachain/test-parachains/undying/collator/Cargo.toml +++ b/parachain/test-parachains/undying/collator/Cargo.toml @@ -34,7 +34,7 @@ sc-service = { git = "https://github.com/paritytech/substrate", branch = "master # This one is tricky. Even though it is not used directly by the collator, we still need it for the # `puppet_worker` binary, which is required for the integration test. However, this shouldn't be # a big problem since it is used transitively anyway. -polkadot-node-core-pvf-worker = { path = "../../../../node/core/pvf/worker" } +polkadot-node-core-pvf = { path = "../../../../node/core/pvf" } [dev-dependencies] polkadot-parachain = { path = "../../.." } diff --git a/parachain/test-parachains/undying/collator/bin/puppet_worker.rs b/parachain/test-parachains/undying/collator/bin/puppet_worker.rs index ddd81971292b..7f93519d8454 100644 --- a/parachain/test-parachains/undying/collator/bin/puppet_worker.rs +++ b/parachain/test-parachains/undying/collator/bin/puppet_worker.rs @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -polkadot_node_core_pvf_worker::decl_puppet_worker_main!(); +polkadot_node_core_pvf::decl_puppet_worker_main!(); diff --git a/parachain/test-parachains/undying/collator/src/lib.rs b/parachain/test-parachains/undying/collator/src/lib.rs index dcaf9b63296d..838590fa16f5 100644 --- a/parachain/test-parachains/undying/collator/src/lib.rs +++ b/parachain/test-parachains/undying/collator/src/lib.rs @@ -354,7 +354,7 @@ mod tests { } fn validate_collation(collator: &Collator, parent_head: HeadData, collation: Collation) { - use polkadot_node_core_pvf_worker::testing::validate_candidate; + use polkadot_node_core_pvf::testing::validate_candidate; let block_data = match collation.proof_of_validity { MaybeCompressedPoV::Raw(pov) => pov.block_data, From 33468660190bdbc24cb81849b5bf4b918bdbd5ec Mon Sep 17 00:00:00 2001 From: Oliver Tale-Yazdi Date: Thu, 25 May 2023 22:41:00 +0200 Subject: [PATCH 05/28] Update quote to 1.0.27 (#7280) Signed-off-by: Oliver Tale-Yazdi Co-authored-by: parity-processbot <> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 54f27915d8a7..ed0545577d1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8920,9 +8920,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" dependencies = [ "proc-macro2", ] From b09937a3bd81e360870cbaa7b1f9482e3c0817ed Mon Sep 17 00:00:00 2001 From: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> Date: Fri, 26 May 2023 00:26:02 +0200 Subject: [PATCH 06/28] pallets: implement `Default` for `GenesisConfig` in `no_std` (#7271) * pallets: implement Default for GenesisConfig in no_std This change is follow-up of: https://github.com/paritytech/substrate/pull/14108 It is a step towards: https://github.com/paritytech/substrate/issues/13334 * Cargo.lock updated * update lockfile for {"substrate"} --------- Co-authored-by: parity-processbot <> --- Cargo.lock | 370 ++++++++++++------------ runtime/common/src/claims.rs | 13 +- runtime/common/src/paras_registrar.rs | 1 - runtime/parachains/src/configuration.rs | 10 +- runtime/parachains/src/hrmp.rs | 12 +- runtime/parachains/src/paras/mod.rs | 10 +- xcm/pallet-xcm/src/lib.rs | 1 - 7 files changed, 194 insertions(+), 223 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ed0545577d1d..8c4df5edb58d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "hash-db", "log", @@ -2504,7 +2504,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", ] @@ -2527,7 +2527,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-support-procedural", @@ -2552,7 +2552,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "Inflector", "array-bytes", @@ -2599,7 +2599,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2610,7 +2610,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2627,7 +2627,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -2656,7 +2656,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-recursion", "futures", @@ -2677,7 +2677,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "bitflags", "environmental", @@ -2711,7 +2711,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "Inflector", "cfg-expr", @@ -2727,7 +2727,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2739,7 +2739,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro2", "quote", @@ -2749,7 +2749,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2775,18 +2775,19 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "scale-info", + "serde", ] [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "cfg-if", "frame-support", @@ -2805,7 +2806,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -2820,7 +2821,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "sp-api", @@ -2829,7 +2830,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "parity-scale-codec", @@ -3011,7 +3012,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "chrono", "frame-election-provider-support", @@ -4931,7 +4932,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "log", @@ -4950,7 +4951,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "anyhow", "jsonrpsee", @@ -5533,7 +5534,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5548,7 +5549,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -5564,7 +5565,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -5578,7 +5579,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5602,7 +5603,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5622,7 +5623,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5641,7 +5642,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5656,7 +5657,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -5675,7 +5676,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5699,7 +5700,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5717,7 +5718,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5736,7 +5737,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5753,7 +5754,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5770,7 +5771,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5788,7 +5789,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5811,7 +5812,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5824,7 +5825,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5842,7 +5843,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5860,7 +5861,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5883,7 +5884,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5899,7 +5900,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5919,7 +5920,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5936,7 +5937,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5953,7 +5954,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5972,7 +5973,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5989,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6005,7 +6006,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6021,7 +6022,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -6038,7 +6039,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6058,7 +6059,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6069,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -6086,7 +6087,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6110,7 +6111,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6127,7 +6128,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6142,7 +6143,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6160,7 +6161,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6175,7 +6176,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6194,7 +6195,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6211,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -6232,7 +6233,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6248,7 +6249,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -6262,7 +6263,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6285,7 +6286,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6296,7 +6297,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "log", "sp-arithmetic", @@ -6305,7 +6306,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "sp-api", @@ -6314,7 +6315,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6331,7 +6332,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6346,7 +6347,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6364,7 +6365,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6383,7 +6384,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-support", "frame-system", @@ -6399,7 +6400,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6415,7 +6416,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6427,7 +6428,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6444,7 +6445,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6459,7 +6460,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6475,7 +6476,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6490,7 +6491,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-benchmarking", "frame-support", @@ -9625,7 +9626,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "log", "sp-core", @@ -9636,7 +9637,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures", @@ -9665,7 +9666,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "futures-timer", @@ -9688,7 +9689,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9703,7 +9704,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9722,7 +9723,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9733,7 +9734,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "chrono", @@ -9773,7 +9774,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "fnv", "futures", @@ -9800,7 +9801,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "hash-db", "kvdb", @@ -9826,7 +9827,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures", @@ -9851,7 +9852,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "fork-tree", @@ -9887,7 +9888,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "jsonrpsee", @@ -9909,7 +9910,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "async-channel", @@ -9945,7 +9946,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "jsonrpsee", @@ -9964,7 +9965,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9977,7 +9978,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -10017,7 +10018,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "finality-grandpa", "futures", @@ -10037,7 +10038,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures", @@ -10060,7 +10061,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "lru 0.8.1", "parity-scale-codec", @@ -10082,7 +10083,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10094,7 +10095,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "anyhow", "cfg-if", @@ -10112,7 +10113,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ansi_term", "futures", @@ -10128,7 +10129,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10142,7 +10143,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "async-channel", @@ -10187,7 +10188,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-channel", "cid", @@ -10208,7 +10209,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "async-trait", @@ -10236,7 +10237,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ahash 0.8.2", "futures", @@ -10255,7 +10256,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "async-channel", @@ -10278,7 +10279,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "async-channel", @@ -10313,14 +10314,13 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "futures", "libp2p", "log", "parity-scale-codec", - "pin-project", "sc-network", "sc-network-common", "sc-peerset", @@ -10333,7 +10333,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "bytes", @@ -10364,7 +10364,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "libp2p-identity", @@ -10380,7 +10380,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10389,7 +10389,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "jsonrpsee", @@ -10420,7 +10420,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10439,7 +10439,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "http", "jsonrpsee", @@ -10454,7 +10454,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "futures", @@ -10480,7 +10480,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "directories", @@ -10546,7 +10546,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "log", "parity-scale-codec", @@ -10557,7 +10557,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "clap 4.2.5", "fs4", @@ -10573,7 +10573,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10592,7 +10592,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "libc", @@ -10611,7 +10611,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "chrono", "futures", @@ -10630,7 +10630,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ansi_term", "atty", @@ -10661,7 +10661,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10672,7 +10672,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures", @@ -10699,7 +10699,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures", @@ -10713,7 +10713,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-channel", "futures", @@ -11261,7 +11261,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "hash-db", "log", @@ -11281,7 +11281,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "Inflector", "blake2", @@ -11295,7 +11295,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11308,7 +11308,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "integer-sqrt", "num-traits", @@ -11322,7 +11322,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11335,7 +11335,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "sp-api", @@ -11347,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "log", @@ -11365,7 +11365,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures", @@ -11380,7 +11380,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "parity-scale-codec", @@ -11398,7 +11398,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "parity-scale-codec", @@ -11419,7 +11419,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11438,7 +11438,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "finality-grandpa", "log", @@ -11456,7 +11456,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11468,7 +11468,7 @@ dependencies = [ [[package]] name = "sp-core" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "bitflags", @@ -11512,7 +11512,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "blake2b_simd", "byteorder", @@ -11526,7 +11526,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro2", "quote", @@ -11537,7 +11537,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11546,7 +11546,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro2", "quote", @@ -11556,7 +11556,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "environmental", "parity-scale-codec", @@ -11567,7 +11567,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11582,7 +11582,7 @@ dependencies = [ [[package]] name = "sp-io" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "bytes", "ed25519", @@ -11608,7 +11608,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "lazy_static", "sp-core", @@ -11619,7 +11619,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "parity-scale-codec", @@ -11633,7 +11633,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11642,7 +11642,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11653,7 +11653,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11671,7 +11671,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11685,7 +11685,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "sp-api", "sp-core", @@ -11695,7 +11695,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "backtrace", "lazy_static", @@ -11705,7 +11705,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "rustc-hash", "serde", @@ -11715,7 +11715,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "either", "hash256-std-hasher", @@ -11737,7 +11737,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11755,7 +11755,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "Inflector", "proc-macro-crate", @@ -11767,7 +11767,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11781,7 +11781,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11794,7 +11794,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "hash-db", "log", @@ -11814,7 +11814,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "log", "parity-scale-codec", @@ -11832,12 +11832,12 @@ dependencies = [ [[package]] name = "sp-std" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" [[package]] name = "sp-storage" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11850,7 +11850,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "futures-timer", @@ -11865,7 +11865,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "sp-std", @@ -11877,7 +11877,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "sp-api", "sp-runtime", @@ -11886,7 +11886,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "log", @@ -11902,7 +11902,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11925,7 +11925,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11942,7 +11942,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11953,7 +11953,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11967,7 +11967,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "parity-scale-codec", "scale-info", @@ -12208,7 +12208,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "platforms 2.0.0", ] @@ -12216,7 +12216,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12235,7 +12235,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "hyper", "log", @@ -12247,7 +12247,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "jsonrpsee", @@ -12260,7 +12260,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "jsonrpsee", "log", @@ -12279,7 +12279,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "array-bytes", "async-trait", @@ -12305,7 +12305,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12315,7 +12315,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12326,7 +12326,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "ansi_term", "build-helper", @@ -13170,7 +13170,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" dependencies = [ "async-trait", "clap 4.2.5", diff --git a/runtime/common/src/claims.rs b/runtime/common/src/claims.rs index b598d2ea0ef0..fe6b54535396 100644 --- a/runtime/common/src/claims.rs +++ b/runtime/common/src/claims.rs @@ -20,6 +20,7 @@ use frame_support::{ ensure, traits::{Currency, Get, IsSubType, VestingSchedule}, weights::Weight, + DefaultNoBound, }; pub use pallet::*; use parity_scale_codec::{Decode, Encode}; @@ -28,10 +29,8 @@ use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{self, Deserialize, Deserializer, Serialize, Serializer}; use sp_io::{crypto::secp256k1_ecdsa_recover, hashing::keccak_256}; -#[cfg(feature = "std")] -use sp_runtime::traits::Zero; use sp_runtime::{ - traits::{CheckedSub, DispatchInfoOf, SignedExtension}, + traits::{CheckedSub, DispatchInfoOf, SignedExtension, Zero}, transaction_validity::{ InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction, }, @@ -229,19 +228,13 @@ pub mod pallet { pub(super) type Preclaims = StorageMap<_, Identity, T::AccountId, EthereumAddress>; #[pallet::genesis_config] + #[derive(DefaultNoBound)] pub struct GenesisConfig { pub claims: Vec<(EthereumAddress, BalanceOf, Option, Option)>, pub vesting: Vec<(EthereumAddress, (BalanceOf, BalanceOf, T::BlockNumber))>, } - #[cfg(feature = "std")] - impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { claims: Default::default(), vesting: Default::default() } - } - } - #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 5ecef73fae1c..8c080286ac61 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -195,7 +195,6 @@ pub mod pallet { pub next_free_para_id: ParaId, } - #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { GenesisConfig { next_free_para_id: LOWEST_PUBLIC_ID } diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index 05b0ca1fc538..386a06d92d56 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -19,7 +19,7 @@ //! Configuration can change only at session boundaries and is buffered until then. use crate::{inclusion::MAX_UPWARD_MESSAGE_SIZE_BOUND, shared}; -use frame_support::pallet_prelude::*; +use frame_support::{pallet_prelude::*, DefaultNoBound}; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::{MAX_HORIZONTAL_MESSAGE_NUM, MAX_UPWARD_MESSAGE_NUM}; @@ -525,17 +525,11 @@ pub mod pallet { pub(crate) type BypassConsistencyCheck = StorageValue<_, bool, ValueQuery>; #[pallet::genesis_config] + #[derive(DefaultNoBound)] pub struct GenesisConfig { pub config: HostConfiguration, } - #[cfg(feature = "std")] - impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { config: Default::default() } - } - } - #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index f33e753f62e5..ee725da37f1f 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -18,7 +18,7 @@ use crate::{ configuration::{self, HostConfiguration}, dmp, ensure_parachain, initializer, paras, }; -use frame_support::{pallet_prelude::*, traits::ReservableCurrency}; +use frame_support::{pallet_prelude::*, traits::ReservableCurrency, DefaultNoBound}; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::HorizontalMessages; @@ -435,17 +435,11 @@ pub mod pallet { /// configuration pallet. /// 2. `sender` and `recipient` must be valid paras. #[pallet::genesis_config] + #[derive(DefaultNoBound)] pub struct GenesisConfig { preopen_hrmp_channels: Vec<(ParaId, ParaId, u32, u32)>, } - #[cfg(feature = "std")] - impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { preopen_hrmp_channels: Default::default() } - } - } - #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { @@ -621,7 +615,6 @@ pub mod pallet { } } -#[cfg(feature = "std")] fn initialize_storage(preopen_hrmp_channels: &[(ParaId, ParaId, u32, u32)]) { let host_config = configuration::Pallet::::config(); for &(sender, recipient, max_capacity, max_message_size) in preopen_hrmp_channels { @@ -634,7 +627,6 @@ fn initialize_storage(preopen_hrmp_channels: &[(ParaId, ParaId, u32, >::process_hrmp_open_channel_requests(&host_config); } -#[cfg(feature = "std")] fn preopen_hrmp_channel( sender: ParaId, recipient: ParaId, diff --git a/runtime/parachains/src/paras/mod.rs b/runtime/parachains/src/paras/mod.rs index bf2a3790385b..b4778a4988b9 100644 --- a/runtime/parachains/src/paras/mod.rs +++ b/runtime/parachains/src/paras/mod.rs @@ -114,7 +114,7 @@ use crate::{ shared, }; use bitvec::{order::Lsb0 as BitOrderLsb0, vec::BitVec}; -use frame_support::{pallet_prelude::*, traits::EstimateNextSessionRotation}; +use frame_support::{pallet_prelude::*, traits::EstimateNextSessionRotation, DefaultNoBound}; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use primitives::{ @@ -771,17 +771,11 @@ pub mod pallet { StorageMap<_, Identity, ValidationCodeHash, ValidationCode>; #[pallet::genesis_config] + #[derive(DefaultNoBound)] pub struct GenesisConfig { pub paras: Vec<(ParaId, ParaGenesisArgs)>, } - #[cfg(feature = "std")] - impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { paras: Default::default() } - } - } - #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 041e76b2f69f..29c10de003ae 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -638,7 +638,6 @@ pub mod pallet { pub safe_xcm_version: Option, } - #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { Self { safe_xcm_version: Some(XCM_VERSION) } From 3e93b4c889a19e4e908d0fda83724f2fa75f466a Mon Sep 17 00:00:00 2001 From: Adrian Catangiu Date: Fri, 26 May 2023 12:22:35 +0300 Subject: [PATCH 07/28] cli: enable BEEFY by default on test networks (#7293) We consider BEEFY mature enough to run by default on all nodes for test networks (Rococo/Wococo/Versi). Right now, most nodes are not running it since it's opt-in using --beefy flag. Switch to an opt-out model for test networks. Replace --beefy flag from CLI with --no-beefy and have BEEFY client start by default on test networks. Signed-off-by: acatangiu --- cli/src/cli.rs | 5 +++-- cli/src/command.rs | 11 ++++------- node/service/src/lib.rs | 12 ++++-------- zombienet_tests/functional/0003-beefy-and-mmr.toml | 4 ++-- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/cli/src/cli.rs b/cli/src/cli.rs index b775bb6b77ad..69c54b428a92 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -114,9 +114,10 @@ pub struct RunCmd { #[arg(long = "grandpa-pause", num_args = 2)] pub grandpa_pause: Vec, - /// Enable the BEEFY gadget (only on Rococo or Wococo for now). + /// Disable the BEEFY gadget + /// (currently enabled by default on Rococo, Wococo and Versi). #[arg(long)] - pub beefy: bool, + pub no_beefy: bool, /// Add the destination address to the jaeger agent. /// diff --git a/cli/src/command.rs b/cli/src/command.rs index 132d8279eb13..378e8e7650c2 100644 --- a/cli/src/command.rs +++ b/cli/src/command.rs @@ -298,12 +298,9 @@ where .map_err(Error::from)?; let chain_spec = &runner.config().chain_spec; - // Disallow BEEFY on production networks. - if cli.run.beefy && - (chain_spec.is_polkadot() || chain_spec.is_kusama() || chain_spec.is_westend()) - { - return Err(Error::Other("BEEFY disallowed on production networks".to_string())) - } + // By default, enable BEEFY on test networks. + let enable_beefy = (chain_spec.is_rococo() || chain_spec.is_wococo() || chain_spec.is_versi()) && + !cli.run.no_beefy; set_default_ss58_version(chain_spec); @@ -346,7 +343,7 @@ where config, service::IsCollator::No, grandpa_pause, - cli.run.beefy, + enable_beefy, jaeger_agent, None, false, diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 800a8af9e2a0..e55f2456160b 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -1158,15 +1158,11 @@ where let gadget = beefy::start_beefy_gadget::<_, _, _, _, _, _, _>(beefy_params); - // Wococo's purpose is to be a testbed for BEEFY, so if it fails we'll + // BEEFY currently only runs on testnets, if it fails we'll // bring the node down with it to make sure it is noticed. - if chain_spec.is_wococo() { - task_manager - .spawn_essential_handle() - .spawn_blocking("beefy-gadget", None, gadget); - } else { - task_manager.spawn_handle().spawn_blocking("beefy-gadget", None, gadget); - } + task_manager + .spawn_essential_handle() + .spawn_blocking("beefy-gadget", None, gadget); if is_offchain_indexing_enabled { task_manager.spawn_handle().spawn_blocking( diff --git a/zombienet_tests/functional/0003-beefy-and-mmr.toml b/zombienet_tests/functional/0003-beefy-and-mmr.toml index bea5ac1ba64f..a8d97bc30f85 100644 --- a/zombienet_tests/functional/0003-beefy-and-mmr.toml +++ b/zombienet_tests/functional/0003-beefy-and-mmr.toml @@ -9,8 +9,8 @@ command = "polkadot" [[relaychain.node_groups]] name = "validator" count = 3 -args = ["--log=beefy=debug", "--beefy", "--enable-offchain-indexing=true"] +args = ["--log=beefy=debug", "--enable-offchain-indexing=true"] [[relaychain.nodes]] name = "validator-unstable" -args = ["--log=beefy=debug", "--beefy", "--enable-offchain-indexing=true"] +args = ["--log=beefy=debug", "--enable-offchain-indexing=true"] From 710419524ece26228f70562147f704eacd00e3af Mon Sep 17 00:00:00 2001 From: ordian Date: Fri, 26 May 2023 11:35:46 +0200 Subject: [PATCH 08/28] runtime: past session slashing runtime API (#6667) * runtime/vstaging: unapplied_slashes runtime API * runtime/vstaging: key_ownership_proof runtime API * runtime/ParachainHost: submit_report_dispute_lost * fix key_ownership_proof API * runtime: submit_report_dispute_lost runtime API * nits * Update node/subsystem-types/src/messages.rs Co-authored-by: Marcin S. * revert unrelated fmt changes * post merge fixes * fix compilation --------- Co-authored-by: Marcin S. --- node/core/runtime-api/src/cache.rs | 64 +++++++++++- node/core/runtime-api/src/lib.rs | 95 +++++++++++++----- node/subsystem-types/src/messages.rs | 29 +++++- node/subsystem-types/src/runtime_client.rs | 55 ++++++++++- primitives/src/runtime_api.rs | 26 ++++- primitives/src/vstaging/mod.rs | 1 + primitives/src/vstaging/slashing.rs | 99 +++++++++++++++++++ runtime/parachains/src/disputes/slashing.rs | 74 ++++---------- .../src/disputes/slashing/benchmarking.rs | 1 + .../src/runtime_api_impl/vstaging.rs | 29 ++++++ runtime/rococo/src/lib.rs | 30 +++++- runtime/westend/src/lib.rs | 34 ++++++- 12 files changed, 441 insertions(+), 96 deletions(-) create mode 100644 primitives/src/vstaging/slashing.rs diff --git a/node/core/runtime-api/src/cache.rs b/node/core/runtime-api/src/cache.rs index ea7135696e34..4c23ce2fa3c7 100644 --- a/node/core/runtime-api/src/cache.rs +++ b/node/core/runtime-api/src/cache.rs @@ -20,11 +20,12 @@ use lru::LruCache; use sp_consensus_babe::Epoch; use polkadot_primitives::{ - AuthorityDiscoveryId, BlockNumber, CandidateCommitments, CandidateEvent, CandidateHash, - CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, - Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, OccupiedCoreAssumption, - PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionIndex, SessionInfo, - ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, ValidatorSignature, + vstaging, AuthorityDiscoveryId, BlockNumber, CandidateCommitments, CandidateEvent, + CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, + GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, + OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, + SessionIndex, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, + ValidatorSignature, }; /// For consistency we have the same capacity for all caches. We use 128 as we'll only need that @@ -63,6 +64,10 @@ pub(crate) struct RequestResultCache { LruCache<(Hash, ParaId, OccupiedCoreAssumption), Option>, version: LruCache, disputes: LruCache)>>, + unapplied_slashes: + LruCache>, + key_ownership_proof: + LruCache<(Hash, ValidatorId), Option>, } impl Default for RequestResultCache { @@ -90,6 +95,8 @@ impl Default for RequestResultCache { validation_code_hash: LruCache::new(DEFAULT_CACHE_CAP), version: LruCache::new(DEFAULT_CACHE_CAP), disputes: LruCache::new(DEFAULT_CACHE_CAP), + unapplied_slashes: LruCache::new(DEFAULT_CACHE_CAP), + key_ownership_proof: LruCache::new(DEFAULT_CACHE_CAP), } } } @@ -385,6 +392,44 @@ impl RequestResultCache { ) { self.disputes.put(relay_parent, value); } + + pub(crate) fn unapplied_slashes( + &mut self, + relay_parent: &Hash, + ) -> Option<&Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)>> { + self.unapplied_slashes.get(relay_parent) + } + + pub(crate) fn cache_unapplied_slashes( + &mut self, + relay_parent: Hash, + value: Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)>, + ) { + self.unapplied_slashes.put(relay_parent, value); + } + + pub(crate) fn key_ownership_proof( + &mut self, + key: (Hash, ValidatorId), + ) -> Option<&Option> { + self.key_ownership_proof.get(&key) + } + + pub(crate) fn cache_key_ownership_proof( + &mut self, + key: (Hash, ValidatorId), + value: Option, + ) { + self.key_ownership_proof.put(key, value); + } + + // This request is never cached, hence always returns `None`. + pub(crate) fn submit_report_dispute_lost( + &mut self, + _key: (Hash, vstaging::slashing::DisputeProof, vstaging::slashing::OpaqueKeyOwnershipProof), + ) -> Option<&Option<()>> { + None + } } pub(crate) enum RequestResult { @@ -422,4 +467,13 @@ pub(crate) enum RequestResult { ValidationCodeHash(Hash, ParaId, OccupiedCoreAssumption, Option), Version(Hash, u32), Disputes(Hash, Vec<(SessionIndex, CandidateHash, DisputeState)>), + UnappliedSlashes(Hash, Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)>), + KeyOwnershipProof(Hash, ValidatorId, Option), + // This is a request with side-effects. + SubmitReportDisputeLost( + Hash, + vstaging::slashing::DisputeProof, + vstaging::slashing::OpaqueKeyOwnershipProof, + Option<()>, + ), } diff --git a/node/core/runtime-api/src/lib.rs b/node/core/runtime-api/src/lib.rs index 57947ccdc1de..252bb21b0edb 100644 --- a/node/core/runtime-api/src/lib.rs +++ b/node/core/runtime-api/src/lib.rs @@ -157,6 +157,12 @@ where self.requests_cache.cache_version(relay_parent, version), Disputes(relay_parent, disputes) => self.requests_cache.cache_disputes(relay_parent, disputes), + UnappliedSlashes(relay_parent, unapplied_slashes) => + self.requests_cache.cache_unapplied_slashes(relay_parent, unapplied_slashes), + KeyOwnershipProof(relay_parent, validator_id, key_ownership_proof) => self + .requests_cache + .cache_key_ownership_proof((relay_parent, validator_id), key_ownership_proof), + SubmitReportDisputeLost(_, _, _, _) => {}, } } @@ -271,6 +277,17 @@ where .map(|sender| Request::ValidationCodeHash(para, assumption, sender)), Request::Disputes(sender) => query!(disputes(), sender).map(|sender| Request::Disputes(sender)), + Request::UnappliedSlashes(sender) => + query!(unapplied_slashes(), sender).map(|sender| Request::UnappliedSlashes(sender)), + Request::KeyOwnershipProof(validator_id, sender) => + query!(key_ownership_proof(validator_id), sender) + .map(|sender| Request::KeyOwnershipProof(validator_id, sender)), + Request::SubmitReportDisputeLost(dispute_proof, key_ownership_proof, sender) => + query!(submit_report_dispute_lost(dispute_proof, key_ownership_proof), sender).map( + |sender| { + Request::SubmitReportDisputeLost(dispute_proof, key_ownership_proof, sender) + }, + ), } } @@ -419,33 +436,38 @@ where Request::Authorities(sender) => query!(Authorities, authorities(), ver = 1, sender), Request::Validators(sender) => query!(Validators, validators(), ver = 1, sender), - Request::ValidatorGroups(sender) => - query!(ValidatorGroups, validator_groups(), ver = 1, sender), - Request::AvailabilityCores(sender) => - query!(AvailabilityCores, availability_cores(), ver = 1, sender), + Request::ValidatorGroups(sender) => { + query!(ValidatorGroups, validator_groups(), ver = 1, sender) + }, + Request::AvailabilityCores(sender) => { + query!(AvailabilityCores, availability_cores(), ver = 1, sender) + }, Request::PersistedValidationData(para, assumption, sender) => query!( PersistedValidationData, persisted_validation_data(para, assumption), ver = 1, sender ), - Request::AssumedValidationData(para, expected_persisted_validation_data_hash, sender) => + Request::AssumedValidationData(para, expected_persisted_validation_data_hash, sender) => { query!( AssumedValidationData, assumed_validation_data(para, expected_persisted_validation_data_hash), ver = 1, sender - ), + ) + }, Request::CheckValidationOutputs(para, commitments, sender) => query!( CheckValidationOutputs, check_validation_outputs(para, commitments), ver = 1, sender ), - Request::SessionIndexForChild(sender) => - query!(SessionIndexForChild, session_index_for_child(), ver = 1, sender), - Request::ValidationCode(para, assumption, sender) => - query!(ValidationCode, validation_code(para, assumption), ver = 1, sender), + Request::SessionIndexForChild(sender) => { + query!(SessionIndexForChild, session_index_for_child(), ver = 1, sender) + }, + Request::ValidationCode(para, assumption, sender) => { + query!(ValidationCode, validation_code(para, assumption), ver = 1, sender) + }, Request::ValidationCodeByHash(validation_code_hash, sender) => query!( ValidationCodeByHash, validation_code_by_hash(validation_code_hash), @@ -458,10 +480,12 @@ where ver = 1, sender ), - Request::CandidateEvents(sender) => - query!(CandidateEvents, candidate_events(), ver = 1, sender), - Request::SessionInfo(index, sender) => - query!(SessionInfo, session_info(index), ver = 2, sender), + Request::CandidateEvents(sender) => { + query!(CandidateEvents, candidate_events(), ver = 1, sender) + }, + Request::SessionInfo(index, sender) => { + query!(SessionInfo, session_info(index), ver = 2, sender) + }, Request::SessionExecutorParams(session_index, sender) => query!( SessionExecutorParams, session_executor_params(session_index), @@ -469,12 +493,15 @@ where sender ), Request::DmqContents(id, sender) => query!(DmqContents, dmq_contents(id), ver = 1, sender), - Request::InboundHrmpChannelsContents(id, sender) => - query!(InboundHrmpChannelsContents, inbound_hrmp_channels_contents(id), ver = 1, sender), - Request::CurrentBabeEpoch(sender) => - query!(CurrentBabeEpoch, current_epoch(), ver = 1, sender), - Request::FetchOnChainVotes(sender) => - query!(FetchOnChainVotes, on_chain_votes(), ver = 1, sender), + Request::InboundHrmpChannelsContents(id, sender) => { + query!(InboundHrmpChannelsContents, inbound_hrmp_channels_contents(id), ver = 1, sender) + }, + Request::CurrentBabeEpoch(sender) => { + query!(CurrentBabeEpoch, current_epoch(), ver = 1, sender) + }, + Request::FetchOnChainVotes(sender) => { + query!(FetchOnChainVotes, on_chain_votes(), ver = 1, sender) + }, Request::SubmitPvfCheckStatement(stmt, signature, sender) => { query!( SubmitPvfCheckStatement, @@ -486,9 +513,29 @@ where Request::PvfsRequirePrecheck(sender) => { query!(PvfsRequirePrecheck, pvfs_require_precheck(), ver = 2, sender) }, - Request::ValidationCodeHash(para, assumption, sender) => - query!(ValidationCodeHash, validation_code_hash(para, assumption), ver = 2, sender), - Request::Disputes(sender) => - query!(Disputes, disputes(), ver = Request::DISPUTES_RUNTIME_REQUIREMENT, sender), + Request::ValidationCodeHash(para, assumption, sender) => { + query!(ValidationCodeHash, validation_code_hash(para, assumption), ver = 2, sender) + }, + Request::Disputes(sender) => { + query!(Disputes, disputes(), ver = Request::DISPUTES_RUNTIME_REQUIREMENT, sender) + }, + Request::UnappliedSlashes(sender) => query!( + UnappliedSlashes, + unapplied_slashes(), + ver = Request::UNAPPLIED_SLASHES_RUNTIME_REQUIREMENT, + sender + ), + Request::KeyOwnershipProof(validator_id, sender) => query!( + KeyOwnershipProof, + key_ownership_proof(validator_id), + ver = Request::KEY_OWNERSHIP_PROOF_RUNTIME_REQUIREMENT, + sender + ), + Request::SubmitReportDisputeLost(dispute_proof, key_ownership_proof, sender) => query!( + SubmitReportDisputeLost, + submit_report_dispute_lost(dispute_proof, key_ownership_proof), + ver = Request::SUBMIT_REPORT_DISPUTE_LOST_RUNTIME_REQUIREMENT, + sender + ), } } diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index 689d210096ac..cd61236e6715 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -39,7 +39,7 @@ use polkadot_node_primitives::{ SignedDisputeStatement, SignedFullStatement, ValidationResult, }; use polkadot_primitives::{ - AuthorityDiscoveryId, BackedCandidate, BlockNumber, CandidateEvent, CandidateHash, + vstaging, AuthorityDiscoveryId, BackedCandidate, BlockNumber, CandidateEvent, CandidateHash, CandidateIndex, CandidateReceipt, CollatorId, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupIndex, GroupRotationInfo, Hash, Header as BlockHeader, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, MultiDisputeStatementSet, @@ -606,6 +606,24 @@ pub enum RuntimeApiRequest { ), /// Returns all on-chain disputes at given block number. Available in `v3`. Disputes(RuntimeApiSender)>>), + /// Returns a list of validators that lost a past session dispute and need to be slashed. + /// `VStaging` + UnappliedSlashes( + RuntimeApiSender>, + ), + /// Returns a merkle proof of a validator session key. + /// `VStaging` + KeyOwnershipProof( + ValidatorId, + RuntimeApiSender>, + ), + /// Submits an unsigned extrinsic to slash validator who lost a past session dispute. + /// `VStaging` + SubmitReportDisputeLost( + vstaging::slashing::DisputeProof, + vstaging::slashing::OpaqueKeyOwnershipProof, + RuntimeApiSender>, + ), } impl RuntimeApiRequest { @@ -614,8 +632,17 @@ impl RuntimeApiRequest { /// `Disputes` pub const DISPUTES_RUNTIME_REQUIREMENT: u32 = 3; + /// `UnappliedSlashes` + pub const UNAPPLIED_SLASHES_RUNTIME_REQUIREMENT: u32 = 4; + /// `ExecutorParams` pub const EXECUTOR_PARAMS_RUNTIME_REQUIREMENT: u32 = 4; + + /// `KeyOwnershipProof` + pub const KEY_OWNERSHIP_PROOF_RUNTIME_REQUIREMENT: u32 = 4; + + /// `SubmitReportDisputeLost` + pub const SUBMIT_REPORT_DISPUTE_LOST_RUNTIME_REQUIREMENT: u32 = 4; } /// A message to the Runtime API subsystem. diff --git a/node/subsystem-types/src/runtime_client.rs b/node/subsystem-types/src/runtime_client.rs index 5f8db5a8d0cb..2d6d7afcfd08 100644 --- a/node/subsystem-types/src/runtime_client.rs +++ b/node/subsystem-types/src/runtime_client.rs @@ -16,7 +16,7 @@ use async_trait::async_trait; use polkadot_primitives::{ - runtime_api::ParachainHost, Block, BlockNumber, CandidateCommitments, CandidateEvent, + runtime_api::ParachainHost, vstaging, Block, BlockNumber, CandidateCommitments, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id, InboundDownwardMessage, InboundHrmpMessage, OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, @@ -182,6 +182,34 @@ pub trait RuntimeApiSubsystemClient { at: Hash, ) -> Result)>, ApiError>; + /// Returns a list of validators that lost a past session dispute and need to be slashed. + /// + /// WARNING: This is a staging method! Do not use on production runtimes! + async fn unapplied_slashes( + &self, + at: Hash, + ) -> Result, ApiError>; + + /// Returns a merkle proof of a validator session key in a past session. + /// + /// WARNING: This is a staging method! Do not use on production runtimes! + async fn key_ownership_proof( + &self, + at: Hash, + validator_id: ValidatorId, + ) -> Result, ApiError>; + + /// Submits an unsigned extrinsic to slash validators who lost a dispute about + /// a candidate of a past session. + /// + /// WARNING: This is a staging method! Do not use on production runtimes! + async fn submit_report_dispute_lost( + &self, + at: Hash, + dispute_proof: vstaging::slashing::DisputeProof, + key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, + ) -> Result, ApiError>; + /// Get the execution environment parameter set by parent hash, if stored async fn session_executor_params( &self, @@ -374,4 +402,29 @@ where ) -> Result)>, ApiError> { self.runtime_api().disputes(at) } + + async fn unapplied_slashes( + &self, + at: Hash, + ) -> Result, ApiError> { + self.runtime_api().unapplied_slashes(at) + } + + async fn key_ownership_proof( + &self, + at: Hash, + validator_id: ValidatorId, + ) -> Result, ApiError> { + self.runtime_api().key_ownership_proof(at, validator_id) + } + + async fn submit_report_dispute_lost( + &self, + at: Hash, + dispute_proof: vstaging::slashing::DisputeProof, + key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, + ) -> Result, ApiError> { + self.runtime_api() + .submit_report_dispute_lost(at, dispute_proof, key_ownership_proof) + } } diff --git a/primitives/src/runtime_api.rs b/primitives/src/runtime_api.rs index f6269e60dd0c..c60ec8c92298 100644 --- a/primitives/src/runtime_api.rs +++ b/primitives/src/runtime_api.rs @@ -111,10 +111,10 @@ //! from the stable primitives. use crate::{ - BlockNumber, CandidateCommitments, CandidateEvent, CandidateHash, CommittedCandidateReceipt, - CoreState, DisputeState, ExecutorParams, GroupRotationInfo, OccupiedCoreAssumption, - PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionIndex, SessionInfo, - ValidatorId, ValidatorIndex, ValidatorSignature, + vstaging, BlockNumber, CandidateCommitments, CandidateEvent, CandidateHash, + CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, + OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, + SessionIndex, SessionInfo, ValidatorId, ValidatorIndex, ValidatorSignature, }; use parity_scale_codec::{Decode, Encode}; use polkadot_core_primitives as pcp; @@ -218,5 +218,23 @@ sp_api::decl_runtime_apis! { /// Returns execution parameters for the session. fn session_executor_params(session_index: SessionIndex) -> Option; + + /// Returns a list of validators that lost a past session dispute and need to be slashed. + #[api_version(5)] + fn unapplied_slashes() -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)>; + + /// Returns a merkle proof of a validator session key. + #[api_version(5)] + fn key_ownership_proof( + validator_id: ValidatorId, + ) -> Option; + + /// Submit an unsigned extrinsic to slash validators who lost a dispute about + /// a candidate of a past session. + #[api_version(5)] + fn submit_report_dispute_lost( + dispute_proof: vstaging::slashing::DisputeProof, + key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, + ) -> Option<()>; } } diff --git a/primitives/src/vstaging/mod.rs b/primitives/src/vstaging/mod.rs index c5ef4b56164d..6dc294fe86a6 100644 --- a/primitives/src/vstaging/mod.rs +++ b/primitives/src/vstaging/mod.rs @@ -18,6 +18,7 @@ // Put any primitives used by staging APIs functions here pub use crate::v4::*; +pub mod slashing; use sp_std::prelude::*; use parity_scale_codec::{Decode, Encode}; diff --git a/primitives/src/vstaging/slashing.rs b/primitives/src/vstaging/slashing.rs new file mode 100644 index 000000000000..c5782c7c2ab4 --- /dev/null +++ b/primitives/src/vstaging/slashing.rs @@ -0,0 +1,99 @@ +// Copyright 2017-2023 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Primitives types used for dispute slashing. + +use crate::v4::{CandidateHash, SessionIndex, ValidatorId, ValidatorIndex}; +use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; +use sp_std::{collections::btree_map::BTreeMap, vec::Vec}; + +/// The kind of the dispute offence. +#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, TypeInfo, Debug)] +pub enum SlashingOffenceKind { + /// A severe offence when a validator backed an invalid block. + #[codec(index = 0)] + ForInvalid, + /// A minor offence when a validator disputed a valid block. + #[codec(index = 1)] + AgainstValid, +} + +/// Timeslots should uniquely identify offences and are used for the offence +/// deduplication. +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Encode, Decode, TypeInfo, Debug)] +pub struct DisputesTimeSlot { + // The order of the fields matters for `derive(Ord)`. + /// Session index when the candidate was backed/included. + pub session_index: SessionIndex, + /// Candidate hash of the disputed candidate. + pub candidate_hash: CandidateHash, +} + +impl DisputesTimeSlot { + /// Create a new instance of `Self`. + pub fn new(session_index: SessionIndex, candidate_hash: CandidateHash) -> Self { + Self { session_index, candidate_hash } + } +} + +/// We store most of the information about a lost dispute on chain. This struct +/// is required to identify and verify it. +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, Debug)] +pub struct DisputeProof { + /// Time slot when the dispute occured. + pub time_slot: DisputesTimeSlot, + /// The dispute outcome. + pub kind: SlashingOffenceKind, + /// The index of the validator who lost a dispute. + pub validator_index: ValidatorIndex, + /// The parachain session key of the validator. + pub validator_id: ValidatorId, +} + +/// Slashes that are waiting to be applied once we have validator key +/// identification. +#[derive(Encode, Decode, TypeInfo, Debug, Clone)] +pub struct PendingSlashes { + /// Indices and keys of the validators who lost a dispute and are pending + /// slashes. + pub keys: BTreeMap, + /// The dispute outcome. + pub kind: SlashingOffenceKind, +} + +// TODO: can we reuse this type between BABE, GRANDPA and disputes? +/// An opaque type used to represent the key ownership proof at the runtime API +/// boundary. The inner value is an encoded representation of the actual key +/// ownership proof which will be parameterized when defining the runtime. At +/// the runtime API boundary this type is unknown and as such we keep this +/// opaque representation, implementors of the runtime API will have to make +/// sure that all usages of `OpaqueKeyOwnershipProof` refer to the same type. +#[derive(Decode, Encode, PartialEq, Eq, Debug, Clone, TypeInfo)] +pub struct OpaqueKeyOwnershipProof(Vec); +impl OpaqueKeyOwnershipProof { + /// Create a new `OpaqueKeyOwnershipProof` using the given encoded + /// representation. + pub fn new(inner: Vec) -> OpaqueKeyOwnershipProof { + OpaqueKeyOwnershipProof(inner) + } + + /// Try to decode this `OpaqueKeyOwnershipProof` into the given concrete key + /// ownership proof type. + pub fn decode(self) -> Option { + Decode::decode(&mut &self.0[..]).ok() + } +} diff --git a/runtime/parachains/src/disputes/slashing.rs b/runtime/parachains/src/disputes/slashing.rs index 58b452d6db07..daf10814df0f 100644 --- a/runtime/parachains/src/disputes/slashing.rs +++ b/runtime/parachains/src/disputes/slashing.rs @@ -49,8 +49,10 @@ use frame_support::{ weights::Weight, }; -use parity_scale_codec::{Decode, Encode}; -use primitives::{CandidateHash, SessionIndex, ValidatorId, ValidatorIndex}; +use primitives::{ + vstaging::slashing::{DisputeProof, DisputesTimeSlot, PendingSlashes, SlashingOffenceKind}, + CandidateHash, SessionIndex, ValidatorId, ValidatorIndex, +}; use scale_info::TypeInfo; use sp_runtime::{ traits::Convert, @@ -58,15 +60,12 @@ use sp_runtime::{ InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity, TransactionValidityError, ValidTransaction, }, - KeyTypeId, Perbill, RuntimeDebug, + KeyTypeId, Perbill, }; use sp_session::{GetSessionNumber, GetValidatorCount}; use sp_staking::offence::{DisableStrategy, Kind, Offence, OffenceError, ReportOffence}; use sp_std::{ - collections::{ - btree_map::{BTreeMap, Entry}, - btree_set::BTreeSet, - }, + collections::{btree_map::Entry, btree_set::BTreeSet}, prelude::*, }; @@ -92,23 +91,8 @@ impl BenchmarkingConfiguration for BenchConfig { const MAX_VALIDATORS: u32 = M; } -/// Timeslots should uniquely identify offences and are used for the offence -/// deduplication. -#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] -pub struct DisputesTimeSlot { - // The order of these matters for `derive(Ord)`. - session_index: SessionIndex, - candidate_hash: CandidateHash, -} - -impl DisputesTimeSlot { - pub fn new(session_index: SessionIndex, candidate_hash: CandidateHash) -> Self { - Self { session_index, candidate_hash } - } -} - /// An offence that is filed when a series of validators lost a dispute. -#[derive(RuntimeDebug, TypeInfo)] +#[derive(TypeInfo)] #[cfg_attr(feature = "std", derive(Clone, PartialEq, Eq))] pub struct SlashingOffence { /// The size of the validator set in that session. @@ -323,39 +307,6 @@ where } } -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug, TypeInfo)] -pub enum SlashingOffenceKind { - #[codec(index = 0)] - ForInvalid, - #[codec(index = 1)] - AgainstValid, -} - -/// We store most of the information about a lost dispute on chain. This struct -/// is required to identify and verify it. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] -pub struct DisputeProof { - /// Time slot when the dispute occured. - pub time_slot: DisputesTimeSlot, - /// The dispute outcome. - pub kind: SlashingOffenceKind, - /// The index of the validator who lost a dispute. - pub validator_index: ValidatorIndex, - /// The parachain session key of the validator. - pub validator_id: ValidatorId, -} - -/// Slashes that are waiting to be applied once we have validator key -/// identification. -#[derive(Encode, Decode, RuntimeDebug, TypeInfo)] -pub struct PendingSlashes { - /// Indices and keys of the validators who lost a dispute and are pending - /// slashes. - pub keys: BTreeMap, - /// The dispute outcome. - pub kind: SlashingOffenceKind, -} - /// A trait that defines methods to report an offence (after the slashing report /// has been validated) and for submitting a transaction to report a slash (from /// an offchain context). @@ -603,6 +554,17 @@ impl Pallet { let old_session = session_index - config.dispute_period - 1; let _ = >::clear_prefix(old_session, REMOVE_LIMIT, None); } + + pub(crate) fn unapplied_slashes() -> Vec<(SessionIndex, CandidateHash, PendingSlashes)> { + >::iter().collect() + } + + pub(crate) fn submit_unsigned_slashing_report( + dispute_proof: DisputeProof, + key_ownership_proof: ::KeyOwnerProof, + ) -> Option<()> { + T::HandleReports::submit_unsigned_slashing_report(dispute_proof, key_ownership_proof).ok() + } } /// Methods for the `ValidateUnsigned` implementation: diff --git a/runtime/parachains/src/disputes/slashing/benchmarking.rs b/runtime/parachains/src/disputes/slashing/benchmarking.rs index d7f2eeed1ac4..4debc41d3306 100644 --- a/runtime/parachains/src/disputes/slashing/benchmarking.rs +++ b/runtime/parachains/src/disputes/slashing/benchmarking.rs @@ -21,6 +21,7 @@ use frame_benchmarking::{benchmarks, whitelist_account}; use frame_support::traits::{OnFinalize, OnInitialize}; use frame_system::RawOrigin; use pallet_staking::testing_utils::create_validators; +use parity_scale_codec::Decode; use primitives::{Hash, PARACHAIN_KEY_TYPE_ID}; use sp_runtime::traits::{One, StaticLookup}; use sp_session::MembershipProof; diff --git a/runtime/parachains/src/runtime_api_impl/vstaging.rs b/runtime/parachains/src/runtime_api_impl/vstaging.rs index d01b543630c3..be7c58e3f24e 100644 --- a/runtime/parachains/src/runtime_api_impl/vstaging.rs +++ b/runtime/parachains/src/runtime_api_impl/vstaging.rs @@ -15,3 +15,32 @@ // along with Polkadot. If not, see . //! Put implementations of functions from staging APIs here. + +use crate::disputes; +use primitives::{vstaging, CandidateHash, DisputeState, SessionIndex}; +use sp_std::prelude::*; + +/// Implementation for `get_session_disputes` function from the runtime API +pub fn get_session_disputes( +) -> Vec<(SessionIndex, CandidateHash, DisputeState)> { + >::disputes() +} + +/// Implementation of `unapplied_slashes` runtime API +pub fn unapplied_slashes( +) -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)> { + >::unapplied_slashes() +} + +/// Implementation of `submit_report_dispute_lost` runtime API +pub fn submit_unsigned_slashing_report( + dispute_proof: vstaging::slashing::DisputeProof, + key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, +) -> Option<()> { + let key_ownership_proof = key_ownership_proof.decode()?; + + >::submit_unsigned_slashing_report( + dispute_proof, + key_ownership_proof, + ) +} diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index fa59d019e0e6..c91fa1948aad 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -23,11 +23,11 @@ use pallet_nis::WithMaximumOf; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::{ - AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, + vstaging, AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, Moment, Nonce, OccupiedCoreAssumption, PersistedValidationData, ScrapedOnChainVotes, SessionInfo, Signature, - ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, + ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, PARACHAIN_KEY_TYPE_ID, }; use runtime_common::{ assigned_slots, auctions, claims, crowdloan, impl_runtime_weights, impls::ToAuthor, @@ -1800,6 +1800,7 @@ sp_api::impl_runtime_apis! { } } + #[api_version(5)] impl primitives::runtime_api::ParachainHost for Runtime { fn validators() -> Vec { parachains_runtime_api_impl::validators::() @@ -1905,6 +1906,31 @@ sp_api::impl_runtime_apis! { fn disputes() -> Vec<(SessionIndex, CandidateHash, DisputeState)> { parachains_runtime_api_impl::get_session_disputes::() } + + fn unapplied_slashes( + ) -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)> { + runtime_parachains::runtime_api_impl::vstaging::unapplied_slashes::() + } + + fn key_ownership_proof( + validator_id: ValidatorId, + ) -> Option { + use parity_scale_codec::Encode; + + Historical::prove((PARACHAIN_KEY_TYPE_ID, validator_id)) + .map(|p| p.encode()) + .map(vstaging::slashing::OpaqueKeyOwnershipProof::new) + } + + fn submit_report_dispute_lost( + dispute_proof: vstaging::slashing::DisputeProof, + key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, + ) -> Option<()> { + runtime_parachains::runtime_api_impl::vstaging::submit_unsigned_slashing_report::( + dispute_proof, + key_ownership_proof, + ) + } } #[api_version(2)] diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 3ad7d7301766..7963e911d010 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -39,12 +39,12 @@ use pallet_session::historical as session_historical; use pallet_transaction_payment::{CurrencyAdapter, FeeDetails, RuntimeDispatchInfo}; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::{ - AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, + vstaging, AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, Moment, Nonce, OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionInfo, Signature, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, - ValidatorSignature, + ValidatorSignature, PARACHAIN_KEY_TYPE_ID, }; use runtime_common::{ assigned_slots, auctions, crowdloan, elections::OnChainAccuracy, impl_runtime_weights, @@ -58,7 +58,9 @@ use runtime_parachains::{ inclusion::{AggregateMessageOrigin, UmpQueueId}, initializer as parachains_initializer, origin as parachains_origin, paras as parachains_paras, paras_inherent as parachains_paras_inherent, reward_points as parachains_reward_points, - runtime_api_impl::v4 as parachains_runtime_api_impl, + runtime_api_impl::{ + v4 as parachains_runtime_api_impl, vstaging as parachains_runtime_api_impl_staging, + }, scheduler as parachains_scheduler, session_info as parachains_session_info, shared as parachains_shared, }; @@ -1472,6 +1474,7 @@ sp_api::impl_runtime_apis! { } } + #[api_version(5)] impl primitives::runtime_api::ParachainHost for Runtime { fn validators() -> Vec { parachains_runtime_api_impl::validators::() @@ -1577,6 +1580,31 @@ sp_api::impl_runtime_apis! { fn disputes() -> Vec<(SessionIndex, CandidateHash, DisputeState)> { parachains_runtime_api_impl::get_session_disputes::() } + + fn unapplied_slashes( + ) -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)> { + parachains_runtime_api_impl_staging::unapplied_slashes::() + } + + fn key_ownership_proof( + validator_id: ValidatorId, + ) -> Option { + use parity_scale_codec::Encode; + + Historical::prove((PARACHAIN_KEY_TYPE_ID, validator_id)) + .map(|p| p.encode()) + .map(vstaging::slashing::OpaqueKeyOwnershipProof::new) + } + + fn submit_report_dispute_lost( + dispute_proof: vstaging::slashing::DisputeProof, + key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, + ) -> Option<()> { + parachains_runtime_api_impl_staging::submit_unsigned_slashing_report::( + dispute_proof, + key_ownership_proof, + ) + } } impl beefy_primitives::BeefyApi for Runtime { From 6578355e2e706820ab488fa8194e6038d4b3fdb9 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Fri, 26 May 2023 09:12:13 -0700 Subject: [PATCH 09/28] Correcting git mishap --- roadmap/implementers-guide/src/glossary.md | 1 + runtime/common/src/integration_tests.rs | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/roadmap/implementers-guide/src/glossary.md b/roadmap/implementers-guide/src/glossary.md index 6a5920457f8b..e3c34458184b 100644 --- a/roadmap/implementers-guide/src/glossary.md +++ b/roadmap/implementers-guide/src/glossary.md @@ -25,6 +25,7 @@ exactly one downward message queue. - **Parachain:** A constituent chain secured by the Relay Chain's validators. - **Parachain Validators:** A subset of validators assigned during a period of time to back candidates for a specific parachain - **On-demand parachain:** A parachain which is scheduled on a pay-as-you-go basis. +- **Lease holding parachain:** A parachain possessing an active slot lease. The lease holder is assigned a single availability core for the duration of the lease, granting consistent blockspace scheduling at the rate 1 parablock per relay block. - **PDK (Parachain Development Kit):** A toolset that allows one to develop a parachain. Cumulus is a PDK. - **Preimage:** In our context, if `H(X) = Y` where `H` is a hash function and `Y` is the hash, then `X` is the hash preimage. - **Proof-of-Validity (PoV):** A stateless-client proof that a parachain candidate is valid, with respect to some validation function. diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index 49fbc7065631..aa4c91aa9999 100644 --- a/runtime/common/src/integration_tests.rs +++ b/runtime/common/src/integration_tests.rs @@ -415,7 +415,7 @@ fn basic_end_to_end_works() { )); // 2 sessions later they are parathreads (on-demand parachains) - run_to_session(2); + run_to_session(START_SESSION_INDEX + 2); assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); @@ -826,6 +826,7 @@ fn basic_swap_works() { Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); // First register 2 on-demand parachains with different data + let validation_code = test_validation_code(10); assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -859,7 +860,7 @@ fn basic_swap_works() { )); // 2 sessions later they are on-demand parachains - run_to_session(2); + run_to_session(START_SESSION_INDEX + 2); assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); @@ -987,6 +988,7 @@ fn parachain_swap_works() { Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); // First register 2 on-demand parachains with different data + let validation_code = test_validation_code(10); assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -1164,6 +1166,7 @@ fn crowdloan_ending_period_bid() { Balances::make_free_balance_be(&account_id(1), 1_000_000_000); Balances::make_free_balance_be(&account_id(2), 1_000_000_000); // First register 2 on-demand parachains + let validation_code = test_validation_code(10); assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -1198,7 +1201,7 @@ fn crowdloan_ending_period_bid() { )); // 2 sessions later they are on-demand parachains - run_to_session(2); + run_to_session(START_SESSION_INDEX + 2); assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); @@ -1531,6 +1534,7 @@ fn cant_bid_on_existing_lease_periods() { Balances::make_free_balance_be(&account_id(1), 1_000_000_000); // First register an on-demand parachain + let validation_code = test_validation_code(10); assert_ok!(Registrar::reserve(signed(1))); assert_ok!(Registrar::register( signed(1), @@ -1551,7 +1555,7 @@ fn cant_bid_on_existing_lease_periods() { )); // 2 sessions later they are on-demand parachains - run_to_session(2); + run_to_session(START_SESSION_INDEX + 2); // Open a crowdloan for Para 1 for slots 0-3 assert_ok!(Crowdloan::create( From 11690bad05db38825901b26135cbf910a742a600 Mon Sep 17 00:00:00 2001 From: Marcin S Date: Fri, 26 May 2023 12:59:32 -0400 Subject: [PATCH 10/28] Document usage of `gum` crate (#7294) * Document usage of gum crate * Small fix * Add some more basic info * Update node/gum/src/lib.rs Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com> * Update target docs --------- Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com> --- node/gum/README.md | 4 +++ node/gum/src/lib.rs | 83 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/node/gum/README.md b/node/gum/README.md index 9d2cc3168cdd..739ce3066ecb 100644 --- a/node/gum/README.md +++ b/node/gum/README.md @@ -3,6 +3,10 @@ "gum" to make `tracing::{warn,info,..}` and `mick-jaeger` stick together, to be cross referenced in grafana with zero additional loc in the source code. +## Usage + +See the crate docs (e.g. run `cargo doc --open`) for usage information! + ## Architecture Decision Record (ADR) ### Context diff --git a/node/gum/src/lib.rs b/node/gum/src/lib.rs index 8e65343d21e2..c2d62d98a671 100644 --- a/node/gum/src/lib.rs +++ b/node/gum/src/lib.rs @@ -20,6 +20,89 @@ //! A wrapper around `tracing` macros, to provide semi automatic //! `traceID` annotation without codebase turnover. +//! +//! # Usage +//! +//! The API follows the [`tracing` +//! API](https://docs.rs/tracing/latest/tracing/index.html), but the docs contain +//! more detail than you probably need to know, so here's the quick version. +//! +//! Most common usage is of the form: +//! +//! ```rs +//! gum::warn!( +//! target: LOG_TARGET, +//! worker_pid = %idle_worker.pid, +//! ?error, +//! "failed to send a handshake to the spawned worker", +//! ); +//! ``` +//! +//! ### Log levels +//! +//! All of the the [`tracing` macros](https://docs.rs/tracing/latest/tracing/index.html#macros) are available. +//! In decreasing order of priority they are: +//! +//! - `error!` +//! - `warn!` +//! - `info!` +//! - `debug!` +//! - `trace!` +//! +//! ### `target` +//! +//! The `LOG_TARGET` should be defined once per crate, e.g.: +//! +//! ```rs +//! const LOG_TARGET: &str = "parachain::pvf"; +//! ``` +//! +//! This should be of the form `::`, where the `::` is optional. +//! +//! The target and subtarget are used when debugging by specializing the Grafana Loki query to +//! filter specific subsystem logs. The more specific the query is the better when approaching the +//! query response limit. +//! +//! ### Fields +//! +//! Here's the rundown on how fields work: +//! +//! - Fields on spans and events are specified using the `syntax field_name = +//! field_value`. +//! - Local variables may be used as field values without an assignment, similar to +//! struct initializers. +//! - The `?` sigil is shorthand that specifies a field should be recorded using its +//! `fmt::Debug` implementation. +//! - The `%` sigil operates similarly, but indicates that the value should be +//! recorded using its `fmt::Display` implementation. +//! +//! For full details, again see [the tracing +//! docs](https://docs.rs/tracing/latest/tracing/index.html#recording-fields). +//! +//! ### Viewing traces +//! +//! When testing, +//! +//! ```rs +//! sp_tracing::init_for_tests(); +//! ``` +//! +//! should enable all trace logs. +//! +//! Alternatively, you can do: +//! +//! ```rs +//! sp_tracing::try_init_simple(); +//! ``` +//! +//! On the command line you specify `RUST_LOG` with the desired target and trace level: +//! +//! ```sh +//! RUST_LOG=parachain::pvf=trace cargo test +//! ``` +//! +//! On the other hand if you want all `parachain` logs, specify `parachain=trace`, which will also +//! include logs from `parachain::pvf` and other subtargets. pub use tracing::{enabled, event, Level}; From 97930a8b2cc211ecfb80f289c4c578a9157e6dc4 Mon Sep 17 00:00:00 2001 From: Francisco Aguirre Date: Fri, 26 May 2023 16:41:10 -0300 Subject: [PATCH 11/28] XCM: Fix issue with RequestUnlock (#7278) * XCM: Fix issue with RequestUnlock * Leave API changes for v4 * Fix clippy errors * Fix tests --------- Co-authored-by: parity-processbot <> --- xcm/xcm-builder/src/tests/locking.rs | 8 ++++-- xcm/xcm-executor/src/lib.rs | 15 ++++++++++- xcm/xcm-simulator/example/src/lib.rs | 26 +++++++++++++++++-- xcm/xcm-simulator/example/src/parachain.rs | 29 +++++++++++++++++----- 4 files changed, 67 insertions(+), 11 deletions(-) diff --git a/xcm/xcm-builder/src/tests/locking.rs b/xcm/xcm-builder/src/tests/locking.rs index 7c408c999b56..f4ef618ac0e7 100644 --- a/xcm/xcm-builder/src/tests/locking.rs +++ b/xcm/xcm-builder/src/tests/locking.rs @@ -136,6 +136,8 @@ fn remote_unlock_roundtrip_should_work() { set_send_price((Parent, 10u128)); // We have been told by Parachain #1 that Account #3 has locked funds which we can unlock. + // Previously, we must have sent a LockAsset instruction to Parachain #1. + // This caused Parachain #1 to send us the NoteUnlockable instruction. let message = Xcm(vec![NoteUnlockable { asset: (Parent, 100u128).into(), owner: (3u64,).into() }]); let hash = fake_message_hash(&message); @@ -169,8 +171,10 @@ fn remote_unlock_roundtrip_should_work() { assert_eq!(r, Outcome::Complete(Weight::from_parts(40, 40))); assert_eq!(asset_list((3u64,)), vec![(Parent, 990u128).into()]); - let expected_msg = - Xcm::<()>(vec![UnlockAsset { target: (3u64,).into(), asset: (Parent, 100u128).into() }]); + let expected_msg = Xcm::<()>(vec![UnlockAsset { + target: (Parent, Parachain(42), 3u64).into(), + asset: (Parent, 100u128).into(), + }]); let expected_hash = fake_message_hash(&expected_msg); assert_eq!(sent_xcm(), vec![((Parent, Parachain(1)).into(), expected_msg, expected_hash)]); assert_eq!( diff --git a/xcm/xcm-executor/src/lib.rs b/xcm/xcm-executor/src/lib.rs index ce9d3d4644e8..16f53fd6503b 100644 --- a/xcm/xcm-executor/src/lib.rs +++ b/xcm/xcm-executor/src/lib.rs @@ -876,9 +876,11 @@ impl XcmExecutor { RequestUnlock { asset, locker } => { let origin = *self.origin_ref().ok_or(XcmError::BadOrigin)?; let remote_asset = Self::try_reanchor(asset.clone(), &locker)?.0; + let remote_target = Self::try_reanchor_multilocation(origin, &locker)?.0; let reduce_ticket = Config::AssetLocker::prepare_reduce_unlockable(locker, asset, origin)?; - let msg = Xcm::<()>(vec![UnlockAsset { asset: remote_asset, target: origin }]); + let msg = + Xcm::<()>(vec![UnlockAsset { asset: remote_asset, target: remote_target }]); let (ticket, price) = validate_send::(locker, msg)?; self.take_fee(price, FeeReason::RequestUnlock)?; reduce_ticket.enact()?; @@ -990,6 +992,17 @@ impl XcmExecutor { Ok((asset, reanchor_context)) } + fn try_reanchor_multilocation( + location: MultiLocation, + destination: &MultiLocation, + ) -> Result<(MultiLocation, InteriorMultiLocation), XcmError> { + let reanchor_context = Config::UniversalLocation::get(); + let location = location + .reanchored(&destination, reanchor_context) + .map_err(|_| XcmError::ReanchorFailed)?; + Ok((location, reanchor_context)) + } + /// NOTE: Any assets which were unable to be reanchored are introduced into `failed_bin`. fn reanchored( mut assets: Assets, diff --git a/xcm/xcm-simulator/example/src/lib.rs b/xcm/xcm-simulator/example/src/lib.rs index 33a5b2c70a9f..bd5ebb0b472f 100644 --- a/xcm/xcm-simulator/example/src/lib.rs +++ b/xcm/xcm-simulator/example/src/lib.rs @@ -272,7 +272,7 @@ mod tests { } #[test] - fn remote_locking() { + fn remote_locking_and_unlocking() { MockNet::reset(); let locked_amount = 100; @@ -280,7 +280,7 @@ mod tests { ParaB::execute_with(|| { let message = Xcm(vec![LockAsset { asset: (Here, locked_amount).into(), - unlocker: (Parachain(1),).into(), + unlocker: Parachain(1).into(), }]); assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent, message.clone())); }); @@ -306,6 +306,28 @@ mod tests { }])] ); }); + + ParaB::execute_with(|| { + // Request unlocking part of the funds on the relay chain + let message = Xcm(vec![RequestUnlock { + asset: (Parent, locked_amount - 50).into(), + locker: Parent.into(), + }]); + assert_ok!(ParachainPalletXcm::send_xcm(Here, (Parent, Parachain(1)), message)); + }); + + Relay::execute_with(|| { + use pallet_balances::{BalanceLock, Reasons}; + // Lock is reduced + assert_eq!( + relay_chain::Balances::locks(&child_account_id(2)), + vec![BalanceLock { + id: *b"py/xcmlk", + amount: locked_amount - 50, + reasons: Reasons::All + }] + ); + }); } /// Scenario: diff --git a/xcm/xcm-simulator/example/src/parachain.rs b/xcm/xcm-simulator/example/src/parachain.rs index cea5a93ec0af..39a2e27470b2 100644 --- a/xcm/xcm-simulator/example/src/parachain.rs +++ b/xcm/xcm-simulator/example/src/parachain.rs @@ -17,9 +17,10 @@ //! Parachain runtime mock. use codec::{Decode, Encode}; +use core::marker::PhantomData; use frame_support::{ construct_runtime, parameter_types, - traits::{EnsureOrigin, EnsureOriginWithArg, Everything, EverythingBut, Nothing}, + traits::{ContainsPair, EnsureOrigin, EnsureOriginWithArg, Everything, EverythingBut, Nothing}, weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight}, }; @@ -27,7 +28,7 @@ use frame_system::EnsureRoot; use sp_core::{ConstU32, H256}; use sp_runtime::{ testing::Header, - traits::{Hash, IdentityLookup}, + traits::{Get, Hash, IdentityLookup}, AccountId32, }; use sp_std::prelude::*; @@ -238,7 +239,7 @@ impl Config for XcmConfig { type Trader = FixedRateOfFungible; type ResponseHandler = (); type AssetTrap = (); - type AssetLocker = (); + type AssetLocker = PolkadotXcm; type AssetExchanger = (); type AssetClaims = (); type SubscriptionService = (); @@ -325,7 +326,7 @@ pub mod mock_msg_queue { Ok(xcm) => { let location = (Parent, Parachain(sender.into())); match T::XcmExecutor::execute_xcm(location, xcm, message_hash, max_weight) { - Outcome::Error(e) => (Err(e.clone()), Event::Fail(Some(hash), e)), + Outcome::Error(e) => (Err(e), Event::Fail(Some(hash), e)), Outcome::Complete(w) => (Ok(w), Event::Success(Some(hash))), // As far as the caller is concerned, this was dispatched without error, so // we just report the weight used. @@ -349,7 +350,7 @@ pub mod mock_msg_queue { let _ = XcmpMessageFormat::decode(&mut data_ref) .expect("Simulator encodes with versioned xcm format; qed"); - let mut remaining_fragments = &data_ref[..]; + let mut remaining_fragments = data_ref; while !remaining_fragments.is_empty() { if let Ok(xcm) = VersionedXcm::::decode(&mut remaining_fragments) @@ -403,6 +404,22 @@ parameter_types! { pub ReachableDest: Option = Some(Parent.into()); } +pub struct TrustedLockerCase(PhantomData); +impl> ContainsPair + for TrustedLockerCase +{ + fn contains(origin: &MultiLocation, asset: &MultiAsset) -> bool { + let (o, a) = T::get(); + a.matches(asset) && &o == origin + } +} + +parameter_types! { + pub RelayTokenForRelay: (MultiLocation, MultiAssetFilter) = (Parent.into(), Wild(AllOf { id: Concrete(Parent.into()), fun: WildFungible })); +} + +pub type TrustedLockers = TrustedLockerCase; + impl pallet_xcm::Config for Runtime { type RuntimeEvent = RuntimeEvent; type SendXcmOrigin = EnsureXcmOrigin; @@ -420,7 +437,7 @@ impl pallet_xcm::Config for Runtime { type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion; type Currency = Balances; type CurrencyMatcher = (); - type TrustedLockers = (); + type TrustedLockers = TrustedLockers; type SovereignAccountOf = LocationToAccountId; type MaxLockers = ConstU32<8>; type MaxRemoteLockConsumers = ConstU32<0>; From 4175aa544e1dac72da9295700848a87cc3ed0809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 29 May 2023 09:55:04 +0100 Subject: [PATCH 12/28] Companion for Substrate#14228 (#7295) * Companion for Substrate#14228 https://github.com/paritytech/substrate/pull/14228 * update lockfile for {"substrate"} --------- Co-authored-by: parity-processbot <> --- Cargo.lock | 398 ++++++++++----------- parachain/test-parachains/adder/build.rs | 6 +- parachain/test-parachains/halt/build.rs | 6 +- parachain/test-parachains/undying/build.rs | 6 +- 4 files changed, 207 insertions(+), 209 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c4df5edb58d..53b1f6e698ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "hash-db", "log", @@ -1570,7 +1570,7 @@ dependencies = [ "cfg-if", "fiat-crypto", "packed_simd_2", - "platforms 3.0.2", + "platforms", "subtle", "zeroize", ] @@ -2504,7 +2504,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", ] @@ -2527,7 +2527,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-support-procedural", @@ -2552,7 +2552,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "Inflector", "array-bytes", @@ -2599,7 +2599,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2610,7 +2610,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2627,7 +2627,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -2656,7 +2656,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-recursion", "futures", @@ -2677,7 +2677,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "bitflags", "environmental", @@ -2711,7 +2711,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "Inflector", "cfg-expr", @@ -2727,7 +2727,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2739,7 +2739,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro2", "quote", @@ -2749,7 +2749,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2775,7 +2775,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -2787,7 +2787,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "cfg-if", "frame-support", @@ -2806,7 +2806,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -2821,7 +2821,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "sp-api", @@ -2830,7 +2830,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "parity-scale-codec", @@ -3012,7 +3012,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "chrono", "frame-election-provider-support", @@ -4678,15 +4678,6 @@ dependencies = [ "value-bag", ] -[[package]] -name = "lru" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" -dependencies = [ - "hashbrown 0.12.3", -] - [[package]] name = "lru" version = "0.9.0" @@ -4932,7 +4923,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "log", @@ -4951,7 +4942,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "anyhow", "jsonrpsee", @@ -5534,7 +5525,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5549,7 +5540,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -5565,7 +5556,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -5579,7 +5570,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5603,7 +5594,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5623,7 +5614,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5642,7 +5633,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5657,7 +5648,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -5676,7 +5667,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5700,7 +5691,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5718,7 +5709,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5737,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5754,7 +5745,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5771,7 +5762,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5789,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5812,7 +5803,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5825,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5843,7 +5834,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5861,7 +5852,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5884,7 +5875,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5900,7 +5891,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5920,7 +5911,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5937,7 +5928,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5954,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5973,7 +5964,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -5990,7 +5981,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6006,7 +5997,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6022,7 +6013,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -6039,7 +6030,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6059,7 +6050,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6070,7 +6061,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -6087,7 +6078,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6111,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6128,7 +6119,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6143,7 +6134,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6161,7 +6152,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6176,7 +6167,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6195,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6212,7 +6203,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -6233,7 +6224,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6249,7 +6240,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -6263,7 +6254,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6286,7 +6277,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6297,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "log", "sp-arithmetic", @@ -6306,7 +6297,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "sp-api", @@ -6315,7 +6306,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6332,7 +6323,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6347,7 +6338,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6365,7 +6356,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6384,7 +6375,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-support", "frame-system", @@ -6400,7 +6391,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6416,7 +6407,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6428,7 +6419,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6445,7 +6436,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6460,7 +6451,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6476,7 +6467,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6491,7 +6482,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-benchmarking", "frame-support", @@ -6842,12 +6833,6 @@ version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" -[[package]] -name = "platforms" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" - [[package]] name = "platforms" version = "3.0.2" @@ -9626,7 +9611,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "log", "sp-core", @@ -9637,7 +9622,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures", @@ -9666,7 +9651,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "futures-timer", @@ -9689,7 +9674,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9704,7 +9689,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9723,7 +9708,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9734,7 +9719,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "chrono", @@ -9774,7 +9759,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "fnv", "futures", @@ -9801,7 +9786,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "hash-db", "kvdb", @@ -9827,7 +9812,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures", @@ -9852,7 +9837,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "fork-tree", @@ -9888,7 +9873,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "jsonrpsee", @@ -9910,7 +9895,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "async-channel", @@ -9946,7 +9931,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "jsonrpsee", @@ -9965,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9978,7 +9963,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -10018,7 +10003,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "finality-grandpa", "futures", @@ -10038,7 +10023,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures", @@ -10061,9 +10046,9 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ - "lru 0.8.1", + "lru 0.10.0", "parity-scale-codec", "parking_lot 0.12.1", "sc-executor-common", @@ -10083,7 +10068,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10095,7 +10080,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "anyhow", "cfg-if", @@ -10113,7 +10098,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ansi_term", "futures", @@ -10129,7 +10114,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10143,7 +10128,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "async-channel", @@ -10158,7 +10143,7 @@ dependencies = [ "libp2p", "linked_hash_set", "log", - "lru 0.8.1", + "lru 0.10.0", "mockall", "parity-scale-codec", "parking_lot 0.12.1", @@ -10188,7 +10173,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-channel", "cid", @@ -10209,7 +10194,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "async-trait", @@ -10237,14 +10222,14 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ahash 0.8.2", "futures", "futures-timer", "libp2p", "log", - "lru 0.8.1", + "lru 0.10.0", "sc-network", "sc-network-common", "sc-peerset", @@ -10256,7 +10241,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "async-channel", @@ -10279,7 +10264,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "async-channel", @@ -10289,7 +10274,7 @@ dependencies = [ "futures-timer", "libp2p", "log", - "lru 0.8.1", + "lru 0.10.0", "mockall", "parity-scale-codec", "prost 0.11.0", @@ -10314,7 +10299,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "futures", @@ -10333,7 +10318,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "bytes", @@ -10364,7 +10349,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "libp2p-identity", @@ -10380,7 +10365,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10389,7 +10374,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "jsonrpsee", @@ -10420,7 +10405,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10439,7 +10424,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "http", "jsonrpsee", @@ -10454,7 +10439,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "futures", @@ -10480,7 +10465,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "directories", @@ -10546,7 +10531,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "log", "parity-scale-codec", @@ -10557,7 +10542,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "clap 4.2.5", "fs4", @@ -10573,7 +10558,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10592,7 +10577,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "libc", @@ -10611,7 +10596,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "chrono", "futures", @@ -10630,7 +10615,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ansi_term", "atty", @@ -10661,7 +10646,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10672,7 +10657,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures", @@ -10699,7 +10684,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures", @@ -10713,7 +10698,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-channel", "futures", @@ -11261,7 +11246,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "hash-db", "log", @@ -11281,7 +11266,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "Inflector", "blake2", @@ -11295,7 +11280,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -11308,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "integer-sqrt", "num-traits", @@ -11322,7 +11307,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -11335,7 +11320,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "sp-api", @@ -11347,11 +11332,11 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "log", - "lru 0.8.1", + "lru 0.10.0", "parity-scale-codec", "parking_lot 0.12.1", "sp-api", @@ -11365,7 +11350,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures", @@ -11380,7 +11365,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "parity-scale-codec", @@ -11398,7 +11383,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "parity-scale-codec", @@ -11419,7 +11404,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11438,7 +11423,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "finality-grandpa", "log", @@ -11456,7 +11441,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -11468,7 +11453,7 @@ dependencies = [ [[package]] name = "sp-core" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "bitflags", @@ -11512,7 +11497,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "blake2b_simd", "byteorder", @@ -11526,7 +11511,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro2", "quote", @@ -11537,7 +11522,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11546,7 +11531,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro2", "quote", @@ -11556,7 +11541,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "environmental", "parity-scale-codec", @@ -11567,7 +11552,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11582,7 +11567,7 @@ dependencies = [ [[package]] name = "sp-io" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "bytes", "ed25519", @@ -11608,7 +11593,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "lazy_static", "sp-core", @@ -11619,7 +11604,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "parity-scale-codec", @@ -11633,7 +11618,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11642,7 +11627,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11653,7 +11638,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11671,7 +11656,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -11685,7 +11670,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "sp-api", "sp-core", @@ -11695,7 +11680,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "backtrace", "lazy_static", @@ -11705,7 +11690,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "rustc-hash", "serde", @@ -11715,7 +11700,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "either", "hash256-std-hasher", @@ -11737,7 +11722,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11755,7 +11740,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "Inflector", "proc-macro-crate", @@ -11767,7 +11752,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -11781,7 +11766,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -11794,7 +11779,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "hash-db", "log", @@ -11814,7 +11799,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "log", "parity-scale-codec", @@ -11832,12 +11817,12 @@ dependencies = [ [[package]] name = "sp-std" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" [[package]] name = "sp-storage" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11850,7 +11835,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "futures-timer", @@ -11865,7 +11850,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "sp-std", @@ -11877,7 +11862,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "sp-api", "sp-runtime", @@ -11886,7 +11871,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "log", @@ -11902,7 +11887,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11925,7 +11910,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11942,7 +11927,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11953,7 +11938,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11967,7 +11952,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "parity-scale-codec", "scale-info", @@ -12208,15 +12193,15 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ - "platforms 2.0.0", + "platforms", ] [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12235,7 +12220,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "hyper", "log", @@ -12247,7 +12232,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "jsonrpsee", @@ -12260,7 +12245,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "jsonrpsee", "log", @@ -12279,7 +12264,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "array-bytes", "async-trait", @@ -12305,7 +12290,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12315,7 +12300,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12326,12 +12311,13 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", "filetime", + "parity-wasm", "sp-maybe-compressed-blob", "strum", "tempfile", @@ -13170,7 +13156,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f4cb21c876d4ce19eb9ef09c39bebf83ba01d16d" +source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" dependencies = [ "async-trait", "clap 4.2.5", diff --git a/parachain/test-parachains/adder/build.rs b/parachain/test-parachains/adder/build.rs index d6377f3d5a5a..6bb34ead1b86 100644 --- a/parachain/test-parachains/adder/build.rs +++ b/parachain/test-parachains/adder/build.rs @@ -17,5 +17,9 @@ use substrate_wasm_builder::WasmBuilder; fn main() { - WasmBuilder::new().with_current_project().export_heap_base().build() + WasmBuilder::new() + .with_current_project() + .export_heap_base() + .disable_runtime_version_section_check() + .build() } diff --git a/parachain/test-parachains/halt/build.rs b/parachain/test-parachains/halt/build.rs index aabf553cedd9..cb3370c150d4 100644 --- a/parachain/test-parachains/halt/build.rs +++ b/parachain/test-parachains/halt/build.rs @@ -17,7 +17,11 @@ use substrate_wasm_builder::WasmBuilder; fn main() { - WasmBuilder::new().with_current_project().export_heap_base().build(); + WasmBuilder::new() + .with_current_project() + .export_heap_base() + .disable_runtime_version_section_check() + .build(); enable_alloc_error_handler(); } diff --git a/parachain/test-parachains/undying/build.rs b/parachain/test-parachains/undying/build.rs index d6377f3d5a5a..6bb34ead1b86 100644 --- a/parachain/test-parachains/undying/build.rs +++ b/parachain/test-parachains/undying/build.rs @@ -17,5 +17,9 @@ use substrate_wasm_builder::WasmBuilder; fn main() { - WasmBuilder::new().with_current_project().export_heap_base().build() + WasmBuilder::new() + .with_current_project() + .export_heap_base() + .disable_runtime_version_section_check() + .build() } From 4bd6371a81a0cc6bf3839ced13f8f5616a540416 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Mon, 29 May 2023 14:32:42 +0300 Subject: [PATCH 13/28] Companion for #14237: Use latest sp-crates (#7300) * To revert: Update substrate branch to "lexnv/bump_sp_crates" Signed-off-by: Alexandru Vasile * Revert "To revert: Update substrate branch to "lexnv/bump_sp_crates"" This reverts commit 5f1db84eac4a226c37b7f6ce6ee19b49dc7e2008. * Update cargo lock Signed-off-by: Alexandru Vasile * Update cargo.lock Signed-off-by: Alexandru Vasile * Update cargo.lock Signed-off-by: Alexandru Vasile --------- Signed-off-by: Alexandru Vasile --- Cargo.lock | 474 ++++++++++++++++++++++++----------------------------- 1 file changed, 211 insertions(+), 263 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 53b1f6e698ba..c06bf426f11b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "hash-db", "log", @@ -1924,12 +1924,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" -[[package]] -name = "downcast-rs" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" - [[package]] name = "dtoa" version = "1.0.2" @@ -2504,7 +2498,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", ] @@ -2527,7 +2521,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-support-procedural", @@ -2552,7 +2546,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "Inflector", "array-bytes", @@ -2599,7 +2593,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2610,7 +2604,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2627,7 +2621,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -2656,7 +2650,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-recursion", "futures", @@ -2677,7 +2671,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "bitflags", "environmental", @@ -2711,7 +2705,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "Inflector", "cfg-expr", @@ -2727,7 +2721,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2739,7 +2733,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro2", "quote", @@ -2749,7 +2743,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2775,7 +2769,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -2787,7 +2781,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "cfg-if", "frame-support", @@ -2806,7 +2800,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -2821,7 +2815,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "sp-api", @@ -2830,7 +2824,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "parity-scale-codec", @@ -3012,7 +3006,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "chrono", "frame-election-provider-support", @@ -4100,12 +4094,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" -[[package]] -name = "libm" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" - [[package]] name = "libp2p" version = "0.51.3" @@ -4848,12 +4836,6 @@ dependencies = [ "hash-db", ] -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - [[package]] name = "merlin" version = "2.0.1" @@ -4923,7 +4905,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "log", @@ -4942,7 +4924,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "anyhow", "jsonrpsee", @@ -5519,13 +5501,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282" dependencies = [ "cfg-if", - "libm 0.1.4", + "libm", ] [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5540,7 +5522,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -5556,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -5570,7 +5552,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5594,7 +5576,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5614,7 +5596,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5633,7 +5615,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5648,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -5667,7 +5649,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5691,7 +5673,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5709,7 +5691,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5728,7 +5710,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5745,7 +5727,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5762,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5780,7 +5762,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5803,7 +5785,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5816,7 +5798,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5834,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5852,7 +5834,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5875,7 +5857,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5891,7 +5873,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5911,7 +5893,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5928,7 +5910,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5945,7 +5927,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5964,7 +5946,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5981,7 +5963,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -5997,7 +5979,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6013,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -6030,7 +6012,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6050,7 +6032,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6061,7 +6043,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -6078,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6102,7 +6084,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6119,7 +6101,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6134,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6152,7 +6134,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6167,7 +6149,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6186,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6203,7 +6185,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -6224,7 +6206,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6240,7 +6222,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -6254,7 +6236,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6277,7 +6259,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6288,7 +6270,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "log", "sp-arithmetic", @@ -6297,7 +6279,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "sp-api", @@ -6306,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6323,7 +6305,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6338,7 +6320,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6356,7 +6338,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6375,7 +6357,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-support", "frame-system", @@ -6391,7 +6373,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6407,7 +6389,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6419,7 +6401,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6436,7 +6418,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6451,7 +6433,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6467,7 +6449,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -6482,7 +6464,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-benchmarking", "frame-support", @@ -8660,13 +8642,13 @@ dependencies = [ [[package]] name = "proc-macro-warning" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e25495609acefcaeb5052edad8ac91017c9bc98fc38ef321ed524e50b68bac" +checksum = "70550716265d1ec349c41f70dd4f964b4fd88394efe4405f0c1da679c4799a07" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.16", ] [[package]] @@ -9611,7 +9593,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "log", "sp-core", @@ -9622,7 +9604,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures", @@ -9651,7 +9633,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "futures-timer", @@ -9674,7 +9656,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9689,7 +9671,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9708,7 +9690,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9719,7 +9701,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "chrono", @@ -9759,7 +9741,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "fnv", "futures", @@ -9786,7 +9768,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "hash-db", "kvdb", @@ -9812,7 +9794,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures", @@ -9837,7 +9819,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "fork-tree", @@ -9873,7 +9855,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "jsonrpsee", @@ -9895,7 +9877,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "async-channel", @@ -9931,7 +9913,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "jsonrpsee", @@ -9950,7 +9932,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9963,7 +9945,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -10003,7 +9985,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "finality-grandpa", "futures", @@ -10023,7 +10005,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures", @@ -10046,7 +10028,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "lru 0.10.0", "parity-scale-codec", @@ -10068,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10080,7 +10062,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "anyhow", "cfg-if", @@ -10098,7 +10080,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ansi_term", "futures", @@ -10114,7 +10096,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10128,7 +10110,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "async-channel", @@ -10173,7 +10155,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-channel", "cid", @@ -10194,7 +10176,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "async-trait", @@ -10222,7 +10204,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ahash 0.8.2", "futures", @@ -10241,7 +10223,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "async-channel", @@ -10264,7 +10246,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "async-channel", @@ -10299,7 +10281,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "futures", @@ -10318,7 +10300,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "bytes", @@ -10349,7 +10331,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "libp2p-identity", @@ -10365,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10374,7 +10356,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "jsonrpsee", @@ -10405,7 +10387,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10424,7 +10406,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "http", "jsonrpsee", @@ -10439,7 +10421,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "futures", @@ -10465,7 +10447,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "directories", @@ -10531,7 +10513,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "log", "parity-scale-codec", @@ -10542,7 +10524,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "clap 4.2.5", "fs4", @@ -10558,7 +10540,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10577,7 +10559,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "libc", @@ -10596,7 +10578,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "chrono", "futures", @@ -10615,7 +10597,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ansi_term", "atty", @@ -10646,7 +10628,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10657,7 +10639,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures", @@ -10684,7 +10666,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures", @@ -10698,7 +10680,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-channel", "futures", @@ -11246,7 +11228,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "hash-db", "log", @@ -11266,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "Inflector", "blake2", @@ -11279,8 +11261,8 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -11292,8 +11274,8 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "integer-sqrt", "num-traits", @@ -11307,7 +11289,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -11320,7 +11302,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "sp-api", @@ -11332,7 +11314,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "log", @@ -11350,7 +11332,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures", @@ -11365,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "parity-scale-codec", @@ -11383,7 +11365,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "parity-scale-codec", @@ -11404,7 +11386,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11423,7 +11405,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "finality-grandpa", "log", @@ -11441,7 +11423,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -11452,8 +11434,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "bitflags", @@ -11496,8 +11478,8 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "blake2b_simd", "byteorder", @@ -11510,8 +11492,8 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro2", "quote", @@ -11522,7 +11504,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11530,8 +11512,8 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro2", "quote", @@ -11540,8 +11522,8 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "0.14.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "environmental", "parity-scale-codec", @@ -11552,7 +11534,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11566,8 +11548,8 @@ dependencies = [ [[package]] name = "sp-io" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "bytes", "ed25519", @@ -11592,8 +11574,8 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "lazy_static", "sp-core", @@ -11603,8 +11585,8 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "0.14.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "parity-scale-codec", @@ -11618,7 +11600,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11627,7 +11609,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11638,7 +11620,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11656,7 +11638,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -11670,7 +11652,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "sp-api", "sp-core", @@ -11679,8 +11661,8 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "backtrace", "lazy_static", @@ -11690,7 +11672,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "rustc-hash", "serde", @@ -11699,8 +11681,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "either", "hash256-std-hasher", @@ -11721,8 +11703,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11739,8 +11721,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "Inflector", "proc-macro-crate", @@ -11752,7 +11734,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -11766,7 +11748,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -11778,8 +11760,8 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "0.14.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "hash-db", "log", @@ -11799,7 +11781,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "log", "parity-scale-codec", @@ -11816,13 +11798,13 @@ dependencies = [ [[package]] name = "sp-std" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" [[package]] name = "sp-storage" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11835,7 +11817,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "futures-timer", @@ -11849,8 +11831,8 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "sp-std", @@ -11862,7 +11844,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "sp-api", "sp-runtime", @@ -11871,7 +11853,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "log", @@ -11886,8 +11868,8 @@ dependencies = [ [[package]] name = "sp-trie" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11909,8 +11891,8 @@ dependencies = [ [[package]] name = "sp-version" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11926,8 +11908,8 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "4.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11937,22 +11919,21 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "anyhow", "impl-trait-for-tuples", "log", "parity-scale-codec", "sp-std", - "wasmi", "wasmtime", ] [[package]] name = "sp-weights" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "parity-scale-codec", "scale-info", @@ -12193,7 +12174,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "platforms", ] @@ -12201,7 +12182,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12220,7 +12201,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "hyper", "log", @@ -12232,7 +12213,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "jsonrpsee", @@ -12245,7 +12226,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "jsonrpsee", "log", @@ -12264,7 +12245,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "array-bytes", "async-trait", @@ -12290,7 +12271,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12300,7 +12281,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12311,7 +12292,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "ansi_term", "build-helper", @@ -13156,7 +13137,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b8d7dd51b0a48314ceb4440a0ad4026277712450" +source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" dependencies = [ "async-trait", "clap 4.2.5", @@ -13612,39 +13593,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmi" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422" -dependencies = [ - "parity-wasm", - "wasmi-validation", - "wasmi_core", -] - -[[package]] -name = "wasmi-validation" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867b" -dependencies = [ - "parity-wasm", -] - -[[package]] -name = "wasmi_core" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7" -dependencies = [ - "downcast-rs", - "libm 0.2.1", - "memory_units", - "num-rational", - "num-traits", -] - [[package]] name = "wasmparser" version = "0.102.0" From eea39f7f1df465d245d4c5eb656cd4a0b960ff96 Mon Sep 17 00:00:00 2001 From: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> Date: Mon, 29 May 2023 18:24:14 +0100 Subject: [PATCH 14/28] bounded-collections bump to 0.1.7 (#7305) * bounded-collections bump to 0.1.7 Companion for: paritytech/substrate#14225 * update lockfile for {"substrate"} --------- Co-authored-by: parity-processbot <> --- Cargo.lock | 372 +++++++++++++++++++------------------- parachain/Cargo.toml | 2 +- xcm/Cargo.toml | 2 +- xcm/pallet-xcm/Cargo.toml | 2 +- 4 files changed, 189 insertions(+), 189 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c06bf426f11b..29254a7ffba2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "hash-db", "log", @@ -679,9 +679,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bounded-collections" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a071c348a5ef6da1d3a87166b408170b46002382b1dda83992b5c2208cefb370" +checksum = "07fbd1d11282a1eb134d3c3b7cf8ce213b5161c6e5f73fb1b98618482c606b64" dependencies = [ "log", "parity-scale-codec", @@ -2498,7 +2498,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", ] @@ -2521,7 +2521,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-support-procedural", @@ -2546,7 +2546,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "Inflector", "array-bytes", @@ -2593,7 +2593,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2604,7 +2604,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2621,7 +2621,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -2650,7 +2650,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-recursion", "futures", @@ -2671,7 +2671,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "bitflags", "environmental", @@ -2705,7 +2705,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "Inflector", "cfg-expr", @@ -2721,7 +2721,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2733,7 +2733,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro2", "quote", @@ -2743,7 +2743,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2769,7 +2769,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -2781,7 +2781,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "cfg-if", "frame-support", @@ -2800,7 +2800,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -2815,7 +2815,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "sp-api", @@ -2824,7 +2824,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "parity-scale-codec", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "chrono", "frame-election-provider-support", @@ -4905,7 +4905,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "log", @@ -4924,7 +4924,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "anyhow", "jsonrpsee", @@ -5507,7 +5507,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5522,7 +5522,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -5538,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -5552,7 +5552,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5576,7 +5576,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5596,7 +5596,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5615,7 +5615,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5630,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -5649,7 +5649,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5673,7 +5673,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5691,7 +5691,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5710,7 +5710,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5727,7 +5727,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5744,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5762,7 +5762,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5785,7 +5785,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5798,7 +5798,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5816,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5834,7 +5834,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5857,7 +5857,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5873,7 +5873,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5893,7 +5893,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5927,7 +5927,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5946,7 +5946,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5963,7 +5963,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5979,7 +5979,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -5995,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -6012,7 +6012,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6032,7 +6032,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6043,7 +6043,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6084,7 +6084,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6116,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6134,7 +6134,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6149,7 +6149,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,7 +6185,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -6206,7 +6206,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6222,7 +6222,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -6236,7 +6236,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6259,7 +6259,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6270,7 +6270,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "log", "sp-arithmetic", @@ -6279,7 +6279,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "sp-api", @@ -6288,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6305,7 +6305,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6320,7 +6320,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6338,7 +6338,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6357,7 +6357,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-support", "frame-system", @@ -6373,7 +6373,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6389,7 +6389,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6401,7 +6401,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6418,7 +6418,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6433,7 +6433,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6449,7 +6449,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -6464,7 +6464,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-benchmarking", "frame-support", @@ -9593,7 +9593,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "log", "sp-core", @@ -9604,7 +9604,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures", @@ -9633,7 +9633,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "futures-timer", @@ -9656,7 +9656,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9671,7 +9671,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9690,7 +9690,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9701,7 +9701,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "chrono", @@ -9741,7 +9741,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "fnv", "futures", @@ -9768,7 +9768,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "hash-db", "kvdb", @@ -9794,7 +9794,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures", @@ -9819,7 +9819,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "fork-tree", @@ -9855,7 +9855,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "jsonrpsee", @@ -9877,7 +9877,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "async-channel", @@ -9913,7 +9913,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "jsonrpsee", @@ -9932,7 +9932,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9945,7 +9945,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -9985,7 +9985,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "finality-grandpa", "futures", @@ -10005,7 +10005,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures", @@ -10028,7 +10028,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "lru 0.10.0", "parity-scale-codec", @@ -10050,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10062,7 +10062,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "anyhow", "cfg-if", @@ -10080,7 +10080,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ansi_term", "futures", @@ -10096,7 +10096,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10110,7 +10110,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "async-channel", @@ -10155,7 +10155,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-channel", "cid", @@ -10176,7 +10176,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "async-trait", @@ -10204,7 +10204,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ahash 0.8.2", "futures", @@ -10223,7 +10223,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "async-channel", @@ -10246,7 +10246,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "async-channel", @@ -10281,7 +10281,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "futures", @@ -10300,7 +10300,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "bytes", @@ -10331,7 +10331,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "libp2p-identity", @@ -10347,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10356,7 +10356,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "jsonrpsee", @@ -10387,7 +10387,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10406,7 +10406,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "http", "jsonrpsee", @@ -10421,7 +10421,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "futures", @@ -10447,7 +10447,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "directories", @@ -10513,7 +10513,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "log", "parity-scale-codec", @@ -10524,7 +10524,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "clap 4.2.5", "fs4", @@ -10540,7 +10540,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10559,7 +10559,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "libc", @@ -10578,7 +10578,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "chrono", "futures", @@ -10597,7 +10597,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ansi_term", "atty", @@ -10628,7 +10628,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10639,7 +10639,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures", @@ -10666,7 +10666,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures", @@ -10680,7 +10680,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-channel", "futures", @@ -11228,7 +11228,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "hash-db", "log", @@ -11248,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "Inflector", "blake2", @@ -11262,7 +11262,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -11275,7 +11275,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "integer-sqrt", "num-traits", @@ -11289,7 +11289,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -11302,7 +11302,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "sp-api", @@ -11314,7 +11314,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "log", @@ -11332,7 +11332,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures", @@ -11347,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "parity-scale-codec", @@ -11365,7 +11365,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "parity-scale-codec", @@ -11386,7 +11386,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11405,7 +11405,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "finality-grandpa", "log", @@ -11423,7 +11423,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -11435,7 +11435,7 @@ dependencies = [ [[package]] name = "sp-core" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "bitflags", @@ -11479,7 +11479,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "blake2b_simd", "byteorder", @@ -11493,7 +11493,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro2", "quote", @@ -11504,7 +11504,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11513,7 +11513,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro2", "quote", @@ -11523,7 +11523,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.14.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "environmental", "parity-scale-codec", @@ -11534,7 +11534,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11549,7 +11549,7 @@ dependencies = [ [[package]] name = "sp-io" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "bytes", "ed25519", @@ -11575,7 +11575,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "lazy_static", "sp-core", @@ -11586,7 +11586,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.14.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "parity-scale-codec", @@ -11600,7 +11600,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11609,7 +11609,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11620,7 +11620,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11638,7 +11638,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -11652,7 +11652,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "sp-api", "sp-core", @@ -11662,7 +11662,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "backtrace", "lazy_static", @@ -11672,7 +11672,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "rustc-hash", "serde", @@ -11682,7 +11682,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "either", "hash256-std-hasher", @@ -11704,7 +11704,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11722,7 +11722,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "Inflector", "proc-macro-crate", @@ -11734,7 +11734,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -11748,7 +11748,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -11761,7 +11761,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.14.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "hash-db", "log", @@ -11781,7 +11781,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "log", "parity-scale-codec", @@ -11799,12 +11799,12 @@ dependencies = [ [[package]] name = "sp-std" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" [[package]] name = "sp-storage" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11817,7 +11817,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "futures-timer", @@ -11832,7 +11832,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "sp-std", @@ -11844,7 +11844,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "sp-api", "sp-runtime", @@ -11853,7 +11853,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "log", @@ -11869,7 +11869,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11892,7 +11892,7 @@ dependencies = [ [[package]] name = "sp-version" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11909,7 +11909,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11920,7 +11920,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11933,7 +11933,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "parity-scale-codec", "scale-info", @@ -12174,7 +12174,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "platforms", ] @@ -12182,7 +12182,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12201,7 +12201,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "hyper", "log", @@ -12213,7 +12213,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "jsonrpsee", @@ -12226,7 +12226,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "jsonrpsee", "log", @@ -12245,7 +12245,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "array-bytes", "async-trait", @@ -12271,7 +12271,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12281,7 +12281,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12292,7 +12292,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "ansi_term", "build-helper", @@ -13137,7 +13137,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2bc071f33da268ae218f2f376e7aa1dbf397ec76" +source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" dependencies = [ "async-trait", "clap 4.2.5", diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index afd192257636..6d0186aebc9c 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -17,7 +17,7 @@ sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } polkadot-core-primitives = { path = "../core-primitives", default-features = false } derive_more = "0.99.11" -bounded-collections = { version = "0.1.5", default-features = false } +bounded-collections = { version = "0.1.7", default-features = false } # all optional crates. serde = { version = "1.0.137", default-features = false, features = [ "derive" ], optional = true } diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index e2a123a16680..273c2fba0a12 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -6,7 +6,7 @@ authors.workspace = true edition.workspace = true [dependencies] -bounded-collections = { version = "0.1.5", default-features = false } +bounded-collections = { version = "0.1.7", default-features = false } derivative = { version = "2.2.0", default-features = false, features = [ "use_core" ] } impl-trait-for-tuples = "0.2.2" log = { version = "0.4.17", default-features = false } diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml index dd58b0bf903a..4bfad5899d38 100644 --- a/xcm/pallet-xcm/Cargo.toml +++ b/xcm/pallet-xcm/Cargo.toml @@ -6,7 +6,7 @@ version.workspace = true [dependencies] -bounded-collections = { version = "0.1.5", default-features = false } +bounded-collections = { version = "0.1.7", default-features = false } codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false, features = ["derive"] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } From 8eb5efcdaec745e16167043c75e2dd4da958cbc8 Mon Sep 17 00:00:00 2001 From: Sam Johnson Date: Mon, 29 May 2023 14:13:28 -0400 Subject: [PATCH 15/28] bump to quote 1.0.28 (#7306) --- Cargo.lock | 4 ++-- node/gum/proc-macro/Cargo.toml | 2 +- node/test/performance-test/Cargo.toml | 2 +- xcm/procedural/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 29254a7ffba2..147a87a96a01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8888,9 +8888,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" dependencies = [ "proc-macro2", ] diff --git a/node/gum/proc-macro/Cargo.toml b/node/gum/proc-macro/Cargo.toml index 3fac1a7b928f..9e60535704d3 100644 --- a/node/gum/proc-macro/Cargo.toml +++ b/node/gum/proc-macro/Cargo.toml @@ -13,7 +13,7 @@ proc-macro = true [dependencies] syn = { version = "2.0.15", features = ["full", "extra-traits"] } -quote = "1.0.26" +quote = "1.0.28" proc-macro2 = "1.0.56" proc-macro-crate = "1.1.3" expander = "2.0.0" diff --git a/node/test/performance-test/Cargo.toml b/node/test/performance-test/Cargo.toml index 4e3001b3ee66..0e5800b920e3 100644 --- a/node/test/performance-test/Cargo.toml +++ b/node/test/performance-test/Cargo.toml @@ -6,7 +6,7 @@ edition.workspace = true [dependencies] thiserror = "1.0.31" -quote = "1.0.26" +quote = "1.0.28" env_logger = "0.9" log = "0.4" diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index 4da7ac1e2223..dc56695043ca 100644 --- a/xcm/procedural/Cargo.toml +++ b/xcm/procedural/Cargo.toml @@ -9,6 +9,6 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.56" -quote = "1.0.26" +quote = "1.0.28" syn = "2.0.15" Inflector = "0.11.4" From 851071470841fb49d5ab3fe7d4f43c6cef5e489f Mon Sep 17 00:00:00 2001 From: Tsvetomir Dimitrov Date: Tue, 30 May 2023 12:55:26 +0300 Subject: [PATCH 16/28] `RollingSessionWindow` cleanup (#7204) * Replace `RollingSessionWindow` with `RuntimeInfo` - initial commit * Fix tests in import * Fix the rest of the tests * Remove dead code * Fix todos * Simplify session caching * Comments for `SessionInfoProvider` * Separate `SessionInfoProvider` from `State` * `cache_session_info_for_head` becomes freestanding function * Remove unneeded `mut` usage * fn session_info -> fn get_session_info() to avoid name clashes. The function also tries to initialize `SessionInfoProvider` * Fix SessionInfo retrieval * Code cleanup * Don't wrap `SessionInfoProvider` in an `Option` * Remove `earliest_session()` * Remove pre-caching -> wip * Fix some tests and code cleanup * Fix all tests * Fixes in tests * Fix comments, variable names and small style changes * Fix a warning * impl From for NonZeroUsize * Fix logging for `get_session_info` - remove redundant logs and decrease log level to DEBUG * Code review feedback * Storage migration removing `COL_SESSION_WINDOW_DATA` from parachains db * Remove `col_session_data` usages * Storage migration clearing columns w/o removing them * Remove session data column usages from `approval-voting` and `dispute-coordinator` tests * Add some test cases from `RollingSessionWindow` to `dispute-coordinator` tests * Fix formatting in initialized.rs * Fix a corner case in `SessionInfo` caching for `dispute-coordinator` * Remove `RollingSessionWindow` ;( * Revert "Fix formatting in initialized.rs" This reverts commit 0f94664ec9f3a7e3737a30291195990e1e7065fc. * v2 to v3 migration drops `COL_DISPUTE_COORDINATOR_DATA` instead of clearing it * Fix `NUM_COLUMNS` in `approval-voting` * Use `columns::v3::NUM_COLUMNS` when opening db * Update node/service/src/parachains_db/upgrade.rs Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com> * Don't write in `COL_DISPUTE_COORDINATOR_DATA` for `test_rocksdb_migrate_2_to_3` * Fix `NUM+COLUMNS` in approval_voting * Fix formatting * Fix columns usage * Clarification comments about the different db versions --------- Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com> --- .../approval-voting/src/approval_db/v1/mod.rs | 8 +- .../src/approval_db/v1/tests.rs | 6 +- node/core/approval-voting/src/import.rs | 6 +- node/core/approval-voting/src/lib.rs | 13 +- node/core/approval-voting/src/tests.rs | 9 +- node/core/dispute-coordinator/src/db/v1.rs | 10 +- .../dispute-coordinator/src/initialized.rs | 13 +- node/core/dispute-coordinator/src/lib.rs | 7 +- node/core/dispute-coordinator/src/tests.rs | 180 +- node/service/src/lib.rs | 3 - node/service/src/parachains_db/mod.rs | 38 +- node/service/src/parachains_db/upgrade.rs | 123 +- node/subsystem-util/src/lib.rs | 2 - .../src/rolling_session_window.rs | 1532 ----------------- 14 files changed, 339 insertions(+), 1611 deletions(-) delete mode 100644 node/subsystem-util/src/rolling_session_window.rs diff --git a/node/core/approval-voting/src/approval_db/v1/mod.rs b/node/core/approval-voting/src/approval_db/v1/mod.rs index d2a13ad54550..c31389269d2e 100644 --- a/node/core/approval-voting/src/approval_db/v1/mod.rs +++ b/node/core/approval-voting/src/approval_db/v1/mod.rs @@ -15,6 +15,12 @@ // along with Polkadot. If not, see . //! Version 1 of the DB schema. +//! +//! Note that the version here differs from the actual version of the parachains +//! database (check `CURRENT_VERSION` in `node/service/src/parachains_db/upgrade.rs`). +//! The code in this module implements the way approval voting works with +//! its data in the database. Any breaking changes here will still +//! require a db migration (check `node/service/src/parachains_db/upgrade.rs`). use parity_scale_codec::{Decode, Encode}; use polkadot_node_primitives::approval::{AssignmentCert, DelayTranche}; @@ -154,8 +160,6 @@ pub type Bitfield = BitVec; pub struct Config { /// The column family in the database where data is stored. pub col_approval_data: u32, - /// The column of the database where rolling session window data is stored. - pub col_session_data: u32, } /// Details pertaining to our assignment on a block. diff --git a/node/core/approval-voting/src/approval_db/v1/tests.rs b/node/core/approval-voting/src/approval_db/v1/tests.rs index 0d30cc8c0cdc..07d8242b772e 100644 --- a/node/core/approval-voting/src/approval_db/v1/tests.rs +++ b/node/core/approval-voting/src/approval_db/v1/tests.rs @@ -28,12 +28,10 @@ use std::{collections::HashMap, sync::Arc}; use ::test_helpers::{dummy_candidate_receipt, dummy_candidate_receipt_bad_sig, dummy_hash}; const DATA_COL: u32 = 0; -const SESSION_DATA_COL: u32 = 1; -const NUM_COLUMNS: u32 = 2; +const NUM_COLUMNS: u32 = 1; -const TEST_CONFIG: Config = - Config { col_approval_data: DATA_COL, col_session_data: SESSION_DATA_COL }; +const TEST_CONFIG: Config = Config { col_approval_data: DATA_COL }; fn make_db() -> (DbBackend, Arc) { let db = kvdb_memorydb::create(NUM_COLUMNS); diff --git a/node/core/approval-voting/src/import.rs b/node/core/approval-voting/src/import.rs index 1ea2687a0246..e33caed49c5f 100644 --- a/node/core/approval-voting/src/import.rs +++ b/node/core/approval-voting/src/import.rs @@ -609,12 +609,10 @@ pub(crate) mod tests { use crate::{approval_db::v1::Config as DatabaseConfig, criteria, BlockEntry}; const DATA_COL: u32 = 0; - const SESSION_DATA_COL: u32 = 1; - const NUM_COLUMNS: u32 = 2; + const NUM_COLUMNS: u32 = 1; - const TEST_CONFIG: DatabaseConfig = - DatabaseConfig { col_approval_data: DATA_COL, col_session_data: SESSION_DATA_COL }; + const TEST_CONFIG: DatabaseConfig = DatabaseConfig { col_approval_data: DATA_COL }; #[derive(Default)] struct MockClock; diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index 18b8746ca317..f5e888c7c538 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -116,8 +116,6 @@ const LOG_TARGET: &str = "parachain::approval-voting"; pub struct Config { /// The column family in the DB where approval-voting data is stored. pub col_approval_data: u32, - /// The of the DB where rolling session info is stored. - pub col_session_data: u32, /// The slot duration of the consensus algorithm, in milliseconds. Should be evenly /// divisible by 500. pub slot_duration_millis: u64, @@ -357,10 +355,7 @@ impl ApprovalVotingSubsystem { keystore, slot_duration_millis: config.slot_duration_millis, db, - db_config: DatabaseConfig { - col_approval_data: config.col_approval_data, - col_session_data: config.col_session_data, - }, + db_config: DatabaseConfig { col_approval_data: config.col_approval_data }, mode: Mode::Syncing(sync_oracle), metrics, } @@ -369,10 +364,8 @@ impl ApprovalVotingSubsystem { /// Revert to the block corresponding to the specified `hash`. /// The operation is not allowed for blocks older than the last finalized one. pub fn revert_to(&self, hash: Hash) -> Result<(), SubsystemError> { - let config = approval_db::v1::Config { - col_approval_data: self.db_config.col_approval_data, - col_session_data: self.db_config.col_session_data, - }; + let config = + approval_db::v1::Config { col_approval_data: self.db_config.col_approval_data }; let mut backend = approval_db::v1::DbBackend::new(self.db.clone(), config); let mut overlay = OverlayedBackend::new(&backend); diff --git a/node/core/approval-voting/src/tests.rs b/node/core/approval-voting/src/tests.rs index d7e19a8c09f3..f58e60c6a487 100644 --- a/node/core/approval-voting/src/tests.rs +++ b/node/core/approval-voting/src/tests.rs @@ -14,8 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use crate::tests::test_constants::TEST_CONFIG; - use super::*; use polkadot_node_primitives::{ approval::{ @@ -115,12 +113,10 @@ fn make_sync_oracle(val: bool) -> (Box, TestSyncOracleHan pub mod test_constants { use crate::approval_db::v1::Config as DatabaseConfig; const DATA_COL: u32 = 0; - const SESSION_DATA_COL: u32 = 1; - pub(crate) const NUM_COLUMNS: u32 = 2; + pub(crate) const NUM_COLUMNS: u32 = 1; - pub(crate) const TEST_CONFIG: DatabaseConfig = - DatabaseConfig { col_approval_data: DATA_COL, col_session_data: SESSION_DATA_COL }; + pub(crate) const TEST_CONFIG: DatabaseConfig = DatabaseConfig { col_approval_data: DATA_COL }; } struct MockSupportsParachains; @@ -493,7 +489,6 @@ fn test_harness>( Config { col_approval_data: test_constants::TEST_CONFIG.col_approval_data, slot_duration_millis: SLOT_DURATION_MILLIS, - col_session_data: TEST_CONFIG.col_session_data, }, Arc::new(db), Arc::new(keystore), diff --git a/node/core/dispute-coordinator/src/db/v1.rs b/node/core/dispute-coordinator/src/db/v1.rs index aa67781ddd25..2d14f5151003 100644 --- a/node/core/dispute-coordinator/src/db/v1.rs +++ b/node/core/dispute-coordinator/src/db/v1.rs @@ -15,6 +15,12 @@ // along with Polkadot. If not, see . //! `V1` database for the dispute coordinator. +//! +//! Note that the version here differs from the actual version of the parachains +//! database (check `CURRENT_VERSION` in `node/service/src/parachains_db/upgrade.rs`). +//! The code in this module implements the way dispute coordinator works with +//! the dispute data in the database. Any breaking changes here will still +//! require a db migration (check `node/service/src/parachains_db/upgrade.rs`). use polkadot_node_primitives::DisputeStatus; use polkadot_node_subsystem_util::database::{DBTransaction, Database}; @@ -206,8 +212,6 @@ fn candidate_votes_session_prefix(session: SessionIndex) -> [u8; 15 + 4] { pub struct ColumnConfiguration { /// The column in the key-value DB where data is stored. pub col_dispute_data: u32, - /// The column in the key-value DB where session data is stored. - pub col_session_data: u32, } /// Tracked votes on candidates, for the purposes of dispute resolution. @@ -378,7 +382,7 @@ mod tests { let db = kvdb_memorydb::create(1); let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new(db, &[0]); let store = Arc::new(db); - let config = ColumnConfiguration { col_dispute_data: 0, col_session_data: 1 }; + let config = ColumnConfiguration { col_dispute_data: 0 }; DbBackend::new(store, config, Metrics::default()) } diff --git a/node/core/dispute-coordinator/src/initialized.rs b/node/core/dispute-coordinator/src/initialized.rs index 81134a43a3a0..1b90a9d865e1 100644 --- a/node/core/dispute-coordinator/src/initialized.rs +++ b/node/core/dispute-coordinator/src/initialized.rs @@ -305,13 +305,12 @@ impl Initialized { Ok(session_idx) if self.gaps_in_cache || session_idx > self.highest_session_seen => { - // If error has occurred during last session caching - fetch the whole window - // Otherwise - cache only the new sessions - let lower_bound = if self.gaps_in_cache { - session_idx.saturating_sub(DISPUTE_WINDOW.get() - 1) - } else { - self.highest_session_seen + 1 - }; + // Fetch the last `DISPUTE_WINDOW` number of sessions unless there are no gaps in + // cache and we are not missing too many `SessionInfo`s + let mut lower_bound = session_idx.saturating_sub(DISPUTE_WINDOW.get() - 1); + if !self.gaps_in_cache && self.highest_session_seen > lower_bound { + lower_bound = self.highest_session_seen + 1 + } // There is a new session. Perform a dummy fetch to cache it. for idx in lower_bound..=session_idx { diff --git a/node/core/dispute-coordinator/src/lib.rs b/node/core/dispute-coordinator/src/lib.rs index 7379b392f312..02bb6ef9ecda 100644 --- a/node/core/dispute-coordinator/src/lib.rs +++ b/node/core/dispute-coordinator/src/lib.rs @@ -127,16 +127,11 @@ pub struct DisputeCoordinatorSubsystem { pub struct Config { /// The data column in the store to use for dispute data. pub col_dispute_data: u32, - /// The data column in the store to use for session data. - pub col_session_data: u32, } impl Config { fn column_config(&self) -> db::v1::ColumnConfiguration { - db::v1::ColumnConfiguration { - col_dispute_data: self.col_dispute_data, - col_session_data: self.col_session_data, - } + db::v1::ColumnConfiguration { col_dispute_data: self.col_dispute_data } } } diff --git a/node/core/dispute-coordinator/src/tests.rs b/node/core/dispute-coordinator/src/tests.rs index 7d3b87f3c228..ceeac351e8b8 100644 --- a/node/core/dispute-coordinator/src/tests.rs +++ b/node/core/dispute-coordinator/src/tests.rs @@ -33,6 +33,7 @@ use polkadot_node_subsystem_util::database::Database; use polkadot_node_primitives::{ DisputeMessage, DisputeStatus, SignedDisputeStatement, SignedFullStatement, Statement, + DISPUTE_WINDOW, }; use polkadot_node_subsystem::{ messages::{ @@ -214,9 +215,9 @@ impl Default for TestState { make_keystore(vec![Sr25519Keyring::Alice.to_seed()].into_iter()).into(); let db = kvdb_memorydb::create(1); - let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new(db, &[]); + let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new(db, &[0]); let db = Arc::new(db); - let config = Config { col_dispute_data: 0, col_session_data: 1 }; + let config = Config { col_dispute_data: 0 }; let genesis_header = Header { parent_hash: Hash::zero(), @@ -330,9 +331,11 @@ impl TestState { assert_eq!(h, block_hash); let _ = tx.send(Ok(session)); + let first_expected_session = session.saturating_sub(DISPUTE_WINDOW.get() - 1); + // Queries for session caching - see `handle_startup` if self.known_session.is_none() { - for i in 0..=session { + for i in first_expected_session..=session { assert_matches!( overseer_recv(virtual_overseer).await, AllMessages::RuntimeApi(RuntimeApiMessage::Request( @@ -3393,3 +3396,174 @@ fn informs_chain_selection_when_dispute_concluded_against() { }) }); } + +// On startup `SessionInfo` cache should be populated +#[test] +fn session_info_caching_on_startup_works() { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session = 1; + + test_state.handle_resume_sync(&mut virtual_overseer, session).await; + + test_state + }) + }); +} + +// Underflow means that no more than `DISPUTE_WINDOW` sessions should be fetched on startup +#[test] +fn session_info_caching_doesnt_underflow() { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session = DISPUTE_WINDOW.get() + 1; + + test_state.handle_resume_sync(&mut virtual_overseer, session).await; + + test_state + }) + }); +} + +// Cached `SessionInfo` shouldn't be re-requested from the runtime +#[test] +fn session_info_is_requested_only_once() { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session = 1; + + test_state.handle_resume_sync(&mut virtual_overseer, session).await; + + // This leaf activation shouldn't fetch `SessionInfo` because the session is already cached + test_state + .activate_leaf_at_session( + &mut virtual_overseer, + session, + 3, + vec![make_candidate_included_event(make_valid_candidate_receipt())], + ) + .await; + + // This leaf activation should fetch `SessionInfo` because the session is new + test_state + .activate_leaf_at_session( + &mut virtual_overseer, + session + 1, + 4, + vec![make_candidate_included_event(make_valid_candidate_receipt())], + ) + .await; + + assert_matches!( + virtual_overseer.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + _, + RuntimeApiRequest::SessionInfo(session_index, tx), + )) => { + assert_eq!(session_index, 2); + let _ = tx.send(Ok(Some(test_state.session_info()))); + } + ); + test_state + }) + }); +} + +// Big jump means the new session we see with a leaf update is at least a `DISPUTE_WINDOW` bigger than +// the already known one. In this case The whole `DISPUTE_WINDOW` should be fetched. +#[test] +fn session_info_big_jump_works() { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session_on_startup = 1; + + test_state.handle_resume_sync(&mut virtual_overseer, session_on_startup).await; + + // This leaf activation shouldn't fetch `SessionInfo` because the session is already cached + test_state + .activate_leaf_at_session( + &mut virtual_overseer, + session_on_startup, + 3, + vec![make_candidate_included_event(make_valid_candidate_receipt())], + ) + .await; + + let session_after_jump = session_on_startup + DISPUTE_WINDOW.get() + 10; + // This leaf activation should cache all missing `SessionInfo`s + test_state + .activate_leaf_at_session( + &mut virtual_overseer, + session_after_jump, + 4, + vec![make_candidate_included_event(make_valid_candidate_receipt())], + ) + .await; + + let first_expected_session = + session_after_jump.saturating_sub(DISPUTE_WINDOW.get() - 1); + for expected_idx in first_expected_session..=session_after_jump { + assert_matches!( + virtual_overseer.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + _, + RuntimeApiRequest::SessionInfo(session_index, tx), + )) => { + assert_eq!(session_index, expected_idx); + let _ = tx.send(Ok(Some(test_state.session_info()))); + } + ); + } + test_state + }) + }); +} + +// Small jump means the new session we see with a leaf update is at less than last known one + `DISPUTE_WINDOW`. In this +// case fetching should start from last known one + 1. +#[test] +fn session_info_small_jump_works() { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session_on_startup = 1; + + test_state.handle_resume_sync(&mut virtual_overseer, session_on_startup).await; + + // This leaf activation shouldn't fetch `SessionInfo` because the session is already cached + test_state + .activate_leaf_at_session( + &mut virtual_overseer, + session_on_startup, + 3, + vec![make_candidate_included_event(make_valid_candidate_receipt())], + ) + .await; + + let session_after_jump = session_on_startup + DISPUTE_WINDOW.get() - 1; + // This leaf activation should cache all missing `SessionInfo`s + test_state + .activate_leaf_at_session( + &mut virtual_overseer, + session_after_jump, + 4, + vec![make_candidate_included_event(make_valid_candidate_receipt())], + ) + .await; + + let first_expected_session = session_on_startup + 1; + for expected_idx in first_expected_session..=session_after_jump { + assert_matches!( + virtual_overseer.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + _, + RuntimeApiRequest::SessionInfo(session_index, tx), + )) => { + assert_eq!(session_index, expected_idx); + let _ = tx.send(Ok(Some(test_state.session_info()))); + } + ); + } + test_state + }) + }); +} diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index e55f2456160b..c29933732388 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -896,7 +896,6 @@ where let approval_voting_config = ApprovalVotingConfig { col_approval_data: parachains_db::REAL_COLUMNS.col_approval_data, - col_session_data: parachains_db::REAL_COLUMNS.col_session_window_data, slot_duration_millis: slot_duration.as_millis() as u64, }; @@ -920,7 +919,6 @@ where let dispute_coordinator_config = DisputeCoordinatorConfig { col_dispute_data: parachains_db::REAL_COLUMNS.col_dispute_coordinator_data, - col_session_data: parachains_db::REAL_COLUMNS.col_session_window_data, }; let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams { @@ -1512,7 +1510,6 @@ fn revert_chain_selection(db: Arc, hash: Hash) -> sp_blockchain::R fn revert_approval_voting(db: Arc, hash: Hash) -> sp_blockchain::Result<()> { let config = approval_voting_subsystem::Config { col_approval_data: parachains_db::REAL_COLUMNS.col_approval_data, - col_session_data: parachains_db::REAL_COLUMNS.col_session_window_data, slot_duration_millis: Default::default(), }; diff --git a/node/service/src/parachains_db/mod.rs b/node/service/src/parachains_db/mod.rs index 918aecd25e76..519afbe0ccd1 100644 --- a/node/service/src/parachains_db/mod.rs +++ b/node/service/src/parachains_db/mod.rs @@ -36,12 +36,18 @@ pub(crate) mod columns { pub mod v2 { pub const NUM_COLUMNS: u32 = 6; + + #[cfg(test)] + pub const COL_SESSION_WINDOW_DATA: u32 = 5; + } + + pub mod v3 { + pub const NUM_COLUMNS: u32 = 5; pub const COL_AVAILABILITY_DATA: u32 = 0; pub const COL_AVAILABILITY_META: u32 = 1; pub const COL_APPROVAL_DATA: u32 = 2; pub const COL_CHAIN_SELECTION_DATA: u32 = 3; pub const COL_DISPUTE_COORDINATOR_DATA: u32 = 4; - pub const COL_SESSION_WINDOW_DATA: u32 = 5; pub const ORDERED_COL: &[u32] = &[COL_AVAILABILITY_META, COL_CHAIN_SELECTION_DATA, COL_DISPUTE_COORDINATOR_DATA]; @@ -62,19 +68,16 @@ pub struct ColumnsConfig { pub col_chain_selection_data: u32, /// The column used by dispute coordinator for data. pub col_dispute_coordinator_data: u32, - /// The column used for session window data. - pub col_session_window_data: u32, } /// The real columns used by the parachains DB. #[cfg(any(test, feature = "full-node"))] pub const REAL_COLUMNS: ColumnsConfig = ColumnsConfig { - col_availability_data: columns::v2::COL_AVAILABILITY_DATA, - col_availability_meta: columns::v2::COL_AVAILABILITY_META, - col_approval_data: columns::v2::COL_APPROVAL_DATA, - col_chain_selection_data: columns::v2::COL_CHAIN_SELECTION_DATA, - col_dispute_coordinator_data: columns::v2::COL_DISPUTE_COORDINATOR_DATA, - col_session_window_data: columns::v2::COL_SESSION_WINDOW_DATA, + col_availability_data: columns::v3::COL_AVAILABILITY_DATA, + col_availability_meta: columns::v3::COL_AVAILABILITY_META, + col_approval_data: columns::v3::COL_APPROVAL_DATA, + col_chain_selection_data: columns::v3::COL_CHAIN_SELECTION_DATA, + col_dispute_coordinator_data: columns::v3::COL_DISPUTE_COORDINATOR_DATA, }; #[derive(PartialEq)] @@ -122,20 +125,17 @@ pub fn open_creating_rocksdb( let path = root.join("parachains").join("db"); - let mut db_config = DatabaseConfig::with_columns(columns::v2::NUM_COLUMNS); + let mut db_config = DatabaseConfig::with_columns(columns::v3::NUM_COLUMNS); let _ = db_config .memory_budget - .insert(columns::v2::COL_AVAILABILITY_DATA, cache_sizes.availability_data); - let _ = db_config - .memory_budget - .insert(columns::v2::COL_AVAILABILITY_META, cache_sizes.availability_meta); + .insert(columns::v3::COL_AVAILABILITY_DATA, cache_sizes.availability_data); let _ = db_config .memory_budget - .insert(columns::v2::COL_APPROVAL_DATA, cache_sizes.approval_data); + .insert(columns::v3::COL_AVAILABILITY_META, cache_sizes.availability_meta); let _ = db_config .memory_budget - .insert(columns::v2::COL_SESSION_WINDOW_DATA, cache_sizes.session_data); + .insert(columns::v3::COL_APPROVAL_DATA, cache_sizes.approval_data); let path_str = path .to_str() @@ -146,7 +146,7 @@ pub fn open_creating_rocksdb( let db = Database::open(&db_config, &path_str)?; let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new( db, - columns::v2::ORDERED_COL, + columns::v3::ORDERED_COL, ); Ok(Arc::new(db)) @@ -166,12 +166,12 @@ pub fn open_creating_paritydb( std::fs::create_dir_all(&path_str)?; upgrade::try_upgrade_db(&path, DatabaseKind::ParityDB)?; - let db = parity_db::Db::open_or_create(&upgrade::paritydb_version_2_config(&path)) + let db = parity_db::Db::open_or_create(&upgrade::paritydb_version_3_config(&path)) .map_err(|err| io::Error::new(io::ErrorKind::Other, format!("{:?}", err)))?; let db = polkadot_node_subsystem_util::database::paritydb_impl::DbAdapter::new( db, - columns::v2::ORDERED_COL, + columns::v3::ORDERED_COL, ); Ok(Arc::new(db)) } diff --git a/node/service/src/parachains_db/upgrade.rs b/node/service/src/parachains_db/upgrade.rs index c52bd21c0573..6041a093ef9b 100644 --- a/node/service/src/parachains_db/upgrade.rs +++ b/node/service/src/parachains_db/upgrade.rs @@ -28,7 +28,7 @@ type Version = u32; const VERSION_FILE_NAME: &'static str = "parachain_db_version"; /// Current db version. -const CURRENT_VERSION: Version = 2; +const CURRENT_VERSION: Version = 3; #[derive(thiserror::Error, Debug)] pub enum Error { @@ -58,6 +58,8 @@ pub(crate) fn try_upgrade_db(db_path: &Path, db_kind: DatabaseKind) -> Result<() Some(0) => migrate_from_version_0_to_1(db_path, db_kind)?, // 1 -> 2 migration Some(1) => migrate_from_version_1_to_2(db_path, db_kind)?, + // 2 -> 3 migration + Some(2) => migrate_from_version_2_to_3(db_path, db_kind)?, // Already at current version, do nothing. Some(CURRENT_VERSION) => (), // This is an arbitrary future version, we don't handle it. @@ -127,6 +129,18 @@ fn migrate_from_version_1_to_2(path: &Path, db_kind: DatabaseKind) -> Result<(), }) } +fn migrate_from_version_2_to_3(path: &Path, db_kind: DatabaseKind) -> Result<(), Error> { + gum::info!(target: LOG_TARGET, "Migrating parachains db from version 2 to version 3 ..."); + match db_kind { + DatabaseKind::ParityDB => paritydb_migrate_from_version_2_to_3(path), + DatabaseKind::RocksDB => rocksdb_migrate_from_version_2_to_3(path), + } + .and_then(|result| { + gum::info!(target: LOG_TARGET, "Migration complete! "); + Ok(result) + }) +} + /// Migration from version 0 to version 1: /// * the number of columns has changed from 3 to 5; fn rocksdb_migrate_from_version_0_to_1(path: &Path) -> Result<(), Error> { @@ -160,6 +174,20 @@ fn rocksdb_migrate_from_version_1_to_2(path: &Path) -> Result<(), Error> { Ok(()) } +fn rocksdb_migrate_from_version_2_to_3(path: &Path) -> Result<(), Error> { + use kvdb_rocksdb::{Database, DatabaseConfig}; + + let db_path = path + .to_str() + .ok_or_else(|| super::other_io_error("Invalid database path".into()))?; + let db_cfg = DatabaseConfig::with_columns(super::columns::v2::NUM_COLUMNS); + let mut db = Database::open(&db_cfg, db_path)?; + + db.remove_last_column()?; + + Ok(()) +} + // This currently clears columns which had their configs altered between versions. // The columns to be changed are constrained by the `allowed_columns` vector. fn paritydb_fix_columns( @@ -221,7 +249,7 @@ fn paritydb_fix_columns( pub(crate) fn paritydb_version_1_config(path: &Path) -> parity_db::Options { let mut options = parity_db::Options::with_columns(&path, super::columns::v1::NUM_COLUMNS as u8); - for i in columns::v2::ORDERED_COL { + for i in columns::v3::ORDERED_COL { options.columns[*i as usize].btree_index = true; } @@ -232,7 +260,18 @@ pub(crate) fn paritydb_version_1_config(path: &Path) -> parity_db::Options { pub(crate) fn paritydb_version_2_config(path: &Path) -> parity_db::Options { let mut options = parity_db::Options::with_columns(&path, super::columns::v2::NUM_COLUMNS as u8); - for i in columns::v2::ORDERED_COL { + for i in columns::v3::ORDERED_COL { + options.columns[*i as usize].btree_index = true; + } + + options +} + +/// Database configuration for version 3. +pub(crate) fn paritydb_version_3_config(path: &Path) -> parity_db::Options { + let mut options = + parity_db::Options::with_columns(&path, super::columns::v3::NUM_COLUMNS as u8); + for i in columns::v3::ORDERED_COL { options.columns[*i as usize].btree_index = true; } @@ -244,8 +283,8 @@ pub(crate) fn paritydb_version_2_config(path: &Path) -> parity_db::Options { pub(crate) fn paritydb_version_0_config(path: &Path) -> parity_db::Options { let mut options = parity_db::Options::with_columns(&path, super::columns::v1::NUM_COLUMNS as u8); - options.columns[super::columns::v2::COL_AVAILABILITY_META as usize].btree_index = true; - options.columns[super::columns::v2::COL_CHAIN_SELECTION_DATA as usize].btree_index = true; + options.columns[super::columns::v3::COL_AVAILABILITY_META as usize].btree_index = true; + options.columns[super::columns::v3::COL_CHAIN_SELECTION_DATA as usize].btree_index = true; options } @@ -260,7 +299,7 @@ fn paritydb_migrate_from_version_0_to_1(path: &Path) -> Result<(), Error> { paritydb_fix_columns( path, paritydb_version_1_config(path), - vec![super::columns::v2::COL_DISPUTE_COORDINATOR_DATA], + vec![super::columns::v3::COL_DISPUTE_COORDINATOR_DATA], )?; Ok(()) @@ -278,9 +317,20 @@ fn paritydb_migrate_from_version_1_to_2(path: &Path) -> Result<(), Error> { Ok(()) } +/// Migration from version 2 to version 3: +/// - drop the column used by `RollingSessionWindow` +fn paritydb_migrate_from_version_2_to_3(path: &Path) -> Result<(), Error> { + parity_db::Db::drop_last_column(&mut paritydb_version_2_config(path)) + .map_err(|e| other_io_error(format!("Error removing COL_SESSION_WINDOW_DATA {:?}", e)))?; + Ok(()) +} + #[cfg(test)] mod tests { - use super::{columns::v2::*, *}; + use super::{ + columns::{v2::COL_SESSION_WINDOW_DATA, v3::*}, + *, + }; #[test] fn test_paritydb_migrate_0_to_1() { @@ -375,7 +425,7 @@ mod tests { // We need to properly set db version for upgrade to work. fs::write(version_file_path(db_dir.path()), "1").expect("Failed to write DB version"); { - let db = DbAdapter::new(db, columns::v2::ORDERED_COL); + let db = DbAdapter::new(db, columns::v3::ORDERED_COL); db.write(DBTransaction { ops: vec![DBOp::Insert { col: COL_DISPUTE_COORDINATOR_DATA, @@ -393,7 +443,7 @@ mod tests { assert_eq!(db.num_columns(), super::columns::v2::NUM_COLUMNS); - let db = DbAdapter::new(db, columns::v2::ORDERED_COL); + let db = DbAdapter::new(db, columns::v3::ORDERED_COL); assert_eq!( db.get(COL_DISPUTE_COORDINATOR_DATA, b"1234").unwrap(), @@ -416,4 +466,59 @@ mod tests { Some("0xdeadb00b".as_bytes().to_vec()) ); } + + #[test] + fn test_paritydb_migrate_2_to_3() { + use parity_db::Db; + + let db_dir = tempfile::tempdir().unwrap(); + let path = db_dir.path(); + let test_key = b"1337"; + + // We need to properly set db version for upgrade to work. + fs::write(version_file_path(path), "2").expect("Failed to write DB version"); + + { + let db = Db::open_or_create(&paritydb_version_2_config(&path)).unwrap(); + + // Write some dummy data + db.commit(vec![( + COL_SESSION_WINDOW_DATA as u8, + test_key.to_vec(), + Some(b"0xdeadb00b".to_vec()), + )]) + .unwrap(); + + assert_eq!(db.num_columns(), columns::v2::NUM_COLUMNS as u8); + } + + try_upgrade_db(&path, DatabaseKind::ParityDB).unwrap(); + + let db = Db::open(&paritydb_version_3_config(&path)).unwrap(); + + assert_eq!(db.num_columns(), columns::v3::NUM_COLUMNS as u8); + } + + #[test] + fn test_rocksdb_migrate_2_to_3() { + use kvdb_rocksdb::{Database, DatabaseConfig}; + + let db_dir = tempfile::tempdir().unwrap(); + let db_path = db_dir.path().to_str().unwrap(); + let db_cfg = DatabaseConfig::with_columns(super::columns::v2::NUM_COLUMNS); + { + let db = Database::open(&db_cfg, db_path).unwrap(); + assert_eq!(db.num_columns(), super::columns::v2::NUM_COLUMNS as u32); + } + + // We need to properly set db version for upgrade to work. + fs::write(version_file_path(db_dir.path()), "2").expect("Failed to write DB version"); + + try_upgrade_db(&db_dir.path(), DatabaseKind::RocksDB).unwrap(); + + let db_cfg = DatabaseConfig::with_columns(super::columns::v3::NUM_COLUMNS); + let db = Database::open(&db_cfg, db_path).unwrap(); + + assert_eq!(db.num_columns(), super::columns::v3::NUM_COLUMNS); + } } diff --git a/node/subsystem-util/src/lib.rs b/node/subsystem-util/src/lib.rs index 6c16cf396c40..1444bc0a2bf1 100644 --- a/node/subsystem-util/src/lib.rs +++ b/node/subsystem-util/src/lib.rs @@ -65,8 +65,6 @@ pub mod reexports { pub use polkadot_overseer::gen::{SpawnedSubsystem, Spawner, Subsystem, SubsystemContext}; } -/// A rolling session window cache. -pub mod rolling_session_window; /// Convenient and efficient runtime info access. pub mod runtime; diff --git a/node/subsystem-util/src/rolling_session_window.rs b/node/subsystem-util/src/rolling_session_window.rs deleted file mode 100644 index 18364491849a..000000000000 --- a/node/subsystem-util/src/rolling_session_window.rs +++ /dev/null @@ -1,1532 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A rolling window of sessions and cached session info, updated by the state of newly imported blocks. -//! -//! This is useful for consensus components which need to stay up-to-date about recent sessions but don't -//! care about the state of particular blocks. - -use super::database::{DBTransaction, Database}; -use kvdb::{DBKey, DBOp}; - -use parity_scale_codec::{Decode, Encode}; -pub use polkadot_node_primitives::{new_session_window_size, SessionWindowSize}; -use polkadot_primitives::{BlockNumber, Hash, SessionIndex, SessionInfo}; -use std::sync::Arc; - -use futures::channel::oneshot; -use polkadot_node_subsystem::{ - errors::{ChainApiError, RuntimeApiError}, - messages::{ChainApiMessage, RuntimeApiMessage, RuntimeApiRequest}, - overseer, -}; - -// The window size is equal to the `approval-voting` and `dispute-coordinator` constants that -// have been obsoleted. -const SESSION_WINDOW_SIZE: SessionWindowSize = new_session_window_size!(6); -const LOG_TARGET: &str = "parachain::rolling-session-window"; -const STORED_ROLLING_SESSION_WINDOW: &[u8] = b"Rolling_session_window"; - -/// Sessions unavailable in state to cache. -#[derive(Debug, Clone, thiserror::Error)] -pub enum SessionsUnavailableReason { - /// Runtime API subsystem was unavailable. - #[error(transparent)] - RuntimeApiUnavailable(#[from] oneshot::Canceled), - /// The runtime API itself returned an error. - #[error(transparent)] - RuntimeApi(#[from] RuntimeApiError), - /// The chain API itself returned an error. - #[error(transparent)] - ChainApi(#[from] ChainApiError), - /// Missing session info from runtime API for given `SessionIndex`. - #[error("Missing session index {0:?}")] - Missing(SessionIndex), - /// Missing last finalized block number. - #[error("Missing last finalized block number")] - MissingLastFinalizedBlock, - /// Missing last finalized block hash. - #[error("Missing last finalized block hash")] - MissingLastFinalizedBlockHash(BlockNumber), -} - -/// Information about the sessions being fetched. -#[derive(Debug, Clone)] -pub struct SessionsUnavailableInfo { - /// The desired window start. - pub window_start: SessionIndex, - /// The desired window end. - pub window_end: SessionIndex, - /// The block hash whose state the sessions were meant to be drawn from. - pub block_hash: Hash, -} - -/// Sessions were unavailable to fetch from the state for some reason. -#[derive(Debug, thiserror::Error, Clone)] -#[error("Sessions unavailable: {kind:?}, info: {info:?}")] -pub struct SessionsUnavailable { - /// The error kind. - #[source] - kind: SessionsUnavailableReason, - /// The info about the session window, if any. - info: Option, -} - -/// An indicated update of the rolling session window. -#[derive(Debug, PartialEq, Clone)] -pub enum SessionWindowUpdate { - /// The session window was just advanced from one range to a new one. - Advanced { - /// The previous start of the window (inclusive). - prev_window_start: SessionIndex, - /// The previous end of the window (inclusive). - prev_window_end: SessionIndex, - /// The new start of the window (inclusive). - new_window_start: SessionIndex, - /// The new end of the window (inclusive). - new_window_end: SessionIndex, - }, - /// The session window was unchanged. - Unchanged, -} - -/// A structure to store rolling session database parameters. -#[derive(Clone)] -pub struct DatabaseParams { - /// Database reference. - pub db: Arc, - /// The column which stores the rolling session info. - pub db_column: u32, -} -/// A rolling window of sessions and cached session info. -pub struct RollingSessionWindow { - earliest_session: SessionIndex, - session_info: Vec, - window_size: SessionWindowSize, - // The option is just to enable some approval-voting tests to force feed sessions - // in the window without dealing with the DB. - db_params: Option, -} - -/// The rolling session data we persist in the database. -#[derive(Encode, Decode, Default)] -struct StoredWindow { - earliest_session: SessionIndex, - session_info: Vec, -} - -impl RollingSessionWindow { - /// Initialize a new session info cache with the given window size. - /// Invariant: The database always contains the earliest session. Then, - /// we can always extend the session info vector using chain state. - pub async fn new( - mut sender: Sender, - block_hash: Hash, - db_params: DatabaseParams, - ) -> Result - where - Sender: overseer::SubsystemSender - + overseer::SubsystemSender, - { - // At first, determine session window start using the chain state. - let session_index = get_session_index_for_child(&mut sender, block_hash).await?; - let earliest_non_finalized_block_session = - Self::earliest_non_finalized_block_session(&mut sender).await?; - - // This will increase the session window to cover the full unfinalized chain. - let on_chain_window_start = std::cmp::min( - session_index.saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - earliest_non_finalized_block_session, - ); - - // Fetch session information from DB. - let maybe_stored_window = Self::db_load(db_params.clone()); - - // Get the DB stored sessions and recompute window start based on DB data. - let (mut window_start, stored_sessions) = - if let Some(mut stored_window) = maybe_stored_window { - // Check if DB is ancient. - if earliest_non_finalized_block_session > - stored_window.earliest_session + stored_window.session_info.len() as u32 - { - // If ancient, we scrap it and fetch from chain state. - stored_window.session_info.clear(); - } - - // The session window might extend beyond the last finalized block, but that's fine as we'll prune it at - // next update. - let window_start = if stored_window.session_info.len() > 0 { - // If there is at least one entry in db, we always take the DB as source of truth. - stored_window.earliest_session - } else { - on_chain_window_start - }; - - (window_start, stored_window.session_info) - } else { - (on_chain_window_start, Vec::new()) - }; - - // Compute the amount of sessions missing from the window that will be fetched from chain state. - let sessions_missing_count = session_index - .saturating_sub(window_start) - .saturating_add(1) - .saturating_sub(stored_sessions.len() as u32); - - // Extend from chain state. - let sessions = if sessions_missing_count > 0 { - match extend_sessions_from_chain_state( - stored_sessions, - &mut sender, - block_hash, - &mut window_start, - session_index, - ) - .await - { - Err(kind) => Err(SessionsUnavailable { - kind, - info: Some(SessionsUnavailableInfo { - window_start, - window_end: session_index, - block_hash, - }), - }), - Ok(sessions) => Ok(sessions), - }? - } else { - // There are no new sessions to be fetched from chain state. - stored_sessions - }; - - Ok(Self { - earliest_session: window_start, - session_info: sessions, - window_size: SESSION_WINDOW_SIZE, - db_params: Some(db_params), - }) - } - - // Load session information from the parachains db. - fn db_load(db_params: DatabaseParams) -> Option { - match db_params.db.get(db_params.db_column, STORED_ROLLING_SESSION_WINDOW).ok()? { - None => None, - Some(raw) => { - let maybe_decoded = StoredWindow::decode(&mut &raw[..]).map(Some); - match maybe_decoded { - Ok(decoded) => decoded, - Err(err) => { - gum::warn!( - target: LOG_TARGET, - ?err, - "Failed decoding db entry; will start with onchain session infos and self-heal DB entry on next update." - ); - None - }, - } - }, - } - } - - // Saves/Updates all sessions in the database. - // TODO: https://github.com/paritytech/polkadot/issues/6144 - fn db_save(&mut self, stored_window: StoredWindow) { - if let Some(db_params) = self.db_params.as_ref() { - match db_params.db.write(DBTransaction { - ops: vec![DBOp::Insert { - col: db_params.db_column, - key: DBKey::from_slice(STORED_ROLLING_SESSION_WINDOW), - value: stored_window.encode(), - }], - }) { - Ok(_) => {}, - Err(err) => { - gum::warn!(target: LOG_TARGET, ?err, "Failed writing db entry"); - }, - } - } - } - - /// Initialize a new session info cache with the given window size and - /// initial data. - /// This is only used in `approval voting` tests. - pub fn with_session_info( - earliest_session: SessionIndex, - session_info: Vec, - ) -> Self { - RollingSessionWindow { - earliest_session, - session_info, - window_size: SESSION_WINDOW_SIZE, - db_params: None, - } - } - - /// Access the session info for the given session index, if stored within the window. - pub fn session_info(&self, index: SessionIndex) -> Option<&SessionInfo> { - if index < self.earliest_session { - None - } else { - self.session_info.get((index - self.earliest_session) as usize) - } - } - - /// Access the index of the earliest session. - pub fn earliest_session(&self) -> SessionIndex { - self.earliest_session - } - - /// Access the index of the latest session. - pub fn latest_session(&self) -> SessionIndex { - self.earliest_session + (self.session_info.len() as SessionIndex).saturating_sub(1) - } - - /// Returns `true` if `session_index` is contained in the window. - pub fn contains(&self, session_index: SessionIndex) -> bool { - session_index >= self.earliest_session() && session_index <= self.latest_session() - } - - async fn earliest_non_finalized_block_session( - sender: &mut Sender, - ) -> Result - where - Sender: overseer::SubsystemSender - + overseer::SubsystemSender, - { - let last_finalized_height = { - let (tx, rx) = oneshot::channel(); - sender.send_message(ChainApiMessage::FinalizedBlockNumber(tx)).await; - match rx.await { - Ok(Ok(number)) => number, - Ok(Err(e)) => - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::ChainApi(e), - info: None, - }), - Err(err) => { - gum::warn!( - target: LOG_TARGET, - ?err, - "Failed fetching last finalized block number" - ); - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::MissingLastFinalizedBlock, - info: None, - }) - }, - } - }; - - let (tx, rx) = oneshot::channel(); - // We want to get the session index for the child of the last finalized block. - sender - .send_message(ChainApiMessage::FinalizedBlockHash(last_finalized_height, tx)) - .await; - let last_finalized_hash_parent = match rx.await { - Ok(Ok(maybe_hash)) => maybe_hash, - Ok(Err(e)) => - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::ChainApi(e), - info: None, - }), - Err(err) => { - gum::warn!(target: LOG_TARGET, ?err, "Failed fetching last finalized block hash"); - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::MissingLastFinalizedBlockHash( - last_finalized_height, - ), - info: None, - }) - }, - }; - - // Get the session in which the last finalized block was authored. - if let Some(last_finalized_hash_parent) = last_finalized_hash_parent { - let session = - match get_session_index_for_child(sender, last_finalized_hash_parent).await { - Ok(session_index) => session_index, - Err(err) => { - gum::warn!( - target: LOG_TARGET, - ?err, - ?last_finalized_hash_parent, - "Failed fetching session index" - ); - return Err(err) - }, - }; - - Ok(session) - } else { - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::MissingLastFinalizedBlockHash( - last_finalized_height, - ), - info: None, - }) - } - } - - /// When inspecting a new import notification, updates the session info cache to match - /// the session of the imported block's child. - /// - /// this only needs to be called on heads where we are directly notified about import, as sessions do - /// not change often and import notifications are expected to be typically increasing in session number. - /// - /// some backwards drift in session index is acceptable. - pub async fn cache_session_info_for_head( - &mut self, - sender: &mut Sender, - block_hash: Hash, - ) -> Result - where - Sender: overseer::SubsystemSender - + overseer::SubsystemSender, - { - let session_index = get_session_index_for_child(sender, block_hash).await?; - let latest = self.latest_session(); - - // Either cached or ancient. - if session_index <= latest { - return Ok(SessionWindowUpdate::Unchanged) - } - - let earliest_non_finalized_block_session = - Self::earliest_non_finalized_block_session(sender).await?; - - let old_window_start = self.earliest_session; - let old_window_end = latest; - - // Ensure we keep sessions up to last finalized block by adjusting the window start. - // This will increase the session window to cover the full unfinalized chain. - let window_start = std::cmp::min( - session_index.saturating_sub(self.window_size.get() - 1), - earliest_non_finalized_block_session, - ); - - // Never look back past earliest session, since if sessions beyond were not needed or available - // in the past remains valid for the future (window only advances forward). - let mut window_start = std::cmp::max(window_start, self.earliest_session); - - let mut sessions = self.session_info.clone(); - let sessions_out_of_window = window_start.saturating_sub(old_window_start) as usize; - - let sessions = if sessions_out_of_window < sessions.len() { - // Drop sessions based on how much the window advanced. - sessions.split_off((window_start as usize).saturating_sub(old_window_start as usize)) - } else { - // Window has jumped such that we need to fetch all sessions from on chain. - Vec::new() - }; - - match extend_sessions_from_chain_state( - sessions, - sender, - block_hash, - &mut window_start, - session_index, - ) - .await - { - Err(kind) => Err(SessionsUnavailable { - kind, - info: Some(SessionsUnavailableInfo { - window_start, - window_end: session_index, - block_hash, - }), - }), - Ok(s) => { - let update = SessionWindowUpdate::Advanced { - prev_window_start: old_window_start, - prev_window_end: old_window_end, - new_window_start: window_start, - new_window_end: session_index, - }; - - self.session_info = s; - - // we need to account for this case: - // window_start ................................... session_index - // old_window_start ........... latest - let new_earliest = std::cmp::max(window_start, old_window_start); - self.earliest_session = new_earliest; - - // Update current window in DB. - self.db_save(StoredWindow { - earliest_session: self.earliest_session, - session_info: self.session_info.clone(), - }); - Ok(update) - }, - } - } -} - -// Returns the session index expected at any child of the `parent` block. -// -// Note: We could use `RuntimeInfo::get_session_index_for_child` here but it's -// cleaner to just call the runtime API directly without needing to create an instance -// of `RuntimeInfo`. -async fn get_session_index_for_child( - sender: &mut impl overseer::SubsystemSender, - block_hash: Hash, -) -> Result { - let (s_tx, s_rx) = oneshot::channel(); - - // We're requesting session index of a child to populate the cache in advance. - sender - .send_message(RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) - .await; - - match s_rx.await { - Ok(Ok(s)) => Ok(s), - Ok(Err(e)) => - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::RuntimeApi(e), - info: None, - }), - Err(e) => - return Err(SessionsUnavailable { - kind: SessionsUnavailableReason::RuntimeApiUnavailable(e), - info: None, - }), - } -} - -/// Attempts to extend db stored sessions with sessions missing between `start` and up to `end_inclusive`. -/// Runtime session info fetching errors are ignored if that doesn't create a gap in the window. -async fn extend_sessions_from_chain_state( - stored_sessions: Vec, - sender: &mut impl overseer::SubsystemSender, - block_hash: Hash, - window_start: &mut SessionIndex, - end_inclusive: SessionIndex, -) -> Result, SessionsUnavailableReason> { - // Start from the db sessions. - let mut sessions = stored_sessions; - // We allow session fetch failures only if we won't create a gap in the window by doing so. - // If `allow_failure` is set to true here, fetching errors are ignored until we get a first session. - let mut allow_failure = sessions.is_empty(); - - let start = *window_start + sessions.len() as u32; - - for i in start..=end_inclusive { - let (tx, rx) = oneshot::channel(); - sender - .send_message(RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::SessionInfo(i, tx), - )) - .await; - - match rx.await { - Ok(Ok(Some(session_info))) => { - // We do not allow failure anymore after having at least 1 session in window. - allow_failure = false; - sessions.push(session_info); - }, - Ok(Ok(None)) if !allow_failure => return Err(SessionsUnavailableReason::Missing(i)), - Ok(Ok(None)) => { - // Handle `allow_failure` true. - // If we didn't get the session, we advance window start. - *window_start += 1; - gum::debug!( - target: LOG_TARGET, - session = ?i, - "Session info missing from runtime." - ); - }, - Ok(Err(e)) if !allow_failure => return Err(SessionsUnavailableReason::RuntimeApi(e)), - Err(canceled) if !allow_failure => - return Err(SessionsUnavailableReason::RuntimeApiUnavailable(canceled)), - Ok(Err(err)) => { - // Handle `allow_failure` true. - // If we didn't get the session, we advance window start. - *window_start += 1; - gum::debug!( - target: LOG_TARGET, - session = ?i, - ?err, - "Error while fetching session information." - ); - }, - Err(err) => { - // Handle `allow_failure` true. - // If we didn't get the session, we advance window start. - *window_start += 1; - gum::debug!( - target: LOG_TARGET, - session = ?i, - ?err, - "Channel error while fetching session information." - ); - }, - }; - } - - Ok(sessions) -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::database::kvdb_impl::DbAdapter; - use assert_matches::assert_matches; - use polkadot_node_subsystem::{ - messages::{AllMessages, AvailabilityRecoveryMessage}, - SubsystemContext, - }; - use polkadot_node_subsystem_test_helpers::make_subsystem_context; - use polkadot_primitives::Header; - use sp_core::testing::TaskExecutor; - - const SESSION_DATA_COL: u32 = 0; - - const NUM_COLUMNS: u32 = 1; - - fn dummy_db_params() -> DatabaseParams { - let db = kvdb_memorydb::create(NUM_COLUMNS); - let db = DbAdapter::new(db, &[]); - let db: Arc = Arc::new(db); - DatabaseParams { db, db_column: SESSION_DATA_COL } - } - - fn dummy_session_info(index: SessionIndex) -> SessionInfo { - SessionInfo { - validators: Default::default(), - discovery_keys: Vec::new(), - assignment_keys: Vec::new(), - validator_groups: Default::default(), - n_cores: index as _, - zeroth_delay_tranche_width: index as _, - relay_vrf_modulo_samples: index as _, - n_delay_tranches: index as _, - no_show_slots: index as _, - needed_approvals: index as _, - active_validator_indices: Vec::new(), - dispute_period: 6, - random_seed: [0u8; 32], - } - } - - fn cache_session_info_test( - expected_start_session: SessionIndex, - session: SessionIndex, - window: Option, - expect_requests_from: SessionIndex, - db_params: Option, - ) -> RollingSessionWindow { - let db_params = db_params.unwrap_or(dummy_db_params()); - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let finalized_header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool.clone()); - - let hash = header.hash(); - - let sender = ctx.sender(); - - let test_fut = { - Box::pin(async move { - let window = match window { - None => - RollingSessionWindow::new(sender.clone(), hash, db_params).await.unwrap(), - Some(mut window) => { - window.cache_session_info_for_head(sender, hash).await.unwrap(); - window - }, - }; - assert_eq!(window.earliest_session, expected_start_session); - assert_eq!( - window.session_info, - (expected_start_session..=session).map(dummy_session_info).collect::>(), - ); - - window - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(finalized_header.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, finalized_header.number); - let _ = s_tx.send(Ok(Some(finalized_header.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, finalized_header.hash()); - let _ = s_tx.send(Ok(session)); - } - ); - - for i in expect_requests_from..=session { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); - } - ); - } - }); - - let (window, _) = futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - window - } - - #[test] - fn cache_session_info_start_empty_db() { - let db_params = dummy_db_params(); - - let window = cache_session_info_test( - (10 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 10, - None, - (10 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - Some(db_params.clone()), - ); - - let window = cache_session_info_test( - (11 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 11, - Some(window), - 11, - None, - ); - assert_eq!(window.session_info.len(), SESSION_WINDOW_SIZE.get() as usize); - - cache_session_info_test( - (11 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 12, - None, - 12, - Some(db_params), - ); - } - - #[test] - fn cache_session_info_first_early() { - cache_session_info_test(0, 1, None, 0, None); - } - - #[test] - fn cache_session_info_does_not_underflow() { - let window = RollingSessionWindow { - earliest_session: 1, - session_info: vec![dummy_session_info(1)], - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - cache_session_info_test(1, 2, Some(window), 2, None); - } - - #[test] - fn cache_session_window_contains() { - let window = RollingSessionWindow { - earliest_session: 10, - session_info: vec![dummy_session_info(1)], - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - assert!(!window.contains(0)); - assert!(!window.contains(10 + SESSION_WINDOW_SIZE.get())); - assert!(!window.contains(11)); - assert!(!window.contains(10 + SESSION_WINDOW_SIZE.get() - 1)); - } - - #[test] - fn cache_session_info_first_late() { - cache_session_info_test( - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 100, - None, - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - None, - ); - } - - #[test] - fn cache_session_info_jump() { - let window = RollingSessionWindow { - earliest_session: 50, - session_info: vec![ - dummy_session_info(50), - dummy_session_info(51), - dummy_session_info(52), - ], - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 100, - Some(window), - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - None, - ); - } - - #[test] - fn cache_session_info_roll_full() { - let start = 99 - (SESSION_WINDOW_SIZE.get() - 1); - let window = RollingSessionWindow { - earliest_session: start, - session_info: (start..=99).map(dummy_session_info).collect(), - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 100, - Some(window), - 100, // should only make one request. - None, - ); - } - - #[test] - fn cache_session_info_roll_many_full_db() { - let db_params = dummy_db_params(); - let start = 97 - (SESSION_WINDOW_SIZE.get() - 1); - let window = RollingSessionWindow { - earliest_session: start, - session_info: (start..=97).map(dummy_session_info).collect(), - window_size: SESSION_WINDOW_SIZE, - db_params: Some(db_params.clone()), - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 100, - Some(window), - 98, - None, - ); - - // We expect the session to be populated from DB, and only fetch 101 from on chain. - cache_session_info_test( - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 101, - None, - 101, - Some(db_params.clone()), - ); - - // Session warps in the future. - let window = cache_session_info_test(195, 200, None, 195, Some(db_params)); - - assert_eq!(window.session_info.len(), SESSION_WINDOW_SIZE.get() as usize); - } - - #[test] - fn cache_session_info_roll_many_full() { - let start = 97 - (SESSION_WINDOW_SIZE.get() - 1); - let window = RollingSessionWindow { - earliest_session: start, - session_info: (start..=97).map(dummy_session_info).collect(), - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), - 100, - Some(window), - 98, - None, - ); - } - - #[test] - fn cache_session_info_roll_early() { - let start = 0; - let window = RollingSessionWindow { - earliest_session: start, - session_info: (0..=1).map(dummy_session_info).collect(), - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - cache_session_info_test( - 0, - 2, - Some(window), - 2, // should only make one request. - None, - ); - } - - #[test] - fn cache_session_info_roll_many_early() { - let start = 0; - let window = RollingSessionWindow { - earliest_session: start, - session_info: (0..=1).map(dummy_session_info).collect(), - window_size: SESSION_WINDOW_SIZE, - db_params: Some(dummy_db_params()), - }; - - let actual_window_size = window.session_info.len() as u32; - - cache_session_info_test(0, 3, Some(window), actual_window_size, None); - } - - #[test] - fn db_load_works() { - // Session index of the tip of our fake test chain. - let session: SessionIndex = 100; - let genesis_session: SessionIndex = 0; - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let finalized_header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let finalized_header_clone = finalized_header.clone(); - - let hash: sp_core::H256 = header.hash(); - let db_params = dummy_db_params(); - let db_params_clone = db_params.clone(); - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let test_fut = { - let sender = ctx.sender().clone(); - Box::pin(async move { - let mut rsw = - RollingSessionWindow::new(sender.clone(), hash, db_params_clone).await.unwrap(); - - let session_info = rsw.session_info.clone(); - let earliest_session = rsw.earliest_session(); - - assert_eq!(earliest_session, 0); - assert_eq!(session_info.len(), 101); - - rsw.db_save(StoredWindow { earliest_session, session_info }); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(finalized_header.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, finalized_header.number); - let _ = s_tx.send(Ok(Some(finalized_header.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, finalized_header.hash()); - let _ = s_tx.send(Ok(0)); - } - ); - - // Unfinalized chain starts at geneisis block, so session 0 is how far we stretch. - for i in genesis_session..=session { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let test_fut = { - Box::pin(async move { - let sender = ctx.sender().clone(); - let res = RollingSessionWindow::new(sender, hash, db_params).await; - let rsw = res.unwrap(); - assert_eq!(rsw.earliest_session, 0); - assert_eq!(rsw.session_info.len(), 101); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(finalized_header_clone.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, finalized_header_clone.number); - let _ = s_tx.send(Ok(Some(finalized_header_clone.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, finalized_header_clone.hash()); - let _ = s_tx.send(Ok(0)); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn cache_session_fails_for_gap_in_window() { - // Session index of the tip of our fake test chain. - let session: SessionIndex = 100; - let genesis_session: SessionIndex = 0; - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let finalized_header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let hash = header.hash(); - - let test_fut = { - let sender = ctx.sender().clone(); - Box::pin(async move { - let res = RollingSessionWindow::new(sender, hash, dummy_db_params()).await; - - assert!(res.is_err()); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(finalized_header.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, finalized_header.number); - let _ = s_tx.send(Ok(Some(finalized_header.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, finalized_header.hash()); - let _ = s_tx.send(Ok(0)); - } - ); - - // Unfinalized chain starts at geneisis block, so session 0 is how far we stretch. - // First 50 sessions are missing. - for i in genesis_session..=50 { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - let _ = s_tx.send(Ok(None)); - } - ); - } - // next 10 sessions are present - for i in 51..=60 { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); - } - ); - } - // gap of 1 session - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(61, j); - let _ = s_tx.send(Ok(None)); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn any_session_stretch_with_failure_allowed_for_unfinalized_chain() { - // Session index of the tip of our fake test chain. - let session: SessionIndex = 100; - let genesis_session: SessionIndex = 0; - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let finalized_header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let hash = header.hash(); - - let test_fut = { - let sender = ctx.sender().clone(); - Box::pin(async move { - let res = RollingSessionWindow::new(sender, hash, dummy_db_params()).await; - assert!(res.is_ok()); - let rsw = res.unwrap(); - // Since first 50 sessions are missing the earliest should be 50. - assert_eq!(rsw.earliest_session, 50); - assert_eq!(rsw.session_info.len(), 51); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(finalized_header.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, finalized_header.number); - let _ = s_tx.send(Ok(Some(finalized_header.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, finalized_header.hash()); - let _ = s_tx.send(Ok(0)); - } - ); - - // Unfinalized chain starts at geneisis block, so session 0 is how far we stretch. - // We also test if failure is allowed for 50 first missing sessions. - for i in genesis_session..=session { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - - let _ = s_tx.send(Ok(if i < 50 { - None - } else { - Some(dummy_session_info(i)) - })); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn any_session_unavailable_for_caching_means_no_change() { - let session: SessionIndex = 6; - let start_session = session.saturating_sub(SESSION_WINDOW_SIZE.get() - 1); - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let finalized_header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let hash = header.hash(); - - let test_fut = { - let sender = ctx.sender().clone(); - Box::pin(async move { - let res = RollingSessionWindow::new(sender, hash, dummy_db_params()).await; - assert!(res.is_err()); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(finalized_header.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, finalized_header.number); - let _ = s_tx.send(Ok(Some(finalized_header.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, finalized_header.hash()); - let _ = s_tx.send(Ok(session)); - } - ); - - for i in start_session..=session { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - - let _ = s_tx.send(Ok(if i == session { - None - } else { - Some(dummy_session_info(i)) - })); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn request_session_info_for_genesis() { - let session: SessionIndex = 0; - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let hash = header.hash(); - - let test_fut = { - Box::pin(async move { - let sender = ctx.sender().clone(); - let window = - RollingSessionWindow::new(sender, hash, dummy_db_params()).await.unwrap(); - - assert_eq!(window.earliest_session, session); - assert_eq!(window.session_info, vec![dummy_session_info(session)]); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( - s_tx, - )) => { - let _ = s_tx.send(Ok(header.number)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( - block_number, - s_tx, - )) => { - assert_eq!(block_number, header.number); - let _ = s_tx.send(Ok(Some(header.hash()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, header.hash()); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(s, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(s, session); - - let _ = s_tx.send(Ok(Some(dummy_session_info(s)))); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } -} From ba1f65493d91d4ab1787af2fd6fe880f1da90586 Mon Sep 17 00:00:00 2001 From: Oliver Tale-Yazdi Date: Tue, 30 May 2023 18:27:12 +0200 Subject: [PATCH 17/28] pallet-para-config: Remove remnant WeightInfo functions (#7308) * pallet-para-config: Remove remnant WeightInfo functions Signed-off-by: Oliver Tale-Yazdi * set_config_with_weight begone Signed-off-by: Oliver Tale-Yazdi * ".git/.scripts/commands/bench/bench.sh" runtime kusama-dev runtime_parachains::configuration --------- Signed-off-by: Oliver Tale-Yazdi Co-authored-by: command-bot <> --- .../runtime_parachains_configuration.rs | 80 ++++++++----------- runtime/parachains/src/configuration.rs | 4 - .../runtime_parachains_configuration.rs | 19 +---- .../runtime_parachains_configuration.rs | 19 +---- .../runtime_parachains_configuration.rs | 17 +--- 5 files changed, 36 insertions(+), 103 deletions(-) diff --git a/runtime/kusama/src/weights/runtime_parachains_configuration.rs b/runtime/kusama/src/weights/runtime_parachains_configuration.rs index 109cbcce1a8d..8fa5b6e33393 100644 --- a/runtime/kusama/src/weights/runtime_parachains_configuration.rs +++ b/runtime/kusama/src/weights/runtime_parachains_configuration.rs @@ -17,24 +17,26 @@ //! Autogenerated weights for `runtime_parachains::configuration` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-04-28, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-05-30, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot +// target/production/polkadot // benchmark // pallet -// --chain=kusama-dev // --steps=50 // --repeat=20 -// --pallet=runtime_parachains::configuration // --extrinsic=* // --execution=wasm // --wasm-execution=compiled +// --heap-pages=4096 +// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/polkadot/.git/.artifacts/bench.json +// --pallet=runtime_parachains::configuration +// --chain=kusama-dev // --header=./file_header.txt -// --output=./runtime/kusama/src/weights/runtime_parachains_configuration.rs +// --output=./runtime/kusama/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -55,11 +57,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_block_number() -> Weight { // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 9_482_000 picoseconds. - Weight::from_parts(9_845_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) + // Measured: `127` + // Estimated: `1612` + // Minimum execution time: 9_471_000 picoseconds. + Weight::from_parts(9_872_000, 0) + .saturating_add(Weight::from_parts(0, 1612)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -71,11 +73,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_u32() -> Weight { // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 9_689_000 picoseconds. - Weight::from_parts(9_960_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) + // Measured: `127` + // Estimated: `1612` + // Minimum execution time: 9_555_000 picoseconds. + Weight::from_parts(9_800_000, 0) + .saturating_add(Weight::from_parts(0, 1612)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -87,27 +89,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_option_u32() -> Weight { // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 9_523_000 picoseconds. - Weight::from_parts(9_736_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: Configuration PendingConfigs (r:1 w:1) - /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) - /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) - /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) - fn set_config_with_weight() -> Weight { - // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 9_443_000 picoseconds. - Weight::from_parts(9_679_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) + // Measured: `127` + // Estimated: `1612` + // Minimum execution time: 9_623_000 picoseconds. + Weight::from_parts(9_832_000, 0) + .saturating_add(Weight::from_parts(0, 1612)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -129,11 +115,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_balance() -> Weight { // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 9_460_000 picoseconds. - Weight::from_parts(9_716_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) + // Measured: `127` + // Estimated: `1612` + // Minimum execution time: 9_482_000 picoseconds. + Weight::from_parts(9_797_000, 0) + .saturating_add(Weight::from_parts(0, 1612)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -145,11 +131,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_executor_params() -> Weight { // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 10_279_000 picoseconds. - Weight::from_parts(10_615_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) + // Measured: `127` + // Estimated: `1612` + // Minimum execution time: 10_753_000 picoseconds. + Weight::from_parts(11_009_000, 0) + .saturating_add(Weight::from_parts(0, 1612)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index 386a06d92d56..dd0fcd67e5d3 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -438,7 +438,6 @@ pub trait WeightInfo { fn set_config_with_block_number() -> Weight; fn set_config_with_u32() -> Weight; fn set_config_with_option_u32() -> Weight; - fn set_config_with_weight() -> Weight; fn set_config_with_balance() -> Weight; fn set_hrmp_open_request_ttl() -> Weight; fn set_config_with_executor_params() -> Weight; @@ -455,9 +454,6 @@ impl WeightInfo for TestWeightInfo { fn set_config_with_option_u32() -> Weight { Weight::MAX } - fn set_config_with_weight() -> Weight { - Weight::MAX - } fn set_config_with_balance() -> Weight { Weight::MAX } diff --git a/runtime/polkadot/src/weights/runtime_parachains_configuration.rs b/runtime/polkadot/src/weights/runtime_parachains_configuration.rs index f1ae7bbad4e0..292b8916dad0 100644 --- a/runtime/polkadot/src/weights/runtime_parachains_configuration.rs +++ b/runtime/polkadot/src/weights/runtime_parachains_configuration.rs @@ -101,24 +101,7 @@ impl runtime_parachains::configuration::WeightInfo for .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: Configuration PendingConfigs (r:1 w:1) - /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: Configuration ActiveConfig (r:1 w:0) - /// Proof Skipped: Configuration ActiveConfig (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) - /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) - /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) - fn set_config_with_weight() -> Weight { - // Proof Size summary in bytes: - // Measured: `393` - // Estimated: `1878` - // Minimum execution time: 12_999_000 picoseconds. - Weight::from_parts(13_465_000, 0) - .saturating_add(Weight::from_parts(0, 1878)) - .saturating_add(T::DbWeight::get().reads(4)) - .saturating_add(T::DbWeight::get().writes(1)) - } + /// Storage: Benchmark Override (r:0 w:0) /// Proof Skipped: Benchmark Override (max_values: None, max_size: None, mode: Measured) fn set_hrmp_open_request_ttl() -> Weight { diff --git a/runtime/rococo/src/weights/runtime_parachains_configuration.rs b/runtime/rococo/src/weights/runtime_parachains_configuration.rs index fcc8ed4840c8..11effbc4e63e 100644 --- a/runtime/rococo/src/weights/runtime_parachains_configuration.rs +++ b/runtime/rococo/src/weights/runtime_parachains_configuration.rs @@ -101,24 +101,7 @@ impl runtime_parachains::configuration::WeightInfo for .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: Configuration PendingConfigs (r:1 w:1) - /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: Configuration ActiveConfig (r:1 w:0) - /// Proof Skipped: Configuration ActiveConfig (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) - /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) - /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) - fn set_config_with_weight() -> Weight { - // Proof Size summary in bytes: - // Measured: `397` - // Estimated: `1882` - // Minimum execution time: 12_914_000 picoseconds. - Weight::from_parts(13_395_000, 0) - .saturating_add(Weight::from_parts(0, 1882)) - .saturating_add(T::DbWeight::get().reads(4)) - .saturating_add(T::DbWeight::get().writes(1)) - } + /// Storage: Benchmark Override (r:0 w:0) /// Proof Skipped: Benchmark Override (max_values: None, max_size: None, mode: Measured) fn set_hrmp_open_request_ttl() -> Weight { diff --git a/runtime/westend/src/weights/runtime_parachains_configuration.rs b/runtime/westend/src/weights/runtime_parachains_configuration.rs index aaa7536bdd3d..ec769bb2fa15 100644 --- a/runtime/westend/src/weights/runtime_parachains_configuration.rs +++ b/runtime/westend/src/weights/runtime_parachains_configuration.rs @@ -95,22 +95,7 @@ impl runtime_parachains::configuration::WeightInfo for .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: Configuration PendingConfigs (r:1 w:1) - /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) - /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) - /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) - fn set_config_with_weight() -> Weight { - // Proof Size summary in bytes: - // Measured: `90` - // Estimated: `1575` - // Minimum execution time: 10_293_000 picoseconds. - Weight::from_parts(10_619_000, 0) - .saturating_add(Weight::from_parts(0, 1575)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(1)) - } + /// Storage: Benchmark Override (r:0 w:0) /// Proof Skipped: Benchmark Override (max_values: None, max_size: None, mode: Measured) fn set_hrmp_open_request_ttl() -> Weight { From b7a42f78edb1cc4e1c30a5a27923570b786d4246 Mon Sep 17 00:00:00 2001 From: Francisco Aguirre Date: Wed, 31 May 2023 07:09:44 -0300 Subject: [PATCH 18/28] XCM: PayOverXcm config (#6900) * Move XCM query functionality to trait * Fix tests * Add PayOverXcm implementation * fix the PayOverXcm trait to compile * moved doc comment out of trait implmeentation and to the trait * PayOverXCM documentation * Change documentation a bit * Added empty benchmark methods implementation and changed docs * update PayOverXCM to convert AccountIds to MultiLocations * Implement benchmarking method * Change v3 to latest * Descend origin to an asset sender (#6970) * descend origin to an asset sender * sender as tuple of dest and sender * Add more variants to the QueryResponseStatus enum * Change Beneficiary to Into<[u8; 32]> * update PayOverXcm to return concrete errors and use AccountId as sender * use polkadot-primitives for AccountId * fix dependency to use polkadot-core-primitives * force Unpaid instruction to the top of the instructions list * modify report_outcome to accept interior argument * use new_query directly for building final xcm query, instead of report_outcome * fix usage of new_query to use the XcmQueryHandler * fix usage of new_query to use the XcmQueryHandler * tiny method calling fix * xcm query handler (#7198) * drop redundant query status * rename ReportQueryStatus to OuterQueryStatus * revert rename of QueryResponseStatus * update mapping * Update xcm/xcm-builder/src/pay.rs Co-authored-by: Gavin Wood * Updates * Docs * Fix benchmarking stuff * Destination can be determined based on asset_kind * Tweaking API to minimise clones * Some repotting and docs --------- Co-authored-by: Anthony Alaribe Co-authored-by: Muharem Ismailov Co-authored-by: Anthony Alaribe Co-authored-by: Gavin Wood --- runtime/test-runtime/src/lib.rs | 3 +- xcm/pallet-xcm/src/lib.rs | 117 ++++++------ xcm/pallet-xcm/src/mock.rs | 3 +- xcm/pallet-xcm/src/tests.rs | 8 +- xcm/xcm-builder/Cargo.toml | 3 +- xcm/xcm-builder/src/lib.rs | 8 +- xcm/xcm-builder/src/location_conversion.rs | 20 ++ xcm/xcm-builder/src/pay.rs | 205 +++++++++++++++++++++ xcm/xcm-executor/src/traits/mod.rs | 2 +- xcm/xcm-executor/src/traits/on_response.rs | 71 ++++++- 10 files changed, 375 insertions(+), 65 deletions(-) create mode 100644 xcm/xcm-builder/src/pay.rs diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 767f8bda68d7..a361a2a6ec5c 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -546,6 +546,7 @@ pub mod pallet_test_notifier { use pallet_xcm::ensure_response; use sp_runtime::DispatchResult; use xcm::latest::prelude::*; + use xcm_executor::traits::QueryHandler as XcmQueryHandler; #[pallet::pallet] pub struct Pallet(_); @@ -581,7 +582,7 @@ pub mod pallet_test_notifier { let id = who .using_encoded(|mut d| <[u8; 32]>::decode(&mut d)) .map_err(|_| Error::::BadAccountFormat)?; - let qid = pallet_xcm::Pallet::::new_query( + let qid = as XcmQueryHandler>::new_query( Junction::AccountId32 { network: None, id }, 100u32.into(), Here, diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 29c10de003ae..61243c7d682b 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -52,8 +52,8 @@ use frame_system::pallet_prelude::*; pub use pallet::*; use xcm_executor::{ traits::{ - CheckSuspension, ClaimAssets, DropAssets, MatchesFungible, OnResponse, - VersionChangeNotifier, WeightBounds, + CheckSuspension, ClaimAssets, DropAssets, MatchesFungible, OnResponse, QueryHandler, + QueryResponseStatus, VersionChangeNotifier, WeightBounds, }, Assets, }; @@ -1126,6 +1126,66 @@ pub mod pallet { /// The maximum number of distinct assets allowed to be transferred in a single helper extrinsic. const MAX_ASSETS_FOR_TRANSFER: usize = 2; +impl QueryHandler for Pallet { + type QueryId = u64; + type BlockNumber = T::BlockNumber; + type Error = XcmError; + type UniversalLocation = T::UniversalLocation; + + /// Attempt to create a new query ID and register it as a query that is yet to respond. + fn new_query( + responder: impl Into, + timeout: T::BlockNumber, + match_querier: impl Into, + ) -> Self::QueryId { + Self::do_new_query(responder, None, timeout, match_querier).into() + } + + /// To check the status of the query, use `fn query()` passing the resultant `QueryId` + /// value. + fn report_outcome( + message: &mut Xcm<()>, + responder: impl Into, + timeout: Self::BlockNumber, + ) -> Result { + let responder = responder.into(); + let destination = Self::UniversalLocation::get() + .invert_target(&responder) + .map_err(|()| XcmError::LocationNotInvertible)?; + let query_id = Self::new_query(responder, timeout, Here); + let response_info = QueryResponseInfo { destination, query_id, max_weight: Weight::zero() }; + let report_error = Xcm(vec![ReportError(response_info)]); + message.0.insert(0, SetAppendix(report_error)); + Ok(query_id) + } + + /// Removes response when ready and emits [Event::ResponseTaken] event. + fn take_response(query_id: Self::QueryId) -> QueryResponseStatus { + match Queries::::get(query_id) { + Some(QueryStatus::Ready { response, at }) => match response.try_into() { + Ok(response) => { + Queries::::remove(query_id); + Self::deposit_event(Event::ResponseTaken { query_id }); + QueryResponseStatus::Ready { response, at } + }, + Err(_) => QueryResponseStatus::UnexpectedVersion, + }, + Some(QueryStatus::Pending { timeout, .. }) => QueryResponseStatus::Pending { timeout }, + Some(_) => QueryResponseStatus::UnexpectedVersion, + None => QueryResponseStatus::NotFound, + } + } + + #[cfg(feature = "runtime-benchmarks")] + fn expect_response(id: Self::QueryId, response: Response) { + let response = response.into(); + Queries::::insert( + id, + QueryStatus::Ready { response, at: frame_system::Pallet::::block_number() }, + ); + } +} + impl Pallet { fn do_reserve_transfer_assets( origin: OriginFor, @@ -1497,36 +1557,6 @@ impl Pallet { }) } - /// Consume `message` and return another which is equivalent to it except that it reports - /// back the outcome. - /// - /// - `message`: The message whose outcome should be reported. - /// - `responder`: The origin from which a response should be expected. - /// - `timeout`: The block number after which it is permissible for `notify` not to be - /// called even if a response is received. - /// - /// `report_outcome` may return an error if the `responder` is not invertible. - /// - /// It is assumed that the querier of the response will be `Here`. - /// - /// To check the status of the query, use `fn query()` passing the resultant `QueryId` - /// value. - pub fn report_outcome( - message: &mut Xcm<()>, - responder: impl Into, - timeout: T::BlockNumber, - ) -> Result { - let responder = responder.into(); - let destination = T::UniversalLocation::get() - .invert_target(&responder) - .map_err(|()| XcmError::LocationNotInvertible)?; - let query_id = Self::new_query(responder, timeout, Here); - let response_info = QueryResponseInfo { destination, query_id, max_weight: Weight::zero() }; - let report_error = Xcm(vec![ReportError(response_info)]); - message.0.insert(0, SetAppendix(report_error)); - Ok(query_id) - } - /// Consume `message` and return another which is equivalent to it except that it reports /// back the outcome and dispatches `notify` on this chain. /// @@ -1568,15 +1598,6 @@ impl Pallet { Ok(()) } - /// Attempt to create a new query ID and register it as a query that is yet to respond. - pub fn new_query( - responder: impl Into, - timeout: T::BlockNumber, - match_querier: impl Into, - ) -> u64 { - Self::do_new_query(responder, None, timeout, match_querier) - } - /// Attempt to create a new query ID and register it as a query that is yet to respond, and /// which will call a dispatchable when a response happens. pub fn new_notify_query( @@ -1591,20 +1612,6 @@ impl Pallet { Self::do_new_query(responder, Some(notify), timeout, match_querier) } - /// Attempt to remove and return the response of query with ID `query_id`. - /// - /// Returns `None` if the response is not (yet) available. - pub fn take_response(query_id: QueryId) -> Option<(Response, T::BlockNumber)> { - if let Some(QueryStatus::Ready { response, at }) = Queries::::get(query_id) { - let response = response.try_into().ok()?; - Queries::::remove(query_id); - Self::deposit_event(Event::ResponseTaken { query_id }); - Some((response, at)) - } else { - None - } - } - /// Note that a particular destination to whom we would like to send a message is unknown /// and queue it for version discovery. fn note_unknown_version(dest: &MultiLocation) { diff --git a/xcm/pallet-xcm/src/mock.rs b/xcm/pallet-xcm/src/mock.rs index de3f8d4957a3..6cfc1447e2b4 100644 --- a/xcm/pallet-xcm/src/mock.rs +++ b/xcm/pallet-xcm/src/mock.rs @@ -50,6 +50,7 @@ pub mod pallet_test_notifier { use frame_system::pallet_prelude::*; use sp_runtime::DispatchResult; use xcm::latest::prelude::*; + use xcm_executor::traits::QueryHandler; #[pallet::pallet] pub struct Pallet(_); @@ -85,7 +86,7 @@ pub mod pallet_test_notifier { let id = who .using_encoded(|mut d| <[u8; 32]>::decode(&mut d)) .map_err(|_| Error::::BadAccountFormat)?; - let qid = crate::Pallet::::new_query( + let qid = as QueryHandler>::new_query( Junction::AccountId32 { network: None, id }, 100u32.into(), querier, diff --git a/xcm/pallet-xcm/src/tests.rs b/xcm/pallet-xcm/src/tests.rs index 6415fe03d895..2ad13dced936 100644 --- a/xcm/pallet-xcm/src/tests.rs +++ b/xcm/pallet-xcm/src/tests.rs @@ -28,7 +28,7 @@ use sp_runtime::traits::{AccountIdConversion, BlakeTwo256, Hash}; use xcm::{latest::QueryResponseInfo, prelude::*}; use xcm_builder::AllowKnownQueryResponses; use xcm_executor::{ - traits::{Properties, ShouldExecute}, + traits::{Properties, QueryHandler, QueryResponseStatus, ShouldExecute}, XcmExecutor, }; @@ -170,7 +170,8 @@ fn report_outcome_works() { }) ); - let response = Some((Response::ExecutionResult(None), 1)); + let response = + QueryResponseStatus::Ready { response: Response::ExecutionResult(None), at: 1 }; assert_eq!(XcmPallet::take_response(0), response); }); } @@ -270,7 +271,8 @@ fn custom_querier_works() { }) ); - let response = Some((Response::ExecutionResult(None), 1)); + let response = + QueryResponseStatus::Ready { response: Response::ExecutionResult(None), at: 1 }; assert_eq!(XcmPallet::take_response(0), response); }); } diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index 6f4a4f9dde14..465d338fd0a7 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -36,7 +36,8 @@ polkadot-test-runtime = { path = "../../runtime/test-runtime" } default = ["std"] runtime-benchmarks = [ "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks" + "frame-system/runtime-benchmarks", + "xcm-executor/runtime-benchmarks", ] std = [ "log/std", diff --git a/xcm/xcm-builder/src/lib.rs b/xcm/xcm-builder/src/lib.rs index 9ff37209c015..124e83d3c338 100644 --- a/xcm/xcm-builder/src/lib.rs +++ b/xcm/xcm-builder/src/lib.rs @@ -28,8 +28,9 @@ pub mod test_utils; mod location_conversion; pub use location_conversion::{ - Account32Hash, AccountId32Aliases, AccountKey20Aliases, ChildParachainConvertsVia, - GlobalConsensusParachainConvertsFor, ParentIsPreset, SiblingParachainConvertsVia, + Account32Hash, AccountId32Aliases, AccountKey20Aliases, AliasesIntoAccountId32, + ChildParachainConvertsVia, GlobalConsensusParachainConvertsFor, ParentIsPreset, + SiblingParachainConvertsVia, }; mod origin_conversion; @@ -95,3 +96,6 @@ pub use universal_exports::{ ExporterFor, HaulBlob, HaulBlobError, HaulBlobExporter, NetworkExportTable, SovereignPaidRemoteExporter, UnpaidLocalExporter, UnpaidRemoteExporter, }; + +mod pay; +pub use pay::{FixedLocation, LocatableAssetId, PayAccountId32OnChainOverXcm, PayOverXcm}; diff --git a/xcm/xcm-builder/src/location_conversion.rs b/xcm/xcm-builder/src/location_conversion.rs index 66c9fc6dd31d..bafec5da4a30 100644 --- a/xcm/xcm-builder/src/location_conversion.rs +++ b/xcm/xcm-builder/src/location_conversion.rs @@ -232,6 +232,26 @@ impl>, AccountId: From<[u8; 32]> + Into<[u8; 32]> } } +/// Conversion implementation which converts from a `[u8; 32]`-based `AccountId` into a +/// `MultiLocation` consisting solely of a `AccountId32` junction with a fixed value for its +/// network (provided by `Network`) and the `AccountId`'s `[u8; 32]` datum for the `id`. +pub struct AliasesIntoAccountId32(PhantomData<(Network, AccountId)>); +impl<'a, Network: Get>, AccountId: Clone + Into<[u8; 32]> + Clone> + Convert<&'a AccountId, MultiLocation> for AliasesIntoAccountId32 +{ + fn convert(who: &AccountId) -> Result { + Ok(AccountId32 { network: Network::get(), id: who.clone().into() }.into()) + } +} + +impl>, AccountId: Into<[u8; 32]> + Clone> + Convert for AliasesIntoAccountId32 +{ + fn convert(who: AccountId) -> Result { + Ok(AccountId32 { network: Network::get(), id: who.into() }.into()) + } +} + pub struct AccountKey20Aliases(PhantomData<(Network, AccountId)>); impl>, AccountId: From<[u8; 20]> + Into<[u8; 20]> + Clone> Convert for AccountKey20Aliases diff --git a/xcm/xcm-builder/src/pay.rs b/xcm/xcm-builder/src/pay.rs new file mode 100644 index 000000000000..e8cd2b2bb287 --- /dev/null +++ b/xcm/xcm-builder/src/pay.rs @@ -0,0 +1,205 @@ +// Copyright Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! `PayOverXcm` struct for paying through XCM and getting the status back. + +use frame_support::traits::{ + tokens::{Pay, PaymentStatus}, + Get, +}; +use sp_runtime::traits::Convert; +use sp_std::{marker::PhantomData, vec}; +use xcm::{opaque::lts::Weight, prelude::*}; +use xcm_executor::traits::{QueryHandler, QueryResponseStatus}; + +/// Implementation of the `frame_support::traits::tokens::Pay` trait, to allow +/// for XCM-based payments of a given `Balance` of some asset ID existing on some chain under +/// ownership of some `Interior` location of the local chain to a particular `Beneficiary`. The +/// `AssetKind` value can be converted into both the XCM `AssetId` (via and `Into` bound) and the +/// the destination chain's location, via the `AssetKindToLocatableAsset` type parameter. +/// +/// This relies on the XCM `TransferAsset` instruction. A trait `BeneficiaryRefToLocation` must be +/// provided in order to convert the `Beneficiary` reference into a location usable by +/// `TransferAsset`. +/// +/// `PayOverXcm::pay` is asynchronous, and returns a `QueryId` which can then be used in +/// `check_payment` to check the status of the XCM transaction. +/// +/// See also `PayAccountId32OverXcm` which is similar to this except that `BeneficiaryRefToLocation` +/// need not be supplied and `Beneficiary` must implement `Into<[u8; 32]>`. +pub struct PayOverXcm< + Interior, + Router, + Querier, + Timeout, + Beneficiary, + AssetKind, + AssetKindToLocatableAsset, + BeneficiaryRefToLocation, +>( + PhantomData<( + Interior, + Router, + Querier, + Timeout, + Beneficiary, + AssetKind, + AssetKindToLocatableAsset, + BeneficiaryRefToLocation, + )>, +); +impl< + Interior: Get, + Router: SendXcm, + Querier: QueryHandler, + Timeout: Get, + Beneficiary: Clone, + AssetKind, + AssetKindToLocatableAsset: Convert, + BeneficiaryRefToLocation: for<'a> Convert<&'a Beneficiary, MultiLocation>, + > Pay + for PayOverXcm< + Interior, + Router, + Querier, + Timeout, + Beneficiary, + AssetKind, + AssetKindToLocatableAsset, + BeneficiaryRefToLocation, + > +{ + type Beneficiary = Beneficiary; + type AssetKind = AssetKind; + type Balance = u128; + type Id = Querier::QueryId; + type Error = xcm::latest::Error; + + fn pay( + who: &Self::Beneficiary, + asset_kind: Self::AssetKind, + amount: Self::Balance, + ) -> Result { + let locatable = AssetKindToLocatableAsset::convert(asset_kind); + let LocatableAssetId { asset_id, location: asset_location } = locatable; + let destination = Querier::UniversalLocation::get() + .invert_target(&asset_location) + .map_err(|()| Self::Error::LocationNotInvertible)?; + let beneficiary = BeneficiaryRefToLocation::convert(&who); + + let query_id = Querier::new_query(asset_location, Timeout::get(), Interior::get()); + + let message = Xcm(vec![ + UnpaidExecution { weight_limit: Unlimited, check_origin: None }, + SetAppendix(Xcm(vec![ReportError(QueryResponseInfo { + destination, + query_id, + max_weight: Weight::zero(), + })])), + DescendOrigin(Interior::get()), + TransferAsset { + beneficiary, + assets: vec![MultiAsset { id: asset_id, fun: Fungibility::Fungible(amount) }] + .into(), + }, + ]); + + let (ticket, _) = Router::validate(&mut Some(asset_location), &mut Some(message))?; + Router::deliver(ticket)?; + Ok(query_id.into()) + } + + fn check_payment(id: Self::Id) -> PaymentStatus { + use QueryResponseStatus::*; + match Querier::take_response(id) { + Ready { response, .. } => match response { + Response::ExecutionResult(None) => PaymentStatus::Success, + Response::ExecutionResult(Some(_)) => PaymentStatus::Failure, + _ => PaymentStatus::Unknown, + }, + Pending { .. } => PaymentStatus::InProgress, + NotFound | UnexpectedVersion => PaymentStatus::Unknown, + } + } + + #[cfg(feature = "runtime-benchmarks")] + fn ensure_successful(_: &Self::Beneficiary, _: Self::AssetKind, _: Self::Balance) { + // We cannot generally guarantee this will go through successfully since we don't have any + // control over the XCM transport layers. We just assume that the benchmark environment + // will be sending it somewhere sensible. + } + + #[cfg(feature = "runtime-benchmarks")] + fn ensure_concluded(id: Self::Id) { + Querier::expect_response(id, Response::ExecutionResult(None)); + } +} + +/// Specialization of the [PayOverXcm] trait to allow `[u8; 32]`-based `AccountId` values to be +/// paid on a remote chain. +/// +/// Implementation of the [frame_support::traits::tokens::Pay] trait, to allow +/// for XCM payments of a given `Balance` of `AssetKind` existing on a `DestinationChain` under +/// ownership of some `Interior` location of the local chain to a particular `Beneficiary`. +/// +/// This relies on the XCM `TransferAsset` instruction. `Beneficiary` must implement +/// `Into<[u8; 32]>` (as 32-byte `AccountId`s generally do), and the actual XCM beneficiary will be +/// the location consisting of a single `AccountId32` junction with an appropriate account and no +/// specific network. +/// +/// `PayOverXcm::pay` is asynchronous, and returns a `QueryId` which can then be used in +/// `check_payment` to check the status of the XCM transaction. +pub type PayAccountId32OnChainOverXcm< + DestinationChain, + Interior, + Router, + Querier, + Timeout, + Beneficiary, + AssetKind, +> = PayOverXcm< + Interior, + Router, + Querier, + Timeout, + Beneficiary, + AssetKind, + crate::AliasesIntoAccountId32<(), Beneficiary>, + FixedLocation, +>; + +/// Simple struct which contains both an XCM `location` and `asset_id` to identift an asset which +/// exists on some chain. +pub struct LocatableAssetId { + /// The asset's ID. + pub asset_id: AssetId, + /// The (relative) location in which the asset ID is meaningful. + pub location: MultiLocation, +} + +/// Adapter `struct` which implements a conversion from any `AssetKind` into a [LocatableAsset] +/// value using a fixed `Location` for the `location` field. +pub struct FixedLocation(sp_std::marker::PhantomData); +impl, AssetKind: Into> Convert + for FixedLocation +{ + fn convert(value: AssetKind) -> LocatableAssetId { + LocatableAssetId { asset_id: value.into(), location: Location::get() } + } +} + +#[test] +fn it_builds() {} diff --git a/xcm/xcm-executor/src/traits/mod.rs b/xcm/xcm-executor/src/traits/mod.rs index 3b904630d73e..cac9c73ee277 100644 --- a/xcm/xcm-executor/src/traits/mod.rs +++ b/xcm/xcm-executor/src/traits/mod.rs @@ -38,7 +38,7 @@ pub use token_matching::{ Error, MatchesFungible, MatchesFungibles, MatchesNonFungible, MatchesNonFungibles, }; mod on_response; -pub use on_response::{OnResponse, VersionChangeNotifier}; +pub use on_response::{OnResponse, QueryHandler, QueryResponseStatus, VersionChangeNotifier}; mod should_execute; pub use should_execute::{CheckSuspension, Properties, ShouldExecute}; mod transact_asset; diff --git a/xcm/xcm-executor/src/traits/on_response.rs b/xcm/xcm-executor/src/traits/on_response.rs index dcb7d924d799..34bb7eb9597d 100644 --- a/xcm/xcm-executor/src/traits/on_response.rs +++ b/xcm/xcm-executor/src/traits/on_response.rs @@ -14,8 +14,17 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +use crate::Xcm; +use core::result; +use frame_support::{ + dispatch::fmt::Debug, + pallet_prelude::{Get, TypeInfo}, +}; +use parity_scale_codec::{FullCodec, MaxEncodedLen}; +use sp_arithmetic::traits::Zero; use xcm::latest::{ - Error as XcmError, MultiLocation, QueryId, Response, Result as XcmResult, Weight, XcmContext, + Error as XcmError, InteriorMultiLocation, MultiLocation, QueryId, Response, + Result as XcmResult, Weight, XcmContext, }; /// Define what needs to be done upon receiving a query response. @@ -94,3 +103,63 @@ impl VersionChangeNotifier for () { false } } + +/// The possible state of an XCM query response. +#[derive(Debug, PartialEq, Eq)] +pub enum QueryResponseStatus { + /// The response has arrived, and includes the inner Response and the block number it arrived at. + Ready { response: Response, at: BlockNumber }, + /// The response has not yet arrived, the XCM might still be executing or the response might be in transit. + Pending { timeout: BlockNumber }, + /// No response with the given `QueryId` was found, or the response was already queried and removed from local storage. + NotFound, + /// Got an unexpected XCM version. + UnexpectedVersion, +} + +/// Provides methods to expect responses from XCMs and query their status. +pub trait QueryHandler { + type QueryId: From + + FullCodec + + MaxEncodedLen + + TypeInfo + + Clone + + Eq + + PartialEq + + Debug + + Copy; + type BlockNumber: Zero; + type Error; + type UniversalLocation: Get; + + /// Attempt to create a new query ID and register it as a query that is yet to respond. + fn new_query( + responder: impl Into, + timeout: Self::BlockNumber, + match_querier: impl Into, + ) -> QueryId; + + /// Consume `message` and return another which is equivalent to it except that it reports + /// back the outcome. + /// + /// - `message`: The message whose outcome should be reported. + /// - `responder`: The origin from which a response should be expected. + /// - `timeout`: The block number after which it is permissible to return `NotFound` from `take_response`. + /// + /// `report_outcome` may return an error if the `responder` is not invertible. + /// + /// It is assumed that the querier of the response will be `Here`. + /// The response can be queried with `take_response`. + fn report_outcome( + message: &mut Xcm<()>, + responder: impl Into, + timeout: Self::BlockNumber, + ) -> result::Result; + + /// Attempt to remove and return the response of query with ID `query_id`. + fn take_response(id: Self::QueryId) -> QueryResponseStatus; + + /// Makes sure to expect a response with the given id. + #[cfg(feature = "runtime-benchmarks")] + fn expect_response(id: Self::QueryId, response: Response); +} From 478c6596f2f9137f2d66709665d96d01d5c189e1 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Wed, 31 May 2023 15:53:39 +0300 Subject: [PATCH 19/28] Companion for #14265 (#7307) * Update Cargo.lock Signed-off-by: Alexandru Vasile * Update Cargo.lock Signed-off-by: Alexandru Vasile --------- Signed-off-by: Alexandru Vasile Co-authored-by: parity-processbot <> --- Cargo.lock | 523 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 294 insertions(+), 229 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 147a87a96a01..339b842413b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "hash-db", "log", @@ -1114,6 +1114,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + [[package]] name = "concurrent-queue" version = "1.2.2" @@ -1918,6 +1924,33 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "docify" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18b972b74c30cbe838fc6a07665132ff94f257350e26fd01d80bc59ee7fcf129" +dependencies = [ + "docify_macros", +] + +[[package]] +name = "docify_macros" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c93004d1011191c56df9e853dca42f2012e7488638bcd5078935f5ce43e06cf3" +dependencies = [ + "common-path", + "derive-syn-parse", + "lazy_static", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "syn 2.0.16", + "termcolor", + "walkdir", +] + [[package]] name = "downcast" version = "0.11.0" @@ -2498,7 +2531,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", ] @@ -2521,7 +2554,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-support-procedural", @@ -2546,7 +2579,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "Inflector", "array-bytes", @@ -2593,7 +2626,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2604,7 +2637,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2621,7 +2654,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -2650,7 +2683,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-recursion", "futures", @@ -2671,7 +2704,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "bitflags", "environmental", @@ -2680,6 +2713,7 @@ dependencies = [ "impl-trait-for-tuples", "k256", "log", + "macro_magic", "once_cell", "parity-scale-codec", "paste", @@ -2705,13 +2739,14 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "Inflector", "cfg-expr", "derive-syn-parse", "frame-support-procedural-tools", "itertools", + "macro_magic", "proc-macro-warning", "proc-macro2", "quote", @@ -2721,7 +2756,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2733,7 +2768,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro2", "quote", @@ -2743,7 +2778,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2763,13 +2798,14 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-version", + "static_assertions", "trybuild", ] [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -2781,7 +2817,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "cfg-if", "frame-support", @@ -2800,7 +2836,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -2815,7 +2851,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "sp-api", @@ -2824,7 +2860,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "parity-scale-codec", @@ -3006,7 +3042,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "chrono", "frame-election-provider-support", @@ -4722,6 +4758,53 @@ dependencies = [ "libc", ] +[[package]] +name = "macro_magic" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e7c1b5ffe892e88b288611ccf55f9c4f4e43214aea6f7f80f0c2c53c85e68e" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.16", +] + +[[package]] +name = "macro_magic_core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e812c59de90e5d50405131c676dad7d239de39ccc975620c72d467c70138851" +dependencies = [ + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.16", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b1906fa06ee8c02b24595e121be94e0036cb64f9dce5e587edd1e823c87c94" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.16", +] + +[[package]] +name = "macro_magic_macros" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e8939ee52e99672a887d8ee13776d0f54262c058ce7e911185fed8e43e3a59" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.16", +] + [[package]] name = "maplit" version = "1.0.2" @@ -4905,7 +4988,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "log", @@ -4924,7 +5007,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "anyhow", "jsonrpsee", @@ -5507,7 +5590,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5522,7 +5605,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -5538,7 +5621,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -5552,7 +5635,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5576,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5596,7 +5679,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5615,7 +5698,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5630,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -5649,7 +5732,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5673,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5691,7 +5774,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5710,7 +5793,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5727,7 +5810,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5744,7 +5827,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5762,7 +5845,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5785,7 +5868,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5798,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5816,8 +5899,9 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ + "docify", "frame-benchmarking", "frame-election-provider-support", "frame-support", @@ -5834,7 +5918,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5857,7 +5941,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5873,7 +5957,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5893,7 +5977,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5910,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5927,7 +6011,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5946,7 +6030,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5963,7 +6047,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5979,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -5995,7 +6079,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -6012,7 +6096,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6032,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6043,7 +6127,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -6060,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6084,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6101,7 +6185,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6116,7 +6200,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6134,7 +6218,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6149,7 +6233,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6168,7 +6252,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,7 +6269,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -6206,7 +6290,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6222,7 +6306,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -6236,7 +6320,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6259,7 +6343,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6270,7 +6354,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "log", "sp-arithmetic", @@ -6279,7 +6363,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "sp-api", @@ -6288,7 +6372,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6305,7 +6389,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6320,7 +6404,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6338,7 +6422,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6357,7 +6441,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-support", "frame-system", @@ -6373,7 +6457,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6389,7 +6473,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6401,7 +6485,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6418,7 +6502,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6433,7 +6517,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6449,7 +6533,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -6464,7 +6548,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-benchmarking", "frame-support", @@ -9593,7 +9677,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "log", "sp-core", @@ -9604,7 +9688,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures", @@ -9633,7 +9717,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "futures-timer", @@ -9656,7 +9740,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9671,7 +9755,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9690,7 +9774,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9701,7 +9785,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "chrono", @@ -9741,7 +9825,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "fnv", "futures", @@ -9768,7 +9852,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "hash-db", "kvdb", @@ -9794,7 +9878,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures", @@ -9819,7 +9903,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "fork-tree", @@ -9855,7 +9939,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "jsonrpsee", @@ -9877,7 +9961,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "async-channel", @@ -9913,7 +9997,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "jsonrpsee", @@ -9932,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9945,7 +10029,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -9985,7 +10069,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "finality-grandpa", "futures", @@ -10005,7 +10089,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures", @@ -10028,7 +10112,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "lru 0.10.0", "parity-scale-codec", @@ -10050,7 +10134,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10062,7 +10146,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "anyhow", "cfg-if", @@ -10080,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ansi_term", "futures", @@ -10096,7 +10180,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10110,7 +10194,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "async-channel", @@ -10129,13 +10213,13 @@ dependencies = [ "mockall", "parity-scale-codec", "parking_lot 0.12.1", + "partial_sort", "pin-project", "rand 0.8.5", "sc-block-builder", "sc-client-api", "sc-consensus", "sc-network-common", - "sc-peerset", "sc-utils", "serde", "serde_json", @@ -10149,13 +10233,14 @@ dependencies = [ "substrate-prometheus-endpoint", "thiserror", "unsigned-varint", + "wasm-timer", "zeroize", ] [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-channel", "cid", @@ -10176,7 +10261,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "async-trait", @@ -10188,7 +10273,6 @@ dependencies = [ "parity-scale-codec", "prost-build", "sc-consensus", - "sc-peerset", "sc-utils", "serde", "smallvec", @@ -10204,7 +10288,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ahash 0.8.2", "futures", @@ -10214,7 +10298,6 @@ dependencies = [ "lru 0.10.0", "sc-network", "sc-network-common", - "sc-peerset", "sp-runtime", "substrate-prometheus-endpoint", "tracing", @@ -10223,7 +10306,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "async-channel", @@ -10236,7 +10319,6 @@ dependencies = [ "sc-client-api", "sc-network", "sc-network-common", - "sc-peerset", "sp-blockchain", "sp-core", "sp-runtime", @@ -10246,7 +10328,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "async-channel", @@ -10265,7 +10347,6 @@ dependencies = [ "sc-consensus", "sc-network", "sc-network-common", - "sc-peerset", "sc-utils", "smallvec", "sp-arithmetic", @@ -10281,7 +10362,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "futures", @@ -10290,7 +10371,6 @@ dependencies = [ "parity-scale-codec", "sc-network", "sc-network-common", - "sc-peerset", "sc-utils", "sp-consensus", "sp-runtime", @@ -10300,7 +10380,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "bytes", @@ -10318,7 +10398,6 @@ dependencies = [ "sc-client-api", "sc-network", "sc-network-common", - "sc-peerset", "sc-utils", "sp-api", "sp-core", @@ -10328,26 +10407,10 @@ dependencies = [ "tracing", ] -[[package]] -name = "sc-peerset" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" -dependencies = [ - "futures", - "libp2p-identity", - "log", - "parking_lot 0.12.1", - "partial_sort", - "sc-utils", - "serde_json", - "sp-arithmetic", - "wasm-timer", -] - [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10356,7 +10419,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "jsonrpsee", @@ -10387,7 +10450,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10406,7 +10469,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "http", "jsonrpsee", @@ -10421,7 +10484,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "futures", @@ -10447,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "directories", @@ -10513,7 +10576,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "log", "parity-scale-codec", @@ -10524,7 +10587,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "clap 4.2.5", "fs4", @@ -10540,7 +10603,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10559,7 +10622,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "libc", @@ -10578,7 +10641,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "chrono", "futures", @@ -10597,7 +10660,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ansi_term", "atty", @@ -10628,7 +10691,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10639,7 +10702,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures", @@ -10666,13 +10729,15 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures", "log", + "parity-scale-codec", "serde", "sp-blockchain", + "sp-core", "sp-runtime", "thiserror", ] @@ -10680,7 +10745,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-channel", "futures", @@ -11228,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "hash-db", "log", @@ -11248,7 +11313,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "Inflector", "blake2", @@ -11261,8 +11326,8 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "23.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -11274,8 +11339,8 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "16.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "integer-sqrt", "num-traits", @@ -11289,7 +11354,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -11302,7 +11367,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "sp-api", @@ -11314,7 +11379,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "log", @@ -11332,7 +11397,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures", @@ -11347,7 +11412,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "parity-scale-codec", @@ -11365,7 +11430,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "parity-scale-codec", @@ -11386,7 +11451,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11405,7 +11470,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "finality-grandpa", "log", @@ -11423,7 +11488,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -11434,8 +11499,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "21.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "bitflags", @@ -11478,8 +11543,8 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "9.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "blake2b_simd", "byteorder", @@ -11492,8 +11557,8 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "9.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro2", "quote", @@ -11504,7 +11569,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11512,8 +11577,8 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro2", "quote", @@ -11522,8 +11587,8 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.14.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "0.19.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "environmental", "parity-scale-codec", @@ -11534,7 +11599,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11548,8 +11613,8 @@ dependencies = [ [[package]] name = "sp-io" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "23.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "bytes", "ed25519", @@ -11574,8 +11639,8 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "24.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "lazy_static", "sp-core", @@ -11585,8 +11650,8 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.14.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "0.27.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "parity-scale-codec", @@ -11600,7 +11665,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11609,7 +11674,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11620,7 +11685,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11638,7 +11703,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -11652,7 +11717,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "sp-api", "sp-core", @@ -11661,8 +11726,8 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "backtrace", "lazy_static", @@ -11672,7 +11737,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "rustc-hash", "serde", @@ -11681,8 +11746,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "24.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "either", "hash256-std-hasher", @@ -11703,8 +11768,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "17.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11721,8 +11786,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "11.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "Inflector", "proc-macro-crate", @@ -11734,7 +11799,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -11748,7 +11813,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -11760,8 +11825,8 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.14.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "0.28.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "hash-db", "log", @@ -11781,7 +11846,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "log", "parity-scale-codec", @@ -11798,13 +11863,13 @@ dependencies = [ [[package]] name = "sp-std" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" [[package]] name = "sp-storage" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "13.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11817,7 +11882,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "futures-timer", @@ -11831,8 +11896,8 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "10.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "sp-std", @@ -11844,7 +11909,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "sp-api", "sp-runtime", @@ -11853,7 +11918,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "log", @@ -11868,8 +11933,8 @@ dependencies = [ [[package]] name = "sp-trie" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "22.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11891,8 +11956,8 @@ dependencies = [ [[package]] name = "sp-version" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "22.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11908,8 +11973,8 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "8.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11919,8 +11984,8 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "14.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11932,8 +11997,8 @@ dependencies = [ [[package]] name = "sp-weights" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +version = "20.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "parity-scale-codec", "scale-info", @@ -12174,7 +12239,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "platforms", ] @@ -12182,7 +12247,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12201,7 +12266,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "hyper", "log", @@ -12213,7 +12278,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "jsonrpsee", @@ -12226,7 +12291,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "jsonrpsee", "log", @@ -12245,7 +12310,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "array-bytes", "async-trait", @@ -12271,7 +12336,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12281,7 +12346,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12292,7 +12357,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "ansi_term", "build-helper", @@ -13137,7 +13202,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c080caf784ad2fc9b1b519324355e9998c749c86" +source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" dependencies = [ "async-trait", "clap 4.2.5", From b749009549428344e6aec63d4a581a6a6e688af6 Mon Sep 17 00:00:00 2001 From: Sam Johnson Date: Wed, 31 May 2023 13:41:43 -0400 Subject: [PATCH 20/28] bump serde to 1.0.163 (#7315) * bump serde to 1.0.163 * bump ci * update lockfile for {"substrate"} --------- Co-authored-by: parity-processbot <> --- Cargo.lock | 374 ++++++++++++++++---------------- node/primitives/Cargo.toml | 2 +- node/service/Cargo.toml | 2 +- parachain/Cargo.toml | 2 +- primitives/Cargo.toml | 2 +- runtime/common/Cargo.toml | 2 +- runtime/kusama/Cargo.toml | 2 +- runtime/parachains/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/rococo/Cargo.toml | 2 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- xcm/Cargo.toml | 2 +- xcm/pallet-xcm/Cargo.toml | 2 +- 15 files changed, 201 insertions(+), 201 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 339b842413b8..b53e990a7e10 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "hash-db", "log", @@ -2531,7 +2531,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", ] @@ -2554,7 +2554,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-support-procedural", @@ -2579,7 +2579,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "Inflector", "array-bytes", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2637,7 +2637,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2654,7 +2654,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -2683,7 +2683,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-recursion", "futures", @@ -2704,7 +2704,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "bitflags", "environmental", @@ -2739,7 +2739,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "Inflector", "cfg-expr", @@ -2756,7 +2756,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2768,7 +2768,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro2", "quote", @@ -2778,7 +2778,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2805,7 +2805,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -2817,7 +2817,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "cfg-if", "frame-support", @@ -2836,7 +2836,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -2851,7 +2851,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "sp-api", @@ -2860,7 +2860,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "parity-scale-codec", @@ -3042,7 +3042,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "chrono", "frame-election-provider-support", @@ -4988,7 +4988,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "log", @@ -5007,7 +5007,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "anyhow", "jsonrpsee", @@ -5590,7 +5590,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5605,7 +5605,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -5621,7 +5621,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -5635,7 +5635,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5659,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5679,7 +5679,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5698,7 +5698,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5713,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -5732,7 +5732,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5756,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5774,7 +5774,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5793,7 +5793,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5810,7 +5810,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5868,7 +5868,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5881,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5899,7 +5899,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "docify", "frame-benchmarking", @@ -5918,7 +5918,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5941,7 +5941,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5957,7 +5957,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5977,7 +5977,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5994,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6011,7 +6011,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6030,7 +6030,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6047,7 +6047,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6063,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6079,7 +6079,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -6096,7 +6096,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6116,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6127,7 +6127,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,7 +6185,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6200,7 +6200,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6218,7 +6218,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6233,7 +6233,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6252,7 +6252,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6269,7 +6269,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -6290,7 +6290,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6306,7 +6306,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -6320,7 +6320,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6343,7 +6343,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6354,7 +6354,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "log", "sp-arithmetic", @@ -6363,7 +6363,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "sp-api", @@ -6372,7 +6372,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6389,7 +6389,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6404,7 +6404,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6422,7 +6422,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6441,7 +6441,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-support", "frame-system", @@ -6457,7 +6457,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6473,7 +6473,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6485,7 +6485,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6502,7 +6502,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6517,7 +6517,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6533,7 +6533,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-benchmarking", "frame-support", @@ -9677,7 +9677,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "log", "sp-core", @@ -9688,7 +9688,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures", @@ -9717,7 +9717,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "futures-timer", @@ -9740,7 +9740,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9755,7 +9755,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9774,7 +9774,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9785,7 +9785,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "chrono", @@ -9825,7 +9825,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "fnv", "futures", @@ -9852,7 +9852,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "hash-db", "kvdb", @@ -9878,7 +9878,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures", @@ -9903,7 +9903,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "fork-tree", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "jsonrpsee", @@ -9961,7 +9961,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "async-channel", @@ -9997,7 +9997,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "jsonrpsee", @@ -10016,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "fork-tree", "parity-scale-codec", @@ -10029,7 +10029,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -10069,7 +10069,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "finality-grandpa", "futures", @@ -10089,7 +10089,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures", @@ -10112,7 +10112,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "lru 0.10.0", "parity-scale-codec", @@ -10134,7 +10134,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10146,7 +10146,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "anyhow", "cfg-if", @@ -10164,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ansi_term", "futures", @@ -10180,7 +10180,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10194,7 +10194,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "async-channel", @@ -10240,7 +10240,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-channel", "cid", @@ -10261,7 +10261,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "async-trait", @@ -10288,7 +10288,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ahash 0.8.2", "futures", @@ -10306,7 +10306,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "async-channel", @@ -10328,7 +10328,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "async-channel", @@ -10362,7 +10362,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "futures", @@ -10380,7 +10380,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "bytes", @@ -10410,7 +10410,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10419,7 +10419,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "jsonrpsee", @@ -10450,7 +10450,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10469,7 +10469,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "http", "jsonrpsee", @@ -10484,7 +10484,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "futures", @@ -10510,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "directories", @@ -10576,7 +10576,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "log", "parity-scale-codec", @@ -10587,7 +10587,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "clap 4.2.5", "fs4", @@ -10603,7 +10603,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10622,7 +10622,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "libc", @@ -10641,7 +10641,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "chrono", "futures", @@ -10660,7 +10660,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ansi_term", "atty", @@ -10691,7 +10691,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10702,7 +10702,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures", @@ -10729,7 +10729,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures", @@ -10745,7 +10745,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-channel", "futures", @@ -10976,18 +10976,18 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5" [[package]] name = "serde" -version = "1.0.158" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", @@ -11293,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "hash-db", "log", @@ -11313,7 +11313,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "Inflector", "blake2", @@ -11327,7 +11327,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11340,7 +11340,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "integer-sqrt", "num-traits", @@ -11354,7 +11354,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11367,7 +11367,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "sp-api", @@ -11379,7 +11379,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "log", @@ -11397,7 +11397,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures", @@ -11412,7 +11412,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "parity-scale-codec", @@ -11430,7 +11430,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "parity-scale-codec", @@ -11451,7 +11451,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11470,7 +11470,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "finality-grandpa", "log", @@ -11488,7 +11488,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11500,7 +11500,7 @@ dependencies = [ [[package]] name = "sp-core" version = "21.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "bitflags", @@ -11544,7 +11544,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "blake2b_simd", "byteorder", @@ -11558,7 +11558,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro2", "quote", @@ -11569,7 +11569,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11578,7 +11578,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro2", "quote", @@ -11588,7 +11588,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.19.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "environmental", "parity-scale-codec", @@ -11599,7 +11599,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11614,7 +11614,7 @@ dependencies = [ [[package]] name = "sp-io" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "bytes", "ed25519", @@ -11640,7 +11640,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "lazy_static", "sp-core", @@ -11651,7 +11651,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.27.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "parity-scale-codec", @@ -11665,7 +11665,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11674,7 +11674,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11685,7 +11685,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11703,7 +11703,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11717,7 +11717,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "sp-api", "sp-core", @@ -11727,7 +11727,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "backtrace", "lazy_static", @@ -11737,7 +11737,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "rustc-hash", "serde", @@ -11747,7 +11747,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "either", "hash256-std-hasher", @@ -11769,7 +11769,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "17.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11787,7 +11787,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "Inflector", "proc-macro-crate", @@ -11799,7 +11799,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11813,7 +11813,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11826,7 +11826,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.28.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "hash-db", "log", @@ -11846,7 +11846,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "log", "parity-scale-codec", @@ -11864,12 +11864,12 @@ dependencies = [ [[package]] name = "sp-std" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" [[package]] name = "sp-storage" version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11882,7 +11882,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "futures-timer", @@ -11897,7 +11897,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "10.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "sp-std", @@ -11909,7 +11909,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "sp-api", "sp-runtime", @@ -11918,7 +11918,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "log", @@ -11934,7 +11934,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11957,7 +11957,7 @@ dependencies = [ [[package]] name = "sp-version" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11974,7 +11974,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11985,7 +11985,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "14.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11998,7 +11998,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "20.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "parity-scale-codec", "scale-info", @@ -12239,7 +12239,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "platforms", ] @@ -12247,7 +12247,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12266,7 +12266,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "hyper", "log", @@ -12278,7 +12278,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "jsonrpsee", @@ -12291,7 +12291,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "jsonrpsee", "log", @@ -12310,7 +12310,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "array-bytes", "async-trait", @@ -12336,7 +12336,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12346,7 +12346,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12357,7 +12357,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "ansi_term", "build-helper", @@ -13202,7 +13202,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#655b81cf3ce607b87a293b67d14662ed433a3863" +source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" dependencies = [ "async-trait", "clap 4.2.5", diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index ce77a9fc2ecd..f965018c07d9 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -19,7 +19,7 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master polkadot-parachain = { path = "../../parachain", default-features = false } schnorrkel = "0.9.1" thiserror = "1.0.31" -serde = { version = "1.0.137", features = ["derive"] } +serde = { version = "1.0.163", features = ["derive"] } [target.'cfg(not(target_os = "unknown"))'.dependencies] zstd = { version = "0.11.2", default-features = false } diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 75b018facd34..34b69d045753 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -70,7 +70,7 @@ frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", bran futures = "0.3.21" hex-literal = "0.4.1" gum = { package = "tracing-gum", path = "../gum/" } -serde = { version = "1.0.137", features = ["derive"] } +serde = { version = "1.0.163", features = ["derive"] } serde_json = "1.0.96" thiserror = "1.0.31" kvdb = "0.13.0" diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index 6d0186aebc9c..7913d5462338 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -20,7 +20,7 @@ derive_more = "0.99.11" bounded-collections = { version = "0.1.7", default-features = false } # all optional crates. -serde = { version = "1.0.137", default-features = false, features = [ "derive" ], optional = true } +serde = { version = "1.0.163", default-features = false, features = [ "derive" ], optional = true } [features] default = ["std"] diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 6ce968230724..4274ac9175d7 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -9,7 +9,7 @@ bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] } hex-literal = "0.4.1" parity-scale-codec = { version = "3.4.0", default-features = false, features = ["bit-vec", "derive"] } scale-info = { version = "2.5.0", default-features = false, features = ["bit-vec", "derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.163", optional = true, features = ["derive"] } application-crypto = { package = "sp-application-crypto", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 517b600eeea6..64a19394918b 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.163", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index acb58ee96513..b317cc9e88da 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.163", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index e1b5b5b1de59..31e9bdfc89dc 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -10,7 +10,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", features = [ "derive" ], optional = true } +serde = { version = "1.0.163", features = [ "derive" ], optional = true } derive_more = "0.99.17" bitflags = "1.3.2" diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 5e59c22c984d..e287ab3646ee 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.163", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index a6d00060d939..3b39756e3b40 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -9,7 +9,7 @@ edition.workspace = true parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.163", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index b5b2d2289437..73bd3ab3688d 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.163", default-features = false } serde_derive = { version = "1.0.117", optional = true } smallvec = "1.8.0" diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index 08a8ca23a55a..bcc406a7c2a2 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.163", default-features = false } serde_derive = { version = "1.0.117", optional = true } smallvec = "1.8.0" diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 081b4648416f..1f2d0c1c8acf 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -15,7 +15,7 @@ tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } jsonrpsee = { version = "0.16.2", features = ["ws-client", "macros"] } log = "0.4.17" paste = "1.0.7" -serde = "1.0.137" +serde = "1.0.163" serde_json = "1.0" thiserror = "1.0.31" tokio = { version = "1.24.2", features = ["macros", "rt-multi-thread", "sync"] } diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index 273c2fba0a12..ce3ec331b151 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -13,7 +13,7 @@ log = { version = "0.4.17", default-features = false } parity-scale-codec = { version = "3.4.0", default-features = false, features = [ "derive", "max-encoded-len" ] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } sp-weights = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -serde = { version = "1.0.136", optional = true, features = ["derive"] } +serde = { version = "1.0.163", optional = true, features = ["derive"] } xcm-procedural = { path = "procedural" } [dev-dependencies] diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml index 4bfad5899d38..9ebd11228b21 100644 --- a/xcm/pallet-xcm/Cargo.toml +++ b/xcm/pallet-xcm/Cargo.toml @@ -9,7 +9,7 @@ version.workspace = true bounded-collections = { version = "0.1.7", default-features = false } codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false, features = ["derive"] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.163", optional = true, features = ["derive"] } log = { version = "0.4.17", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } From a4887274eed53c777ab00040d12b0ecc49a40b04 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 31 May 2023 11:34:12 -0700 Subject: [PATCH 21/28] fmt --- .../dispute-coordinator/src/initialized.rs | 101 +++++++++--------- primitives/src/v4/mod.rs | 6 +- runtime/common/src/assigned_slots.rs | 4 +- runtime/common/src/mock.rs | 2 +- runtime/common/src/paras_registrar.rs | 6 +- runtime/common/src/slots/mod.rs | 2 +- runtime/common/src/traits.rs | 4 +- runtime/parachains/src/configuration.rs | 6 +- runtime/parachains/src/paras/mod.rs | 6 +- runtime/parachains/src/scheduler.rs | 14 +-- runtime/parachains/src/scheduler/tests.rs | 6 +- 11 files changed, 79 insertions(+), 78 deletions(-) diff --git a/node/core/dispute-coordinator/src/initialized.rs b/node/core/dispute-coordinator/src/initialized.rs index 81134a43a3a0..b5c548bf1ffd 100644 --- a/node/core/dispute-coordinator/src/initialized.rs +++ b/node/core/dispute-coordinator/src/initialized.rs @@ -214,61 +214,62 @@ impl Initialized { gum::trace!(target: LOG_TARGET, "Waiting for message"); let mut overlay_db = OverlayedBackend::new(backend); let default_confirm = Box::new(|| Ok(())); - let confirm_write = - match MuxedMessage::receive(ctx, &mut self.participation_receiver).await? { - MuxedMessage::Participation(msg) => { - gum::trace!(target: LOG_TARGET, "MuxedMessage::Participation"); - let ParticipationStatement { - session, + let confirm_write = match MuxedMessage::receive(ctx, &mut self.participation_receiver) + .await? + { + MuxedMessage::Participation(msg) => { + gum::trace!(target: LOG_TARGET, "MuxedMessage::Participation"); + let ParticipationStatement { + session, + candidate_hash, + candidate_receipt, + outcome, + } = self.participation.get_participation_result(ctx, msg).await?; + if let Some(valid) = outcome.validity() { + gum::trace!( + target: LOG_TARGET, + ?session, + ?candidate_hash, + ?valid, + "Issuing local statement based on participation outcome." + ); + self.issue_local_statement( + ctx, + &mut overlay_db, candidate_hash, candidate_receipt, - outcome, - } = self.participation.get_participation_result(ctx, msg).await?; - if let Some(valid) = outcome.validity() { - gum::trace!( - target: LOG_TARGET, - ?session, - ?candidate_hash, - ?valid, - "Issuing local statement based on participation outcome." - ); - self.issue_local_statement( - ctx, - &mut overlay_db, - candidate_hash, - candidate_receipt, - session, - valid, - clock.now(), - ) - .await?; - } else { - gum::warn!(target: LOG_TARGET, ?outcome, "Dispute participation failed"); - } + session, + valid, + clock.now(), + ) + .await?; + } else { + gum::warn!(target: LOG_TARGET, ?outcome, "Dispute participation failed"); + } + default_confirm + }, + MuxedMessage::Subsystem(msg) => match msg { + FromOrchestra::Signal(OverseerSignal::Conclude) => return Ok(()), + FromOrchestra::Signal(OverseerSignal::ActiveLeaves(update)) => { + gum::trace!(target: LOG_TARGET, "OverseerSignal::ActiveLeaves"); + self.process_active_leaves_update( + ctx, + &mut overlay_db, + update, + clock.now(), + ) + .await?; default_confirm }, - MuxedMessage::Subsystem(msg) => match msg { - FromOrchestra::Signal(OverseerSignal::Conclude) => return Ok(()), - FromOrchestra::Signal(OverseerSignal::ActiveLeaves(update)) => { - gum::trace!(target: LOG_TARGET, "OverseerSignal::ActiveLeaves"); - self.process_active_leaves_update( - ctx, - &mut overlay_db, - update, - clock.now(), - ) - .await?; - default_confirm - }, - FromOrchestra::Signal(OverseerSignal::BlockFinalized(_, n)) => { - gum::trace!(target: LOG_TARGET, "OverseerSignal::BlockFinalized"); - self.scraper.process_finalized_block(&n); - default_confirm - }, - FromOrchestra::Communication { msg } => - self.handle_incoming(ctx, &mut overlay_db, msg, clock.now()).await?, + FromOrchestra::Signal(OverseerSignal::BlockFinalized(_, n)) => { + gum::trace!(target: LOG_TARGET, "OverseerSignal::BlockFinalized"); + self.scraper.process_finalized_block(&n); + default_confirm }, - }; + FromOrchestra::Communication { msg } => + self.handle_incoming(ctx, &mut overlay_db, msg, clock.now()).await?, + }, + }; if !overlay_db.is_empty() { let ops = overlay_db.into_write_ops(); diff --git a/primitives/src/v4/mod.rs b/primitives/src/v4/mod.rs index b4777a20da57..75acf39e0576 100644 --- a/primitives/src/v4/mod.rs +++ b/primitives/src/v4/mod.rs @@ -807,7 +807,7 @@ impl TypeIndex for GroupIndex { #[cfg_attr(feature = "std", derive(PartialEq))] pub struct ParathreadClaim(pub Id, pub CollatorId); -/// An entry tracking a parathread (on-demand parachain) claim to ensure it does not +/// An entry tracking a parathread (on-demand parachain) claim to ensure it does not /// pass the maximum number of retries. #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] #[cfg_attr(feature = "std", derive(PartialEq))] @@ -975,8 +975,8 @@ pub enum CoreState { /// variant. #[codec(index = 1)] Scheduled(ScheduledCore), - /// The core is currently free and there is nothing scheduled. This can be the case for - /// on-demand parachain cores when there are no on-demand blocks queued. Leased parachain + /// The core is currently free and there is nothing scheduled. This can be the case for + /// on-demand parachain cores when there are no on-demand blocks queued. Leased parachain /// cores will never be left idle. #[codec(index = 2)] Free, diff --git a/runtime/common/src/assigned_slots.rs b/runtime/common/src/assigned_slots.rs index 24d34f1a8965..9e6950233e5b 100644 --- a/runtime/common/src/assigned_slots.rs +++ b/runtime/common/src/assigned_slots.rs @@ -164,10 +164,10 @@ pub mod pallet { ParaDoesntExist, /// Not a parathread (on-demand parachain). NotParathread, - /// Cannot upgrade on-demand parachain to lease holding + /// Cannot upgrade on-demand parachain to lease holding /// parachain. CannotUpgrade, - /// Cannot downgrade lease holding parachain to + /// Cannot downgrade lease holding parachain to /// on-demand. CannotDowngrade, /// Permanent or Temporary slot already assigned. diff --git a/runtime/common/src/mock.rs b/runtime/common/src/mock.rs index 6693c41489c9..f5e4f1f48daa 100644 --- a/runtime/common/src/mock.rs +++ b/runtime/common/src/mock.rs @@ -149,7 +149,7 @@ impl Registrar for TestRegistrar { Ok(()) } - /// If the ParaId corresponds to a lease holding parachain, then downgrade it to a + /// If the ParaId corresponds to a lease holding parachain, then downgrade it to a /// parathread (on-demand parachain) fn make_parathread(id: ParaId) -> DispatchResult { PARACHAINS.with(|x| { diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index f2c294045ad8..14fb8c3e7867 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -280,7 +280,7 @@ pub mod pallet { /// /// The `ParaId`s remain mapped to the same head data and code so external code can rely on /// `ParaId` to be a long-term identifier of a notional "parachain". However, their - /// scheduling info (i.e. whether they're an on-demand parachain or lease holding parachain), + /// scheduling info (i.e. whether they're an on-demand parachain or lease holding parachain), /// auction information and the auction deposit are switched. #[pallet::call_index(3)] #[pallet::weight(::WeightInfo::swap())] @@ -345,7 +345,7 @@ pub mod pallet { /// /// This function will reserve a new Para Id to be owned/managed by the origin account. /// The origin account is able to register head data and validation code using `register` to create - /// an on-demand parachain. Using the Slots pallet, an on-demand parachain can then be upgraded to + /// an on-demand parachain. Using the Slots pallet, an on-demand parachain can then be upgraded to /// a lease holding parachain. /// /// ## Arguments @@ -1335,7 +1335,7 @@ mod tests { Error::::CannotSwap ); - // Some other external process will elevate one on-demand + // Some other external process will elevate one on-demand // parachain to a lease holding parachain assert_ok!(Registrar::make_parachain(para_1)); diff --git a/runtime/common/src/slots/mod.rs b/runtime/common/src/slots/mod.rs index 8ef33954f374..9243759fddc6 100644 --- a/runtime/common/src/slots/mod.rs +++ b/runtime/common/src/slots/mod.rs @@ -15,7 +15,7 @@ // along with Polkadot. If not, see . //! Parachains leasing system. Allows para IDs to be claimed, the code and data to be initialized and -//! parachain slots (i.e. continuous scheduling) to be leased. Also allows for lease holding parachains and +//! parachain slots (i.e. continuous scheduling) to be leased. Also allows for lease holding parachains and //! on-demand parachains to be swapped. //! //! This doesn't handle the mechanics of determining which para ID actually ends up with a parachain lease. This diff --git a/runtime/common/src/traits.rs b/runtime/common/src/traits.rs index 726cebfb545a..3fd97c7cb8c7 100644 --- a/runtime/common/src/traits.rs +++ b/runtime/common/src/traits.rs @@ -31,7 +31,7 @@ pub trait Registrar { /// Report the manager (permissioned owner) of a parachain, if there is one. fn manager_of(id: ParaId) -> Option; - /// All lease holding parachains. Ordered ascending by `ParaId`. On-demand + /// All lease holding parachains. Ordered ascending by `ParaId`. On-demand /// parachains are not included. fn parachains() -> Vec; @@ -81,7 +81,7 @@ pub trait Registrar { fn worst_validation_code() -> ValidationCode; /// Execute any pending state transitions for paras. - /// For example onboarding to on-demand parachain, or upgrading on-demand to + /// For example onboarding to on-demand parachain, or upgrading on-demand to /// lease holding parachain. #[cfg(any(feature = "runtime-benchmarks", test))] fn execute_pending_transitions(); diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index a825693a4bcc..62efc095334d 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -135,7 +135,7 @@ pub struct HostConfiguration { pub max_downward_message_size: u32, /// The maximum number of outbound HRMP channels a parachain is allowed to open. pub hrmp_max_parachain_outbound_channels: u32, - /// The maximum number of outbound HRMP channels a parathread (on-demand parachain) is allowed + /// The maximum number of outbound HRMP channels a parathread (on-demand parachain) is allowed /// to open. pub hrmp_max_parathread_outbound_channels: u32, /// The deposit that the sender should provide for opening an HRMP channel. @@ -148,7 +148,7 @@ pub struct HostConfiguration { pub hrmp_channel_max_total_size: u32, /// The maximum number of inbound HRMP channels a parachain is allowed to accept. pub hrmp_max_parachain_inbound_channels: u32, - /// The maximum number of inbound HRMP channels a parathread (on-demand parachain) is allowed + /// The maximum number of inbound HRMP channels a parathread (on-demand parachain) is allowed /// to accept. pub hrmp_max_parathread_inbound_channels: u32, /// The maximum size of a message that could ever be put into an HRMP channel. @@ -179,7 +179,7 @@ pub struct HostConfiguration { /// /// Must be at least 1. pub chain_availability_period: BlockNumber, - /// The availability period, in blocks, for parathreads (on-demand parachains). Same as the + /// The availability period, in blocks, for parathreads (on-demand parachains). Same as the /// `chain_availability_period`, but a differing timeout due to differing requirements. /// /// Must be at least 1. diff --git a/runtime/parachains/src/paras/mod.rs b/runtime/parachains/src/paras/mod.rs index 1f615e85393d..2f2dea821c24 100644 --- a/runtime/parachains/src/paras/mod.rs +++ b/runtime/parachains/src/paras/mod.rs @@ -24,8 +24,8 @@ //! //! A para is not considered live until it is registered and activated in this pallet. //! -//! The set of parachains cannot change except at session boundaries. This is primarily to ensure -//! that the number and meaning of bits required for the availability bitfields does not change +//! The set of parachains cannot change except at session boundaries. This is primarily to ensure +//! that the number and meaning of bits required for the availability bitfields does not change //! except at session boundaries. //! //! # Validation Code Upgrades @@ -61,7 +61,7 @@ //! //! # Para Lifecycle Management //! -//! A para can be in one of the two stable states: it is either a lease holding parachain or an +//! A para can be in one of the two stable states: it is either a lease holding parachain or an //! on-demand parachain. //! //! However, in order to get into one of those two states, it must first be onboarded. Onboarding diff --git a/runtime/parachains/src/scheduler.rs b/runtime/parachains/src/scheduler.rs index 200c4c52d2ea..44333183c528 100644 --- a/runtime/parachains/src/scheduler.rs +++ b/runtime/parachains/src/scheduler.rs @@ -75,7 +75,7 @@ pub struct ParathreadClaimQueue { impl ParathreadClaimQueue { /// Queue a parathread (on-demand parachain) entry to be processed. /// - /// Provide the entry and the number of parathread (on-demand parachain) cores, + /// Provide the entry and the number of parathread (on-demand parachain) cores, /// which must be greater than 0. fn enqueue_entry(&mut self, entry: ParathreadEntry, n_parathread_cores: u32) { let core_offset = self.next_core_offset; @@ -172,8 +172,8 @@ pub mod pallet { /// broader set of Polkadot validators, but instead just the subset used for parachains during /// this session. /// - /// Bound: The number of cores is the sum of the numbers of lease holding parachains and on-demand - /// parachain multiplexers. Reasonably, 100-1000. The dominant factor is the number of validators: + /// Bound: The number of cores is the sum of the numbers of lease holding parachains and on-demand + /// parachain multiplexers. Reasonably, 100-1000. The dominant factor is the number of validators: /// safe upper bound at 10k. #[pallet::storage] #[pallet::getter(fn validator_groups)] @@ -182,7 +182,7 @@ pub mod pallet { /// A queue of upcoming claims and which core they should be mapped onto. /// /// The number of queued claims is bounded at the `scheduling_lookahead` - /// multiplied by the number of parathread (on-demand parachain) multiplexer cores. Reasonably, + /// multiplied by the number of parathread (on-demand parachain) multiplexer cores. Reasonably, /// 10 * 50 = 500. #[pallet::storage] pub(crate) type ParathreadQueue = StorageValue<_, ParathreadClaimQueue, ValueQuery>; @@ -199,7 +199,7 @@ pub mod pallet { #[pallet::getter(fn availability_cores)] pub(crate) type AvailabilityCores = StorageValue<_, Vec>, ValueQuery>; - /// An index used to ensure that only one claim on a parathread (on-demand parachain) exists in the queue + /// An index used to ensure that only one claim on a parathread (on-demand parachain) exists in the queue /// or is currently being handled by an occupied core. /// /// Bounded by the number of parathread (on-demand parachain) cores and scheduling lookahead. Reasonably, 10 * 50 = 500. @@ -347,8 +347,8 @@ impl Pallet { >::set(now); } - /// Add a parathread (on-demand parachain) claim to the queue. If there is a competing claim in the - /// queue or currently assigned to a core, this call will fail. This call will also fail if the queue + /// Add a parathread (on-demand parachain) claim to the queue. If there is a competing claim in the + /// queue or currently assigned to a core, this call will fail. This call will also fail if the queue /// is full. /// /// Fails if the claim does not correspond to any live on-demand parachain. diff --git a/runtime/parachains/src/scheduler/tests.rs b/runtime/parachains/src/scheduler/tests.rs index 01c9c1a69e8e..aa99008d18e6 100644 --- a/runtime/parachains/src/scheduler/tests.rs +++ b/runtime/parachains/src/scheduler/tests.rs @@ -621,8 +621,8 @@ fn schedule_schedules_including_just_freed() { assert!(Scheduler::scheduled().is_empty()); } - // add a couple more parathread (on-demand parachain) claims - the claim on `b` will go to - // the 3rd on-demand core (4) and the claim on `d` will go back to the 1st on-demand + // add a couple more parathread (on-demand parachain) claims - the claim on `b` will go to + // the 3rd on-demand core (4) and the claim on `d` will go back to the 1st on-demand // core (2). The claim on `e` then will go for core `3`. Scheduler::add_parathread_claim(ParathreadClaim(thread_b, collator.clone())); Scheduler::add_parathread_claim(ParathreadClaim(thread_d, collator.clone())); @@ -633,7 +633,7 @@ fn schedule_schedules_including_just_freed() { { let scheduled = Scheduler::scheduled(); - // cores 0 and 1 are occupied by lease holding parachains. cores 2 and 3 are occupied by + // cores 0 and 1 are occupied by lease holding parachains. cores 2 and 3 are occupied by // on-demand parachain claims. core 4 was free. assert_eq!(scheduled.len(), 1); assert_eq!( From eede79256f725e8d11b865cc88c10bdf53fbb86f Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 31 May 2023 11:44:03 -0700 Subject: [PATCH 22/28] Updated fmt --- .../dispute-coordinator/src/initialized.rs | 101 +++++++++--------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/node/core/dispute-coordinator/src/initialized.rs b/node/core/dispute-coordinator/src/initialized.rs index b5c548bf1ffd..81134a43a3a0 100644 --- a/node/core/dispute-coordinator/src/initialized.rs +++ b/node/core/dispute-coordinator/src/initialized.rs @@ -214,62 +214,61 @@ impl Initialized { gum::trace!(target: LOG_TARGET, "Waiting for message"); let mut overlay_db = OverlayedBackend::new(backend); let default_confirm = Box::new(|| Ok(())); - let confirm_write = match MuxedMessage::receive(ctx, &mut self.participation_receiver) - .await? - { - MuxedMessage::Participation(msg) => { - gum::trace!(target: LOG_TARGET, "MuxedMessage::Participation"); - let ParticipationStatement { - session, - candidate_hash, - candidate_receipt, - outcome, - } = self.participation.get_participation_result(ctx, msg).await?; - if let Some(valid) = outcome.validity() { - gum::trace!( - target: LOG_TARGET, - ?session, - ?candidate_hash, - ?valid, - "Issuing local statement based on participation outcome." - ); - self.issue_local_statement( - ctx, - &mut overlay_db, + let confirm_write = + match MuxedMessage::receive(ctx, &mut self.participation_receiver).await? { + MuxedMessage::Participation(msg) => { + gum::trace!(target: LOG_TARGET, "MuxedMessage::Participation"); + let ParticipationStatement { + session, candidate_hash, candidate_receipt, - session, - valid, - clock.now(), - ) - .await?; - } else { - gum::warn!(target: LOG_TARGET, ?outcome, "Dispute participation failed"); - } - default_confirm - }, - MuxedMessage::Subsystem(msg) => match msg { - FromOrchestra::Signal(OverseerSignal::Conclude) => return Ok(()), - FromOrchestra::Signal(OverseerSignal::ActiveLeaves(update)) => { - gum::trace!(target: LOG_TARGET, "OverseerSignal::ActiveLeaves"); - self.process_active_leaves_update( - ctx, - &mut overlay_db, - update, - clock.now(), - ) - .await?; + outcome, + } = self.participation.get_participation_result(ctx, msg).await?; + if let Some(valid) = outcome.validity() { + gum::trace!( + target: LOG_TARGET, + ?session, + ?candidate_hash, + ?valid, + "Issuing local statement based on participation outcome." + ); + self.issue_local_statement( + ctx, + &mut overlay_db, + candidate_hash, + candidate_receipt, + session, + valid, + clock.now(), + ) + .await?; + } else { + gum::warn!(target: LOG_TARGET, ?outcome, "Dispute participation failed"); + } default_confirm }, - FromOrchestra::Signal(OverseerSignal::BlockFinalized(_, n)) => { - gum::trace!(target: LOG_TARGET, "OverseerSignal::BlockFinalized"); - self.scraper.process_finalized_block(&n); - default_confirm + MuxedMessage::Subsystem(msg) => match msg { + FromOrchestra::Signal(OverseerSignal::Conclude) => return Ok(()), + FromOrchestra::Signal(OverseerSignal::ActiveLeaves(update)) => { + gum::trace!(target: LOG_TARGET, "OverseerSignal::ActiveLeaves"); + self.process_active_leaves_update( + ctx, + &mut overlay_db, + update, + clock.now(), + ) + .await?; + default_confirm + }, + FromOrchestra::Signal(OverseerSignal::BlockFinalized(_, n)) => { + gum::trace!(target: LOG_TARGET, "OverseerSignal::BlockFinalized"); + self.scraper.process_finalized_block(&n); + default_confirm + }, + FromOrchestra::Communication { msg } => + self.handle_incoming(ctx, &mut overlay_db, msg, clock.now()).await?, }, - FromOrchestra::Communication { msg } => - self.handle_incoming(ctx, &mut overlay_db, msg, clock.now()).await?, - }, - }; + }; if !overlay_db.is_empty() { let ops = overlay_db.into_write_ops(); From 1bb3626a468f5ba2e37300c88c3f18d934bb789b Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 31 May 2023 12:08:39 -0700 Subject: [PATCH 23/28] Removing changes accidentally pulled from master --- runtime/common/src/paras_registrar.rs | 4 +++- runtime/parachains/src/paras/mod.rs | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 9b1a67e65a38..b483f4e35f32 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -926,7 +926,9 @@ mod tests { test_genesis_head(32), validation_code.clone(), )); - run_to_session(2); + conclude_pvf_checking::(&validation_code, VALIDATORS, START_SESSION_INDEX); + + run_to_session(START_SESSION_INDEX + 2); // It is now a parathread (on-demand parachain). assert!(Parachains::is_parathread(para_id)); assert!(!Parachains::is_parachain(para_id)); diff --git a/runtime/parachains/src/paras/mod.rs b/runtime/parachains/src/paras/mod.rs index 2f2dea821c24..26d94f4a908c 100644 --- a/runtime/parachains/src/paras/mod.rs +++ b/runtime/parachains/src/paras/mod.rs @@ -2030,6 +2030,13 @@ impl Pallet { } } + /// Returns whether the given ID refers to a para that is offboarding. + /// + /// An invalid or non-offboarding para ID will return `false`. + pub fn is_offboarding(id: ParaId) -> bool { + ParaLifecycles::::get(&id).map_or(false, |state| state.is_offboarding()) + } + /// Whether a para ID corresponds to any live lease holding parachain. /// /// Includes lease holding parachains which will downgrade to a on-demand parachains in the future. From a5edc63dc46d1cb45ef373596e0a8954a7b38e84 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 31 May 2023 13:08:27 -0700 Subject: [PATCH 24/28] fix another master pull issue --- runtime/common/src/slots/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/common/src/slots/mod.rs b/runtime/common/src/slots/mod.rs index c77e3402b839..3eaa4bfec870 100644 --- a/runtime/common/src/slots/mod.rs +++ b/runtime/common/src/slots/mod.rs @@ -1004,7 +1004,7 @@ mod benchmarking { } // Registers a parathread (on-demand parachain) - fn register_a_parathread(i: u32) -> (ParaId, T::AccountId) { + fn register_a_parathread(i: u32) -> (ParaId, T::AccountId) { let para = ParaId::from(i); let leaser: T::AccountId = account("leaser", i, 0); T::Currency::make_free_balance_be(&leaser, BalanceOf::::max_value()); From 1b2de662dfb11173679d6da5bd0da9d149c85547 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 31 May 2023 15:49:15 -0700 Subject: [PATCH 25/28] Another master pull fix --- runtime/common/src/paras_registrar.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index b483f4e35f32..8653e6f19123 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -934,7 +934,7 @@ mod tests { assert!(!Parachains::is_parachain(para_id)); // Some other external process will elevate on-demand to lease holding parachain assert_ok!(Registrar::make_parachain(para_id)); - run_to_session(4); + run_to_session(START_SESSION_INDEX + 4); // It is now a lease holding parachain. assert!(!Parachains::is_parathread(para_id)); assert!(Parachains::is_parachain(para_id)); From 5bae645e183144d1f7bf954c3d988add9dd880a3 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Wed, 31 May 2023 23:33:05 -0700 Subject: [PATCH 26/28] fmt --- node/core/runtime-api/src/cache.rs | 32 ++++++++++++++----- node/subsystem-types/src/messages.rs | 4 ++- .../src/runtime_api_impl/vstaging.rs | 5 +-- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/node/core/runtime-api/src/cache.rs b/node/core/runtime-api/src/cache.rs index 4a97636786fb..cd8f542496ce 100644 --- a/node/core/runtime-api/src/cache.rs +++ b/node/core/runtime-api/src/cache.rs @@ -64,10 +64,14 @@ pub(crate) struct RequestResultCache { LruCache<(Hash, ParaId, OccupiedCoreAssumption), Option>, version: LruCache, disputes: LruCache)>>, - unapplied_slashes: - LruCache>, - key_ownership_proof: - LruCache<(Hash, ValidatorId), Option>, + unapplied_slashes: LruCache< + Hash, + Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, + >, + key_ownership_proof: LruCache< + (Hash, ValidatorId), + Option, + >, staging_para_backing_state: LruCache<(Hash, ParaId), Option>, staging_async_backing_params: LruCache, } @@ -400,7 +404,8 @@ impl RequestResultCache { pub(crate) fn unapplied_slashes( &mut self, relay_parent: &Hash, - ) -> Option<&Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>> { + ) -> Option<&Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>> + { self.unapplied_slashes.get(relay_parent) } @@ -430,7 +435,11 @@ impl RequestResultCache { // This request is never cached, hence always returns `None`. pub(crate) fn submit_report_dispute_lost( &mut self, - _key: (Hash, vstaging_primitives::slashing::DisputeProof, vstaging_primitives::slashing::OpaqueKeyOwnershipProof), + _key: ( + Hash, + vstaging_primitives::slashing::DisputeProof, + vstaging_primitives::slashing::OpaqueKeyOwnershipProof, + ), ) -> Option<&Option<()>> { None } @@ -501,8 +510,15 @@ pub(crate) enum RequestResult { ValidationCodeHash(Hash, ParaId, OccupiedCoreAssumption, Option), Version(Hash, u32), Disputes(Hash, Vec<(SessionIndex, CandidateHash, DisputeState)>), - UnappliedSlashes(Hash, Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>), - KeyOwnershipProof(Hash, ValidatorId, Option), + UnappliedSlashes( + Hash, + Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, + ), + KeyOwnershipProof( + Hash, + ValidatorId, + Option, + ), // This is a request with side-effects. SubmitReportDisputeLost( Hash, diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index 80e231e654d6..92ca9896f5dd 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -645,7 +645,9 @@ pub enum RuntimeApiRequest { /// Returns a list of validators that lost a past session dispute and need to be slashed. /// `VStaging` UnappliedSlashes( - RuntimeApiSender>, + RuntimeApiSender< + Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, + >, ), /// Returns a merkle proof of a validator session key. /// `VStaging` diff --git a/runtime/parachains/src/runtime_api_impl/vstaging.rs b/runtime/parachains/src/runtime_api_impl/vstaging.rs index 3e9e6c8f02c7..82c1fc1a712f 100644 --- a/runtime/parachains/src/runtime_api_impl/vstaging.rs +++ b/runtime/parachains/src/runtime_api_impl/vstaging.rs @@ -16,13 +16,14 @@ //! Put implementations of functions from staging APIs here. -use crate::{configuration, dmp, hrmp, inclusion, initializer, paras, shared, disputes}; +use crate::{configuration, disputes, dmp, hrmp, inclusion, initializer, paras, shared}; use primitives::{ + vstaging, vstaging::{ AsyncBackingParams, BackingState, CandidatePendingAvailability, Constraints, InboundHrmpLimitations, OutboundHrmpChannelLimitations, }, - Id as ParaId, vstaging, CandidateHash, DisputeState, SessionIndex, + CandidateHash, DisputeState, Id as ParaId, SessionIndex, }; use sp_std::prelude::*; From eac35acd8709745b8d8560b2dc36e993795a429d Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Thu, 1 Jun 2023 00:05:45 -0700 Subject: [PATCH 27/28] Fixing implementers guide build --- roadmap/implementers-guide/src/SUMMARY.md | 1 - roadmap/implementers-guide/src/node/utility/provisioner.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/roadmap/implementers-guide/src/SUMMARY.md b/roadmap/implementers-guide/src/SUMMARY.md index 8a1fb267194d..3095013409d9 100644 --- a/roadmap/implementers-guide/src/SUMMARY.md +++ b/roadmap/implementers-guide/src/SUMMARY.md @@ -21,7 +21,6 @@ - [`Inclusion` Pallet](runtime/inclusion.md) - [`ParaInherent` Pallet](runtime/parainherent.md) - [`DMP` Pallet](runtime/dmp.md) - - [`UMP` Pallet](runtime/ump.md) - [`HRMP` Pallet](runtime/hrmp.md) - [`Session Info` Pallet](runtime/session_info.md) - [Runtime APIs](runtime-api/README.md) diff --git a/roadmap/implementers-guide/src/node/utility/provisioner.md b/roadmap/implementers-guide/src/node/utility/provisioner.md index 4cb930b1a159..a3998cabba6c 100644 --- a/roadmap/implementers-guide/src/node/utility/provisioner.md +++ b/roadmap/implementers-guide/src/node/utility/provisioner.md @@ -179,7 +179,7 @@ The response is a vector of `BackedCandidate`s, sorted in order of their core in - Often referred to simply as "cores", availability cores are an abstraction used for resource management. For the provisioner, availability cores are most relevant in that core states determine which `para_id`s to provision backable candidates for. - For more on availability cores see [Scheduler Module: Availability Cores](../../runtime/scheduler.md#availability-cores) - **Availability Bitfield:** - - Often referred to simply as a "bitfield", an availability bitfield represents the view of parablock candidate availability from a particular validator's perspective. Each bit in the bitfield corresponds to a single [availability core](../runtime-api/availability-cores.md). + - Often referred to simply as a "bitfield", an availability bitfield represents the view of parablock candidate availability from a particular validator's perspective. Each bit in the bitfield corresponds to a single [availability core](../../runtime-api/availability-cores.md). - For more on availability bitfields see [availability](../../types/availability.md) - **Backable vs. Backed:** - Note that we sometimes use "backed" to refer to candidates that are "backable", but not yet backed on chain. From 05de086650a1b40a925c1acff2babc0cac59e1f1 Mon Sep 17 00:00:00 2001 From: BradleyOlson64 Date: Thu, 1 Jun 2023 10:59:55 -0700 Subject: [PATCH 28/28] Revert "Merge branch 'rh-async-backing-feature-while-frozen' of https://github.com/paritytech/polkadot into brad-rename-parathread" This reverts commit bebc24af52ab61155e3fe02cb3ce66a592bce49c, reversing changes made to 1b2de662dfb11173679d6da5bd0da9d149c85547. --- Cargo.lock | 699 ++++---- Cargo.toml | 8 +- cli/Cargo.toml | 6 +- cli/src/cli.rs | 5 +- cli/src/command.rs | 15 +- .../approval-voting/src/approval_db/v1/mod.rs | 8 +- .../src/approval_db/v1/tests.rs | 6 +- node/core/approval-voting/src/import.rs | 6 +- node/core/approval-voting/src/lib.rs | 13 +- node/core/approval-voting/src/tests.rs | 9 +- node/core/dispute-coordinator/src/db/v1.rs | 10 +- .../dispute-coordinator/src/initialized.rs | 13 +- node/core/dispute-coordinator/src/lib.rs | 7 +- node/core/dispute-coordinator/src/tests.rs | 180 +- node/core/pvf/Cargo.toml | 12 +- node/core/pvf/common/Cargo.toml | 26 - node/core/pvf/common/src/error.rs | 106 -- node/core/pvf/common/src/execute.rs | 60 - node/core/pvf/common/src/executor_intf.rs | 114 -- node/core/pvf/common/src/lib.rs | 57 - node/core/pvf/common/src/prepare.rs | 48 - node/core/pvf/prepare-worker/Cargo.toml | 33 - .../pvf/prepare-worker/src/executor_intf.rs | 42 - node/core/pvf/src/artifacts.rs | 26 +- node/core/pvf/src/error.rs | 91 +- node/core/pvf/src/execute/mod.rs | 1 + node/core/pvf/src/execute/queue.rs | 2 +- node/core/pvf/src/execute/worker_intf.rs | 52 +- node/core/pvf/src/host.rs | 18 +- node/core/pvf/src/lib.rs | 40 +- node/core/pvf/src/metrics.rs | 2 +- node/core/pvf/src/prepare/mod.rs | 33 + node/core/pvf/src/prepare/pool.rs | 8 +- node/core/pvf/src/prepare/queue.rs | 26 +- node/core/pvf/src/prepare/worker_intf.rs | 15 +- node/core/pvf/{common => }/src/pvf.rs | 24 +- .../src/{worker_intf.rs => worker_common.rs} | 0 .../pvf/{execute-worker => worker}/Cargo.toml | 22 +- .../pvf/{ => worker}/bin/puppet_worker.rs | 2 +- node/core/pvf/{common => worker}/build.rs | 0 .../src/worker.rs => worker/src/common.rs} | 38 - .../src/lib.rs => worker/src/execute.rs} | 26 +- .../src/executor_intf.rs | 122 +- node/core/pvf/worker/src/lib.rs | 73 + .../src/memory_stats.rs | 8 +- .../src/lib.rs => worker/src/prepare.rs} | 42 +- node/core/pvf/{ => worker}/src/testing.rs | 6 +- node/core/pvf/{ => worker}/tests/it/adder.rs | 0 node/core/pvf/{ => worker}/tests/it/main.rs | 0 .../{ => worker}/tests/it/worker_common.rs | 0 node/core/runtime-api/src/cache.rs | 71 +- node/core/runtime-api/src/lib.rs | 96 +- node/gum/README.md | 4 - node/gum/proc-macro/Cargo.toml | 2 +- node/gum/src/lib.rs | 83 - node/malus/Cargo.toml | 3 +- node/malus/src/malus.rs | 4 +- node/primitives/Cargo.toml | 2 +- node/service/Cargo.toml | 2 +- node/service/src/lib.rs | 15 +- node/service/src/parachains_db/mod.rs | 38 +- node/service/src/parachains_db/upgrade.rs | 123 +- node/subsystem-types/src/messages.rs | 29 - node/subsystem-types/src/runtime_client.rs | 55 +- node/subsystem-util/src/lib.rs | 2 + .../src/rolling_session_window.rs | 1532 +++++++++++++++++ node/test/performance-test/Cargo.toml | 4 +- node/test/performance-test/src/lib.rs | 6 +- parachain/Cargo.toml | 4 +- parachain/test-parachains/adder/build.rs | 6 +- .../test-parachains/adder/collator/Cargo.toml | 2 +- .../adder/collator/bin/puppet_worker.rs | 2 +- .../test-parachains/adder/collator/src/lib.rs | 2 +- parachain/test-parachains/halt/build.rs | 6 +- parachain/test-parachains/undying/build.rs | 6 +- .../undying/collator/Cargo.toml | 2 +- .../undying/collator/bin/puppet_worker.rs | 2 +- .../undying/collator/src/lib.rs | 2 +- primitives/Cargo.toml | 2 +- primitives/src/runtime_api.rs | 18 - primitives/src/vstaging/mod.rs | 1 - primitives/src/vstaging/slashing.rs | 99 -- runtime/common/Cargo.toml | 2 +- runtime/common/src/claims.rs | 13 +- runtime/common/src/paras_registrar.rs | 1 + runtime/kusama/Cargo.toml | 2 +- .../runtime_parachains_configuration.rs | 80 +- runtime/parachains/Cargo.toml | 2 +- runtime/parachains/src/configuration.rs | 14 +- runtime/parachains/src/disputes/slashing.rs | 74 +- .../src/disputes/slashing/benchmarking.rs | 1 - runtime/parachains/src/hrmp.rs | 12 +- runtime/parachains/src/paras/mod.rs | 10 +- .../src/runtime_api_impl/vstaging.rs | 30 +- runtime/polkadot/Cargo.toml | 2 +- .../runtime_parachains_configuration.rs | 19 +- runtime/rococo/Cargo.toml | 2 +- runtime/rococo/src/lib.rs | 29 +- .../runtime_parachains_configuration.rs | 19 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/test-runtime/src/lib.rs | 3 +- runtime/westend/Cargo.toml | 2 +- runtime/westend/src/lib.rs | 33 +- .../runtime_parachains_configuration.rs | 17 +- utils/staking-miner/Cargo.toml | 2 +- xcm/Cargo.toml | 4 +- xcm/pallet-xcm/Cargo.toml | 4 +- xcm/pallet-xcm/src/lib.rs | 118 +- xcm/pallet-xcm/src/mock.rs | 3 +- xcm/pallet-xcm/src/tests.rs | 8 +- xcm/procedural/Cargo.toml | 2 +- xcm/xcm-builder/Cargo.toml | 3 +- xcm/xcm-builder/src/lib.rs | 8 +- xcm/xcm-builder/src/location_conversion.rs | 20 - xcm/xcm-builder/src/pay.rs | 205 --- xcm/xcm-builder/src/tests/locking.rs | 8 +- xcm/xcm-executor/src/lib.rs | 15 +- xcm/xcm-executor/src/traits/mod.rs | 2 +- xcm/xcm-executor/src/traits/on_response.rs | 71 +- xcm/xcm-simulator/example/src/lib.rs | 26 +- xcm/xcm-simulator/example/src/parachain.rs | 29 +- .../functional/0003-beefy-and-mmr.toml | 4 +- 122 files changed, 2792 insertions(+), 2494 deletions(-) delete mode 100644 node/core/pvf/common/Cargo.toml delete mode 100644 node/core/pvf/common/src/error.rs delete mode 100644 node/core/pvf/common/src/execute.rs delete mode 100644 node/core/pvf/common/src/executor_intf.rs delete mode 100644 node/core/pvf/common/src/lib.rs delete mode 100644 node/core/pvf/common/src/prepare.rs delete mode 100644 node/core/pvf/prepare-worker/Cargo.toml delete mode 100644 node/core/pvf/prepare-worker/src/executor_intf.rs rename node/core/pvf/{common => }/src/pvf.rs (81%) rename node/core/pvf/src/{worker_intf.rs => worker_common.rs} (100%) rename node/core/pvf/{execute-worker => worker}/Cargo.toml (67%) rename node/core/pvf/{ => worker}/bin/puppet_worker.rs (92%) rename node/core/pvf/{common => worker}/build.rs (100%) rename node/core/pvf/{common/src/worker.rs => worker/src/common.rs} (90%) rename node/core/pvf/{execute-worker/src/lib.rs => worker/src/execute.rs} (93%) rename node/core/pvf/{execute-worker => worker}/src/executor_intf.rs (65%) create mode 100644 node/core/pvf/worker/src/lib.rs rename node/core/pvf/{prepare-worker => worker}/src/memory_stats.rs (97%) rename node/core/pvf/{prepare-worker/src/lib.rs => worker/src/prepare.rs} (90%) rename node/core/pvf/{ => worker}/src/testing.rs (93%) rename node/core/pvf/{ => worker}/tests/it/adder.rs (100%) rename node/core/pvf/{ => worker}/tests/it/main.rs (100%) rename node/core/pvf/{ => worker}/tests/it/worker_common.rs (100%) create mode 100644 node/subsystem-util/src/rolling_session_window.rs delete mode 100644 primitives/src/vstaging/slashing.rs delete mode 100644 xcm/xcm-builder/src/pay.rs diff --git a/Cargo.lock b/Cargo.lock index 7262d55d8865..419654736dd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "hash-db", "log", @@ -691,9 +691,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bounded-collections" -version = "0.1.7" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbd1d11282a1eb134d3c3b7cf8ce213b5161c6e5f73fb1b98618482c606b64" +checksum = "a071c348a5ef6da1d3a87166b408170b46002382b1dda83992b5c2208cefb370" dependencies = [ "log", "parity-scale-codec 3.4.0", @@ -1126,12 +1126,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "common-path" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" - [[package]] name = "concurrent-queue" version = "1.2.2" @@ -1588,7 +1582,7 @@ dependencies = [ "cfg-if", "fiat-crypto", "packed_simd_2", - "platforms", + "platforms 3.0.2", "subtle", "zeroize", ] @@ -1936,39 +1930,18 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" -[[package]] -name = "docify" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18b972b74c30cbe838fc6a07665132ff94f257350e26fd01d80bc59ee7fcf129" -dependencies = [ - "docify_macros", -] - -[[package]] -name = "docify_macros" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c93004d1011191c56df9e853dca42f2012e7488638bcd5078935f5ce43e06cf3" -dependencies = [ - "common-path", - "derive-syn-parse", - "lazy_static", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "syn 2.0.16", - "termcolor", - "walkdir", -] - [[package]] name = "downcast" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + [[package]] name = "dtoa" version = "1.0.2" @@ -2543,7 +2516,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", ] @@ -2566,7 +2539,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-support-procedural", @@ -2591,7 +2564,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "Inflector", "array-bytes", @@ -2638,7 +2611,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2649,7 +2622,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2666,7 +2639,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -2695,7 +2668,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-recursion", "futures", @@ -2716,7 +2689,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "bitflags", "environmental", @@ -2725,7 +2698,6 @@ dependencies = [ "impl-trait-for-tuples", "k256", "log", - "macro_magic", "once_cell", "parity-scale-codec 3.4.0", "paste", @@ -2751,14 +2723,13 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "Inflector", "cfg-expr", "derive-syn-parse", "frame-support-procedural-tools", "itertools", - "macro_magic", "proc-macro-warning", "proc-macro2", "quote", @@ -2768,7 +2739,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2780,7 +2751,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro2", "quote", @@ -2790,7 +2761,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2810,26 +2781,24 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-version", - "static_assertions", "trybuild", ] [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", "parity-scale-codec 3.4.0", "scale-info", - "serde", ] [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "cfg-if", "frame-support", @@ -2848,7 +2817,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -2863,7 +2832,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "sp-api", @@ -2872,7 +2841,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "parity-scale-codec 3.4.0", @@ -3060,7 +3029,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "chrono", "frame-election-provider-support", @@ -4148,6 +4117,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" +[[package]] +name = "libm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" + [[package]] name = "libp2p" version = "0.51.3" @@ -4720,6 +4695,15 @@ dependencies = [ "value-bag", ] +[[package]] +name = "lru" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" +dependencies = [ + "hashbrown 0.12.3", +] + [[package]] name = "lru" version = "0.9.0" @@ -4776,53 +4760,6 @@ dependencies = [ "libc", ] -[[package]] -name = "macro_magic" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e7c1b5ffe892e88b288611ccf55f9c4f4e43214aea6f7f80f0c2c53c85e68e" -dependencies = [ - "macro_magic_core", - "macro_magic_macros", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "macro_magic_core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e812c59de90e5d50405131c676dad7d239de39ccc975620c72d467c70138851" -dependencies = [ - "derive-syn-parse", - "macro_magic_core_macros", - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "macro_magic_core_macros" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b1906fa06ee8c02b24595e121be94e0036cb64f9dce5e587edd1e823c87c94" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "macro_magic_macros" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49e8939ee52e99672a887d8ee13776d0f54262c058ce7e911185fed8e43e3a59" -dependencies = [ - "macro_magic_core", - "quote", - "syn 2.0.16", -] - [[package]] name = "maplit" version = "1.0.2" @@ -4937,6 +4874,12 @@ dependencies = [ "hash-db", ] +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + [[package]] name = "merlin" version = "2.0.1" @@ -5006,7 +4949,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "log", @@ -5025,7 +4968,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "anyhow", "jsonrpsee", @@ -5602,13 +5545,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282" dependencies = [ "cfg-if", - "libm", + "libm 0.1.4", ] [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5623,7 +5566,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -5639,7 +5582,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -5653,7 +5596,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5677,7 +5620,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5697,7 +5640,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5716,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5731,7 +5674,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -5750,7 +5693,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5774,7 +5717,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5792,7 +5735,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5811,7 +5754,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5828,7 +5771,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5845,7 +5788,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5863,7 +5806,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5886,7 +5829,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5899,7 +5842,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5917,9 +5860,8 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ - "docify", "frame-benchmarking", "frame-election-provider-support", "frame-support", @@ -5936,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5959,7 +5901,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5975,7 +5917,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5995,7 +5937,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6012,7 +5954,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6029,7 +5971,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6048,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6065,7 +6007,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6081,7 +6023,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6097,7 +6039,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -6114,7 +6056,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6134,7 +6076,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "pallet-nomination-pools", "parity-scale-codec 3.4.0", @@ -6145,7 +6087,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -6162,7 +6104,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6186,7 +6128,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6203,7 +6145,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6218,7 +6160,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6236,7 +6178,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6251,7 +6193,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6270,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6287,7 +6229,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -6308,7 +6250,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6324,7 +6266,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -6338,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6361,7 +6303,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6372,7 +6314,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "log", "sp-arithmetic", @@ -6381,7 +6323,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "sp-api", @@ -6390,7 +6332,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6407,7 +6349,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6422,7 +6364,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6440,7 +6382,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6459,7 +6401,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-support", "frame-system", @@ -6475,7 +6417,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6491,7 +6433,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "pallet-transaction-payment", "parity-scale-codec 3.4.0", @@ -6503,7 +6445,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6520,7 +6462,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6535,7 +6477,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6551,7 +6493,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6566,7 +6508,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6930,6 +6872,12 @@ version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" +[[package]] +name = "platforms" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" + [[package]] name = "platforms" version = "3.0.2" @@ -6945,7 +6893,7 @@ dependencies = [ "nix 0.26.2", "polkadot-cli", "polkadot-core-primitives", - "polkadot-node-core-pvf-prepare-worker", + "polkadot-node-core-pvf-worker", "polkadot-overseer", "substrate-rpc-client", "tempfile", @@ -7072,8 +7020,7 @@ dependencies = [ "futures", "log", "polkadot-client", - "polkadot-node-core-pvf-execute-worker", - "polkadot-node-core-pvf-prepare-worker", + "polkadot-node-core-pvf-worker", "polkadot-node-metrics", "polkadot-performance-test", "polkadot-service", @@ -7578,9 +7525,6 @@ dependencies = [ "parity-scale-codec 3.4.0", "pin-project", "polkadot-core-primitives", - "polkadot-node-core-pvf-common", - "polkadot-node-core-pvf-execute-worker", - "polkadot-node-core-pvf-prepare-worker", "polkadot-node-metrics", "polkadot-node-primitives", "polkadot-parachain", @@ -7593,8 +7537,6 @@ dependencies = [ "sp-wasm-interface", "substrate-build-script-utils", "tempfile", - "test-parachain-adder", - "test-parachain-halt", "tokio", "tracing-gum", ] @@ -7623,32 +7565,15 @@ dependencies = [ ] [[package]] -name = "polkadot-node-core-pvf-common" +name = "polkadot-node-core-pvf-worker" version = "0.9.41" dependencies = [ + "assert_matches", "cpu-time", "futures", "libc", "parity-scale-codec 3.4.0", - "polkadot-parachain", - "polkadot-primitives", - "sc-executor-common", - "sc-executor-wasmtime", - "sp-core", - "sp-tracing", - "substrate-build-script-utils", - "tokio", - "tracing-gum", -] - -[[package]] -name = "polkadot-node-core-pvf-execute-worker" -version = "0.9.41" -dependencies = [ - "cpu-time", - "futures", - "parity-scale-codec 3.4.0", - "polkadot-node-core-pvf-common", + "polkadot-node-core-pvf", "polkadot-parachain", "polkadot-primitives", "rayon", @@ -7660,28 +7585,10 @@ dependencies = [ "sp-io", "sp-maybe-compressed-blob", "sp-tracing", - "tikv-jemalloc-ctl", - "tokio", - "tracing-gum", -] - -[[package]] -name = "polkadot-node-core-pvf-prepare-worker" -version = "0.9.41" -dependencies = [ - "futures", - "libc", - "parity-scale-codec 3.4.0", - "polkadot-node-core-pvf-common", - "polkadot-parachain", - "polkadot-primitives", - "rayon", - "sc-executor", - "sc-executor-common", - "sc-executor-wasmtime", - "sp-io", - "sp-maybe-compressed-blob", - "sp-tracing", + "substrate-build-script-utils", + "tempfile", + "test-parachain-adder", + "test-parachain-halt", "tikv-jemalloc-ctl", "tokio", "tracing-gum", @@ -7938,7 +7845,7 @@ dependencies = [ "kusama-runtime", "log", "polkadot-erasure-coding", - "polkadot-node-core-pvf-prepare-worker", + "polkadot-node-core-pvf-worker", "polkadot-node-primitives", "polkadot-primitives", "quote", @@ -8449,8 +8356,7 @@ dependencies = [ "polkadot-node-core-backing", "polkadot-node-core-candidate-validation", "polkadot-node-core-dispute-coordinator", - "polkadot-node-core-pvf-execute-worker", - "polkadot-node-core-pvf-prepare-worker", + "polkadot-node-core-pvf-worker", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-test-helpers", @@ -8790,13 +8696,13 @@ dependencies = [ [[package]] name = "proc-macro-warning" -version = "0.4.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70550716265d1ec349c41f70dd4f964b4fd88394efe4405f0c1da679c4799a07" +checksum = "f0e25495609acefcaeb5052edad8ac91017c9bc98fc38ef321ed524e50b68bac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 1.0.109", ] [[package]] @@ -9036,9 +8942,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -9747,7 +9653,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "log", "sp-core", @@ -9758,7 +9664,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures", @@ -9787,7 +9693,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "futures-timer", @@ -9810,7 +9716,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "sc-client-api", @@ -9825,7 +9731,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9844,7 +9750,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9855,7 +9761,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "chrono", @@ -9895,7 +9801,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "fnv", "futures", @@ -9922,7 +9828,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "hash-db", "kvdb", @@ -9948,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures", @@ -9973,7 +9879,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "fork-tree", @@ -10009,7 +9915,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "jsonrpsee", @@ -10031,7 +9937,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "async-channel", @@ -10067,7 +9973,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "jsonrpsee", @@ -10086,7 +9992,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "fork-tree", "parity-scale-codec 3.4.0", @@ -10099,7 +10005,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -10139,7 +10045,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "finality-grandpa", "futures", @@ -10159,7 +10065,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures", @@ -10182,9 +10088,9 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ - "lru 0.10.0", + "lru 0.8.1", "parity-scale-codec 3.4.0", "parking_lot 0.12.1", "sc-executor-common", @@ -10204,7 +10110,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10216,7 +10122,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "anyhow", "cfg-if", @@ -10234,7 +10140,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ansi_term", "futures", @@ -10250,7 +10156,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10264,7 +10170,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "async-channel", @@ -10279,17 +10185,17 @@ dependencies = [ "libp2p", "linked_hash_set", "log", - "lru 0.10.0", + "lru 0.8.1", "mockall", "parity-scale-codec 3.4.0", "parking_lot 0.12.1", - "partial_sort", "pin-project", "rand 0.8.5", "sc-block-builder", "sc-client-api", "sc-consensus", "sc-network-common", + "sc-peerset", "sc-utils", "serde", "serde_json", @@ -10303,14 +10209,13 @@ dependencies = [ "substrate-prometheus-endpoint", "thiserror", "unsigned-varint", - "wasm-timer", "zeroize", ] [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-channel", "cid", @@ -10331,7 +10236,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "async-trait", @@ -10343,6 +10248,7 @@ dependencies = [ "parity-scale-codec 3.4.0", "prost-build", "sc-consensus", + "sc-peerset", "sc-utils", "serde", "smallvec", @@ -10358,16 +10264,17 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ahash 0.8.2", "futures", "futures-timer", "libp2p", "log", - "lru 0.10.0", + "lru 0.8.1", "sc-network", "sc-network-common", + "sc-peerset", "sp-runtime", "substrate-prometheus-endpoint", "tracing", @@ -10376,7 +10283,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "async-channel", @@ -10389,6 +10296,7 @@ dependencies = [ "sc-client-api", "sc-network", "sc-network-common", + "sc-peerset", "sp-blockchain", "sp-core", "sp-runtime", @@ -10398,7 +10306,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "async-channel", @@ -10408,7 +10316,7 @@ dependencies = [ "futures-timer", "libp2p", "log", - "lru 0.10.0", + "lru 0.8.1", "mockall", "parity-scale-codec 3.4.0", "prost 0.11.0", @@ -10417,6 +10325,7 @@ dependencies = [ "sc-consensus", "sc-network", "sc-network-common", + "sc-peerset", "sc-utils", "smallvec", "sp-arithmetic", @@ -10432,15 +10341,17 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "futures", "libp2p", "log", "parity-scale-codec 3.4.0", + "pin-project", "sc-network", "sc-network-common", + "sc-peerset", "sc-utils", "sp-consensus", "sp-runtime", @@ -10450,7 +10361,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "bytes", @@ -10468,6 +10379,7 @@ dependencies = [ "sc-client-api", "sc-network", "sc-network-common", + "sc-peerset", "sc-utils", "sp-api", "sp-core", @@ -10477,10 +10389,26 @@ dependencies = [ "tracing", ] +[[package]] +name = "sc-peerset" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" +dependencies = [ + "futures", + "libp2p-identity", + "log", + "parking_lot 0.12.1", + "partial_sort", + "sc-utils", + "serde_json", + "sp-arithmetic", + "wasm-timer", +] + [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10489,7 +10417,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "jsonrpsee", @@ -10520,7 +10448,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "jsonrpsee", "parity-scale-codec 3.4.0", @@ -10539,7 +10467,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "http", "jsonrpsee", @@ -10554,7 +10482,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "futures", @@ -10580,7 +10508,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "directories", @@ -10646,7 +10574,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "log", "parity-scale-codec 3.4.0", @@ -10657,7 +10585,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "clap 4.2.5", "fs4", @@ -10673,7 +10601,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "jsonrpsee", "parity-scale-codec 3.4.0", @@ -10692,7 +10620,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "libc", @@ -10711,7 +10639,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "chrono", "futures", @@ -10730,7 +10658,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ansi_term", "atty", @@ -10761,7 +10689,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10772,7 +10700,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures", @@ -10799,15 +10727,13 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures", "log", - "parity-scale-codec 3.4.0", "serde", "sp-blockchain", - "sp-core", "sp-runtime", "thiserror", ] @@ -10815,7 +10741,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-channel", "futures", @@ -11046,18 +10972,18 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5" [[package]] name = "serde" -version = "1.0.163" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.163" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" dependencies = [ "proc-macro2", "quote", @@ -11363,7 +11289,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "hash-db", "log", @@ -11383,7 +11309,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "Inflector", "blake2", @@ -11396,8 +11322,8 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -11409,8 +11335,8 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "16.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "integer-sqrt", "num-traits", @@ -11424,7 +11350,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -11437,7 +11363,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "sp-api", @@ -11449,11 +11375,11 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "log", - "lru 0.10.0", + "lru 0.8.1", "parity-scale-codec 3.4.0", "parking_lot 0.12.1", "sp-api", @@ -11467,7 +11393,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures", @@ -11482,7 +11408,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "parity-scale-codec 3.4.0", @@ -11500,7 +11426,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "parity-scale-codec 3.4.0", @@ -11521,7 +11447,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "lazy_static", "parity-scale-codec 3.4.0", @@ -11540,7 +11466,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "finality-grandpa", "log", @@ -11558,7 +11484,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -11569,8 +11495,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "21.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "bitflags", @@ -11613,8 +11539,8 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "blake2b_simd", "byteorder", @@ -11627,8 +11553,8 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" -version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro2", "quote", @@ -11639,7 +11565,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11647,8 +11573,8 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro2", "quote", @@ -11657,8 +11583,8 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.19.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "0.13.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "environmental", "parity-scale-codec 3.4.0", @@ -11669,7 +11595,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11683,8 +11609,8 @@ dependencies = [ [[package]] name = "sp-io" -version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "bytes", "ed25519", @@ -11709,8 +11635,8 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "lazy_static", "sp-core", @@ -11720,8 +11646,8 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.27.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "0.13.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "parity-scale-codec 3.4.0", @@ -11735,7 +11661,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11744,7 +11670,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-metadata", "parity-scale-codec 3.4.0", @@ -11755,7 +11681,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11773,7 +11699,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -11787,7 +11713,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "sp-api", "sp-core", @@ -11796,8 +11722,8 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "backtrace", "lazy_static", @@ -11807,7 +11733,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "rustc-hash", "serde", @@ -11816,8 +11742,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "either", "hash256-std-hasher", @@ -11838,8 +11764,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "17.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11856,8 +11782,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "11.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "Inflector", "proc-macro-crate", @@ -11869,7 +11795,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -11883,7 +11809,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -11895,8 +11821,8 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.28.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "0.13.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "hash-db", "log", @@ -11916,7 +11842,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "log", "parity-scale-codec 3.4.0", @@ -11933,13 +11859,13 @@ dependencies = [ [[package]] name = "sp-std" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" [[package]] name = "sp-storage" -version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "impl-serde", "parity-scale-codec 3.4.0", @@ -11952,7 +11878,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "futures-timer", @@ -11966,8 +11892,8 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "10.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "sp-std", @@ -11979,7 +11905,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "sp-api", "sp-runtime", @@ -11988,7 +11914,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "log", @@ -12003,8 +11929,8 @@ dependencies = [ [[package]] name = "sp-trie" -version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ahash 0.8.2", "hash-db", @@ -12026,8 +11952,8 @@ dependencies = [ [[package]] name = "sp-version" -version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "5.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "impl-serde", "parity-scale-codec 3.4.0", @@ -12043,8 +11969,8 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" -version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "proc-macro2", @@ -12054,21 +11980,22 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "14.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "7.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "anyhow", "impl-trait-for-tuples", "log", "parity-scale-codec 3.4.0", "sp-std", + "wasmi", "wasmtime", ] [[package]] name = "sp-weights" -version = "20.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +version = "4.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "parity-scale-codec 3.4.0", "scale-info", @@ -12309,15 +12236,15 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ - "platforms", + "platforms 2.0.0", ] [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12336,7 +12263,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "hyper", "log", @@ -12348,7 +12275,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "jsonrpsee", @@ -12361,7 +12288,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "jsonrpsee", "log", @@ -12380,7 +12307,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "array-bytes", "async-trait", @@ -12406,7 +12333,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12416,7 +12343,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12427,13 +12354,12 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", "filetime", - "parity-wasm", "sp-maybe-compressed-blob", "strum", "tempfile", @@ -12608,7 +12534,7 @@ dependencies = [ "log", "parity-scale-codec 3.4.0", "polkadot-cli", - "polkadot-node-core-pvf", + "polkadot-node-core-pvf-worker", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-parachain", @@ -12656,7 +12582,7 @@ dependencies = [ "log", "parity-scale-codec 3.4.0", "polkadot-cli", - "polkadot-node-core-pvf", + "polkadot-node-core-pvf-worker", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-parachain", @@ -13272,7 +13198,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6ef184e33f6ce0f56999ae84b212ea6148c0624d" +source = "git+https://github.com/paritytech/substrate?branch=master#79d37ef461a4bdcf6ede7b37d64b28b58484dc7c" dependencies = [ "async-trait", "clap 4.2.5", @@ -13728,6 +13654,39 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmi" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422" +dependencies = [ + "parity-wasm", + "wasmi-validation", + "wasmi_core", +] + +[[package]] +name = "wasmi-validation" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867b" +dependencies = [ + "parity-wasm", +] + +[[package]] +name = "wasmi_core" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7" +dependencies = [ + "downcast-rs", + "libm 0.2.1", + "memory_units", + "num-rational", + "num-traits", +] + [[package]] name = "wasmparser" version = "0.102.0" diff --git a/Cargo.toml b/Cargo.toml index 9e9ad908292f..330fb45dd39c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ tikv-jemallocator = "0.5.0" # Crates in our workspace, defined as dependencies so we can pass them feature flags. polkadot-cli = { path = "cli", features = [ "kusama-native", "westend-native", "rococo-native" ] } -polkadot-node-core-pvf-prepare-worker = { path = "node/core/pvf/prepare-worker" } +polkadot-node-core-pvf-worker = { path = "node/core/pvf/worker" } polkadot-overseer = { path = "node/overseer" } [dev-dependencies] @@ -82,9 +82,7 @@ members = [ "node/core/prospective-parachains", "node/core/provisioner", "node/core/pvf", - "node/core/pvf/common", - "node/core/pvf/execute-worker", - "node/core/pvf/prepare-worker", + "node/core/pvf/worker", "node/core/pvf-checker", "node/core/runtime-api", "node/network/approval-distribution", @@ -211,7 +209,7 @@ try-runtime = [ "polkadot-cli/try-runtime" ] fast-runtime = [ "polkadot-cli/fast-runtime" ] runtime-metrics = [ "polkadot-cli/runtime-metrics" ] pyroscope = ["polkadot-cli/pyroscope"] -jemalloc-allocator = ["polkadot-node-core-pvf-prepare-worker/jemalloc-allocator", "polkadot-overseer/jemalloc-allocator"] +jemalloc-allocator = ["polkadot-node-core-pvf-worker/jemalloc-allocator", "polkadot-overseer/jemalloc-allocator"] network-protocol-staging = ["polkadot-cli/network-protocol-staging"] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index aa1ee52a6fa9..86a508426af9 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -23,8 +23,7 @@ pyroscope_pprofrs = { version = "0.2", optional = true } service = { package = "polkadot-service", path = "../node/service", default-features = false, optional = true } polkadot-client = { path = "../node/client", optional = true } -polkadot-node-core-pvf-execute-worker = { path = "../node/core/pvf/execute-worker", optional = true } -polkadot-node-core-pvf-prepare-worker = { path = "../node/core/pvf/prepare-worker", optional = true } +polkadot-node-core-pvf-worker = { path = "../node/core/pvf/worker", optional = true } polkadot-performance-test = { path = "../node/test/performance-test", optional = true } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -55,8 +54,7 @@ cli = [ "frame-benchmarking-cli", "try-runtime-cli", "polkadot-client", - "polkadot-node-core-pvf-execute-worker", - "polkadot-node-core-pvf-prepare-worker", + "polkadot-node-core-pvf-worker", ] runtime-benchmarks = [ "service/runtime-benchmarks", diff --git a/cli/src/cli.rs b/cli/src/cli.rs index 69c54b428a92..b775bb6b77ad 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -114,10 +114,9 @@ pub struct RunCmd { #[arg(long = "grandpa-pause", num_args = 2)] pub grandpa_pause: Vec, - /// Disable the BEEFY gadget - /// (currently enabled by default on Rococo, Wococo and Versi). + /// Enable the BEEFY gadget (only on Rococo or Wococo for now). #[arg(long)] - pub no_beefy: bool, + pub beefy: bool, /// Add the destination address to the jaeger agent. /// diff --git a/cli/src/command.rs b/cli/src/command.rs index 378e8e7650c2..802ba93941c3 100644 --- a/cli/src/command.rs +++ b/cli/src/command.rs @@ -298,9 +298,12 @@ where .map_err(Error::from)?; let chain_spec = &runner.config().chain_spec; - // By default, enable BEEFY on test networks. - let enable_beefy = (chain_spec.is_rococo() || chain_spec.is_wococo() || chain_spec.is_versi()) && - !cli.run.no_beefy; + // Disallow BEEFY on production networks. + if cli.run.beefy && + (chain_spec.is_polkadot() || chain_spec.is_kusama() || chain_spec.is_westend()) + { + return Err(Error::Other("BEEFY disallowed on production networks".to_string())) + } set_default_ss58_version(chain_spec); @@ -343,7 +346,7 @@ where config, service::IsCollator::No, grandpa_pause, - enable_beefy, + cli.run.beefy, jaeger_agent, None, false, @@ -492,7 +495,7 @@ pub fn run() -> Result<()> { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_prepare_worker::worker_entrypoint( + polkadot_node_core_pvf_worker::prepare_worker_entrypoint( &cmd.socket_path, Some(&cmd.node_impl_version), ); @@ -514,7 +517,7 @@ pub fn run() -> Result<()> { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_execute_worker::worker_entrypoint( + polkadot_node_core_pvf_worker::execute_worker_entrypoint( &cmd.socket_path, Some(&cmd.node_impl_version), ); diff --git a/node/core/approval-voting/src/approval_db/v1/mod.rs b/node/core/approval-voting/src/approval_db/v1/mod.rs index c31389269d2e..d2a13ad54550 100644 --- a/node/core/approval-voting/src/approval_db/v1/mod.rs +++ b/node/core/approval-voting/src/approval_db/v1/mod.rs @@ -15,12 +15,6 @@ // along with Polkadot. If not, see . //! Version 1 of the DB schema. -//! -//! Note that the version here differs from the actual version of the parachains -//! database (check `CURRENT_VERSION` in `node/service/src/parachains_db/upgrade.rs`). -//! The code in this module implements the way approval voting works with -//! its data in the database. Any breaking changes here will still -//! require a db migration (check `node/service/src/parachains_db/upgrade.rs`). use parity_scale_codec::{Decode, Encode}; use polkadot_node_primitives::approval::{AssignmentCert, DelayTranche}; @@ -160,6 +154,8 @@ pub type Bitfield = BitVec; pub struct Config { /// The column family in the database where data is stored. pub col_approval_data: u32, + /// The column of the database where rolling session window data is stored. + pub col_session_data: u32, } /// Details pertaining to our assignment on a block. diff --git a/node/core/approval-voting/src/approval_db/v1/tests.rs b/node/core/approval-voting/src/approval_db/v1/tests.rs index 07d8242b772e..0d30cc8c0cdc 100644 --- a/node/core/approval-voting/src/approval_db/v1/tests.rs +++ b/node/core/approval-voting/src/approval_db/v1/tests.rs @@ -28,10 +28,12 @@ use std::{collections::HashMap, sync::Arc}; use ::test_helpers::{dummy_candidate_receipt, dummy_candidate_receipt_bad_sig, dummy_hash}; const DATA_COL: u32 = 0; +const SESSION_DATA_COL: u32 = 1; -const NUM_COLUMNS: u32 = 1; +const NUM_COLUMNS: u32 = 2; -const TEST_CONFIG: Config = Config { col_approval_data: DATA_COL }; +const TEST_CONFIG: Config = + Config { col_approval_data: DATA_COL, col_session_data: SESSION_DATA_COL }; fn make_db() -> (DbBackend, Arc) { let db = kvdb_memorydb::create(NUM_COLUMNS); diff --git a/node/core/approval-voting/src/import.rs b/node/core/approval-voting/src/import.rs index e33caed49c5f..1ea2687a0246 100644 --- a/node/core/approval-voting/src/import.rs +++ b/node/core/approval-voting/src/import.rs @@ -609,10 +609,12 @@ pub(crate) mod tests { use crate::{approval_db::v1::Config as DatabaseConfig, criteria, BlockEntry}; const DATA_COL: u32 = 0; + const SESSION_DATA_COL: u32 = 1; - const NUM_COLUMNS: u32 = 1; + const NUM_COLUMNS: u32 = 2; - const TEST_CONFIG: DatabaseConfig = DatabaseConfig { col_approval_data: DATA_COL }; + const TEST_CONFIG: DatabaseConfig = + DatabaseConfig { col_approval_data: DATA_COL, col_session_data: SESSION_DATA_COL }; #[derive(Default)] struct MockClock; diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index f5e888c7c538..18b8746ca317 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -116,6 +116,8 @@ const LOG_TARGET: &str = "parachain::approval-voting"; pub struct Config { /// The column family in the DB where approval-voting data is stored. pub col_approval_data: u32, + /// The of the DB where rolling session info is stored. + pub col_session_data: u32, /// The slot duration of the consensus algorithm, in milliseconds. Should be evenly /// divisible by 500. pub slot_duration_millis: u64, @@ -355,7 +357,10 @@ impl ApprovalVotingSubsystem { keystore, slot_duration_millis: config.slot_duration_millis, db, - db_config: DatabaseConfig { col_approval_data: config.col_approval_data }, + db_config: DatabaseConfig { + col_approval_data: config.col_approval_data, + col_session_data: config.col_session_data, + }, mode: Mode::Syncing(sync_oracle), metrics, } @@ -364,8 +369,10 @@ impl ApprovalVotingSubsystem { /// Revert to the block corresponding to the specified `hash`. /// The operation is not allowed for blocks older than the last finalized one. pub fn revert_to(&self, hash: Hash) -> Result<(), SubsystemError> { - let config = - approval_db::v1::Config { col_approval_data: self.db_config.col_approval_data }; + let config = approval_db::v1::Config { + col_approval_data: self.db_config.col_approval_data, + col_session_data: self.db_config.col_session_data, + }; let mut backend = approval_db::v1::DbBackend::new(self.db.clone(), config); let mut overlay = OverlayedBackend::new(&backend); diff --git a/node/core/approval-voting/src/tests.rs b/node/core/approval-voting/src/tests.rs index f58e60c6a487..d7e19a8c09f3 100644 --- a/node/core/approval-voting/src/tests.rs +++ b/node/core/approval-voting/src/tests.rs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +use crate::tests::test_constants::TEST_CONFIG; + use super::*; use polkadot_node_primitives::{ approval::{ @@ -113,10 +115,12 @@ fn make_sync_oracle(val: bool) -> (Box, TestSyncOracleHan pub mod test_constants { use crate::approval_db::v1::Config as DatabaseConfig; const DATA_COL: u32 = 0; + const SESSION_DATA_COL: u32 = 1; - pub(crate) const NUM_COLUMNS: u32 = 1; + pub(crate) const NUM_COLUMNS: u32 = 2; - pub(crate) const TEST_CONFIG: DatabaseConfig = DatabaseConfig { col_approval_data: DATA_COL }; + pub(crate) const TEST_CONFIG: DatabaseConfig = + DatabaseConfig { col_approval_data: DATA_COL, col_session_data: SESSION_DATA_COL }; } struct MockSupportsParachains; @@ -489,6 +493,7 @@ fn test_harness>( Config { col_approval_data: test_constants::TEST_CONFIG.col_approval_data, slot_duration_millis: SLOT_DURATION_MILLIS, + col_session_data: TEST_CONFIG.col_session_data, }, Arc::new(db), Arc::new(keystore), diff --git a/node/core/dispute-coordinator/src/db/v1.rs b/node/core/dispute-coordinator/src/db/v1.rs index 2d14f5151003..aa67781ddd25 100644 --- a/node/core/dispute-coordinator/src/db/v1.rs +++ b/node/core/dispute-coordinator/src/db/v1.rs @@ -15,12 +15,6 @@ // along with Polkadot. If not, see . //! `V1` database for the dispute coordinator. -//! -//! Note that the version here differs from the actual version of the parachains -//! database (check `CURRENT_VERSION` in `node/service/src/parachains_db/upgrade.rs`). -//! The code in this module implements the way dispute coordinator works with -//! the dispute data in the database. Any breaking changes here will still -//! require a db migration (check `node/service/src/parachains_db/upgrade.rs`). use polkadot_node_primitives::DisputeStatus; use polkadot_node_subsystem_util::database::{DBTransaction, Database}; @@ -212,6 +206,8 @@ fn candidate_votes_session_prefix(session: SessionIndex) -> [u8; 15 + 4] { pub struct ColumnConfiguration { /// The column in the key-value DB where data is stored. pub col_dispute_data: u32, + /// The column in the key-value DB where session data is stored. + pub col_session_data: u32, } /// Tracked votes on candidates, for the purposes of dispute resolution. @@ -382,7 +378,7 @@ mod tests { let db = kvdb_memorydb::create(1); let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new(db, &[0]); let store = Arc::new(db); - let config = ColumnConfiguration { col_dispute_data: 0 }; + let config = ColumnConfiguration { col_dispute_data: 0, col_session_data: 1 }; DbBackend::new(store, config, Metrics::default()) } diff --git a/node/core/dispute-coordinator/src/initialized.rs b/node/core/dispute-coordinator/src/initialized.rs index 1b90a9d865e1..81134a43a3a0 100644 --- a/node/core/dispute-coordinator/src/initialized.rs +++ b/node/core/dispute-coordinator/src/initialized.rs @@ -305,12 +305,13 @@ impl Initialized { Ok(session_idx) if self.gaps_in_cache || session_idx > self.highest_session_seen => { - // Fetch the last `DISPUTE_WINDOW` number of sessions unless there are no gaps in - // cache and we are not missing too many `SessionInfo`s - let mut lower_bound = session_idx.saturating_sub(DISPUTE_WINDOW.get() - 1); - if !self.gaps_in_cache && self.highest_session_seen > lower_bound { - lower_bound = self.highest_session_seen + 1 - } + // If error has occurred during last session caching - fetch the whole window + // Otherwise - cache only the new sessions + let lower_bound = if self.gaps_in_cache { + session_idx.saturating_sub(DISPUTE_WINDOW.get() - 1) + } else { + self.highest_session_seen + 1 + }; // There is a new session. Perform a dummy fetch to cache it. for idx in lower_bound..=session_idx { diff --git a/node/core/dispute-coordinator/src/lib.rs b/node/core/dispute-coordinator/src/lib.rs index 02bb6ef9ecda..7379b392f312 100644 --- a/node/core/dispute-coordinator/src/lib.rs +++ b/node/core/dispute-coordinator/src/lib.rs @@ -127,11 +127,16 @@ pub struct DisputeCoordinatorSubsystem { pub struct Config { /// The data column in the store to use for dispute data. pub col_dispute_data: u32, + /// The data column in the store to use for session data. + pub col_session_data: u32, } impl Config { fn column_config(&self) -> db::v1::ColumnConfiguration { - db::v1::ColumnConfiguration { col_dispute_data: self.col_dispute_data } + db::v1::ColumnConfiguration { + col_dispute_data: self.col_dispute_data, + col_session_data: self.col_session_data, + } } } diff --git a/node/core/dispute-coordinator/src/tests.rs b/node/core/dispute-coordinator/src/tests.rs index ceeac351e8b8..7d3b87f3c228 100644 --- a/node/core/dispute-coordinator/src/tests.rs +++ b/node/core/dispute-coordinator/src/tests.rs @@ -33,7 +33,6 @@ use polkadot_node_subsystem_util::database::Database; use polkadot_node_primitives::{ DisputeMessage, DisputeStatus, SignedDisputeStatement, SignedFullStatement, Statement, - DISPUTE_WINDOW, }; use polkadot_node_subsystem::{ messages::{ @@ -215,9 +214,9 @@ impl Default for TestState { make_keystore(vec![Sr25519Keyring::Alice.to_seed()].into_iter()).into(); let db = kvdb_memorydb::create(1); - let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new(db, &[0]); + let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new(db, &[]); let db = Arc::new(db); - let config = Config { col_dispute_data: 0 }; + let config = Config { col_dispute_data: 0, col_session_data: 1 }; let genesis_header = Header { parent_hash: Hash::zero(), @@ -331,11 +330,9 @@ impl TestState { assert_eq!(h, block_hash); let _ = tx.send(Ok(session)); - let first_expected_session = session.saturating_sub(DISPUTE_WINDOW.get() - 1); - // Queries for session caching - see `handle_startup` if self.known_session.is_none() { - for i in first_expected_session..=session { + for i in 0..=session { assert_matches!( overseer_recv(virtual_overseer).await, AllMessages::RuntimeApi(RuntimeApiMessage::Request( @@ -3396,174 +3393,3 @@ fn informs_chain_selection_when_dispute_concluded_against() { }) }); } - -// On startup `SessionInfo` cache should be populated -#[test] -fn session_info_caching_on_startup_works() { - test_harness(|mut test_state, mut virtual_overseer| { - Box::pin(async move { - let session = 1; - - test_state.handle_resume_sync(&mut virtual_overseer, session).await; - - test_state - }) - }); -} - -// Underflow means that no more than `DISPUTE_WINDOW` sessions should be fetched on startup -#[test] -fn session_info_caching_doesnt_underflow() { - test_harness(|mut test_state, mut virtual_overseer| { - Box::pin(async move { - let session = DISPUTE_WINDOW.get() + 1; - - test_state.handle_resume_sync(&mut virtual_overseer, session).await; - - test_state - }) - }); -} - -// Cached `SessionInfo` shouldn't be re-requested from the runtime -#[test] -fn session_info_is_requested_only_once() { - test_harness(|mut test_state, mut virtual_overseer| { - Box::pin(async move { - let session = 1; - - test_state.handle_resume_sync(&mut virtual_overseer, session).await; - - // This leaf activation shouldn't fetch `SessionInfo` because the session is already cached - test_state - .activate_leaf_at_session( - &mut virtual_overseer, - session, - 3, - vec![make_candidate_included_event(make_valid_candidate_receipt())], - ) - .await; - - // This leaf activation should fetch `SessionInfo` because the session is new - test_state - .activate_leaf_at_session( - &mut virtual_overseer, - session + 1, - 4, - vec![make_candidate_included_event(make_valid_candidate_receipt())], - ) - .await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::SessionInfo(session_index, tx), - )) => { - assert_eq!(session_index, 2); - let _ = tx.send(Ok(Some(test_state.session_info()))); - } - ); - test_state - }) - }); -} - -// Big jump means the new session we see with a leaf update is at least a `DISPUTE_WINDOW` bigger than -// the already known one. In this case The whole `DISPUTE_WINDOW` should be fetched. -#[test] -fn session_info_big_jump_works() { - test_harness(|mut test_state, mut virtual_overseer| { - Box::pin(async move { - let session_on_startup = 1; - - test_state.handle_resume_sync(&mut virtual_overseer, session_on_startup).await; - - // This leaf activation shouldn't fetch `SessionInfo` because the session is already cached - test_state - .activate_leaf_at_session( - &mut virtual_overseer, - session_on_startup, - 3, - vec![make_candidate_included_event(make_valid_candidate_receipt())], - ) - .await; - - let session_after_jump = session_on_startup + DISPUTE_WINDOW.get() + 10; - // This leaf activation should cache all missing `SessionInfo`s - test_state - .activate_leaf_at_session( - &mut virtual_overseer, - session_after_jump, - 4, - vec![make_candidate_included_event(make_valid_candidate_receipt())], - ) - .await; - - let first_expected_session = - session_after_jump.saturating_sub(DISPUTE_WINDOW.get() - 1); - for expected_idx in first_expected_session..=session_after_jump { - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::SessionInfo(session_index, tx), - )) => { - assert_eq!(session_index, expected_idx); - let _ = tx.send(Ok(Some(test_state.session_info()))); - } - ); - } - test_state - }) - }); -} - -// Small jump means the new session we see with a leaf update is at less than last known one + `DISPUTE_WINDOW`. In this -// case fetching should start from last known one + 1. -#[test] -fn session_info_small_jump_works() { - test_harness(|mut test_state, mut virtual_overseer| { - Box::pin(async move { - let session_on_startup = 1; - - test_state.handle_resume_sync(&mut virtual_overseer, session_on_startup).await; - - // This leaf activation shouldn't fetch `SessionInfo` because the session is already cached - test_state - .activate_leaf_at_session( - &mut virtual_overseer, - session_on_startup, - 3, - vec![make_candidate_included_event(make_valid_candidate_receipt())], - ) - .await; - - let session_after_jump = session_on_startup + DISPUTE_WINDOW.get() - 1; - // This leaf activation should cache all missing `SessionInfo`s - test_state - .activate_leaf_at_session( - &mut virtual_overseer, - session_after_jump, - 4, - vec![make_candidate_included_event(make_valid_candidate_receipt())], - ) - .await; - - let first_expected_session = session_on_startup + 1; - for expected_idx in first_expected_session..=session_after_jump { - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::SessionInfo(session_index, tx), - )) => { - assert_eq!(session_index, expected_idx); - let _ = tx.send(Ok(Some(test_state.session_info()))); - } - ); - } - test_state - }) - }); -} diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index d00c13fda2b0..026930758b86 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -4,10 +4,6 @@ version.workspace = true authors.workspace = true edition.workspace = true -[[bin]] -name = "puppet_worker" -path = "bin/puppet_worker.rs" - [dependencies] always-assert = "0.1" futures = "0.3.21" @@ -17,16 +13,12 @@ libc = "0.2.139" pin-project = "1.0.9" rand = "0.8.5" slotmap = "1.0" -tempfile = "3.3.0" tokio = { version = "1.24.2", features = ["fs", "process"] } parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } polkadot-parachain = { path = "../../../parachain" } polkadot-core-primitives = { path = "../../../core-primitives" } -polkadot-node-core-pvf-common = { path = "common" } -polkadot-node-core-pvf-execute-worker = { path = "execute-worker" } -polkadot-node-core-pvf-prepare-worker = { path = "prepare-worker" } polkadot-node-metrics = { path = "../../metrics" } polkadot-node-primitives = { path = "../../primitives" } polkadot-primitives = { path = "../../../primitives" } @@ -42,6 +34,4 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/substrate" [dev-dependencies] assert_matches = "1.4.0" hex-literal = "0.3.4" - -adder = { package = "test-parachain-adder", path = "../../../parachain/test-parachains/adder" } -halt = { package = "test-parachain-halt", path = "../../../parachain/test-parachains/halt" } +tempfile = "3.3.0" diff --git a/node/core/pvf/common/Cargo.toml b/node/core/pvf/common/Cargo.toml deleted file mode 100644 index de9fa10804c7..000000000000 --- a/node/core/pvf/common/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "polkadot-node-core-pvf-common" -version.workspace = true -authors.workspace = true -edition.workspace = true - -[dependencies] -cpu-time = "1.0.0" -futures = "0.3.21" -gum = { package = "tracing-gum", path = "../../../gum" } -libc = "0.2.139" -tokio = { version = "1.24.2", features = ["fs", "process", "io-util"] } - -parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } - -polkadot-parachain = { path = "../../../../parachain" } -polkadot-primitives = { path = "../../../../primitives" } - -sc-executor-common = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor-wasmtime = { git = "https://github.com/paritytech/substrate", branch = "master" } - -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[build-dependencies] -substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/pvf/common/src/error.rs b/node/core/pvf/common/src/error.rs deleted file mode 100644 index 56353c53b4d2..000000000000 --- a/node/core/pvf/common/src/error.rs +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::prepare::PrepareStats; -use parity_scale_codec::{Decode, Encode}; -use std::fmt; - -/// Result of PVF preparation performed by the validation host. Contains stats about the preparation if -/// successful -pub type PrepareResult = Result; - -/// An error that occurred during the prepare part of the PVF pipeline. -#[derive(Debug, Clone, Encode, Decode)] -pub enum PrepareError { - /// During the prevalidation stage of preparation an issue was found with the PVF. - Prevalidation(String), - /// Compilation failed for the given PVF. - Preparation(String), - /// An unexpected panic has occurred in the preparation worker. - Panic(String), - /// Failed to prepare the PVF due to the time limit. - TimedOut, - /// An IO error occurred. This state is reported by either the validation host or by the worker. - IoErr(String), - /// The temporary file for the artifact could not be created at the given cache path. This state is reported by the - /// validation host (not by the worker). - CreateTmpFileErr(String), - /// The response from the worker is received, but the file cannot be renamed (moved) to the final destination - /// location. This state is reported by the validation host (not by the worker). - RenameTmpFileErr(String), -} - -impl PrepareError { - /// Returns whether this is a deterministic error, i.e. one that should trigger reliably. Those - /// errors depend on the PVF itself and the sc-executor/wasmtime logic. - /// - /// Non-deterministic errors can happen spuriously. Typically, they occur due to resource - /// starvation, e.g. under heavy load or memory pressure. Those errors are typically transient - /// but may persist e.g. if the node is run by overwhelmingly underpowered machine. - pub fn is_deterministic(&self) -> bool { - use PrepareError::*; - match self { - Prevalidation(_) | Preparation(_) | Panic(_) => true, - TimedOut | IoErr(_) | CreateTmpFileErr(_) | RenameTmpFileErr(_) => false, - } - } -} - -impl fmt::Display for PrepareError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - use PrepareError::*; - match self { - Prevalidation(err) => write!(f, "prevalidation: {}", err), - Preparation(err) => write!(f, "preparation: {}", err), - Panic(err) => write!(f, "panic: {}", err), - TimedOut => write!(f, "prepare: timeout"), - IoErr(err) => write!(f, "prepare: io error while receiving response: {}", err), - CreateTmpFileErr(err) => write!(f, "prepare: error creating tmp file: {}", err), - RenameTmpFileErr(err) => write!(f, "prepare: error renaming tmp file: {}", err), - } - } -} - -/// Some internal error occurred. -/// -/// Should only ever be used for validation errors independent of the candidate and PVF, or for errors we ruled out -/// during pre-checking (so preparation errors are fine). -#[derive(Debug, Clone, Encode, Decode)] -pub enum InternalValidationError { - /// Some communication error occurred with the host. - HostCommunication(String), - /// Could not find or open compiled artifact file. - CouldNotOpenFile(String), - /// An error occurred in the CPU time monitor thread. Should be totally unrelated to validation. - CpuTimeMonitorThread(String), - /// Some non-deterministic preparation error occurred. - NonDeterministicPrepareError(PrepareError), -} - -impl fmt::Display for InternalValidationError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - use InternalValidationError::*; - match self { - HostCommunication(err) => - write!(f, "validation: some communication error occurred with the host: {}", err), - CouldNotOpenFile(err) => - write!(f, "validation: could not find or open compiled artifact file: {}", err), - CpuTimeMonitorThread(err) => - write!(f, "validation: an error occurred in the CPU time monitor thread: {}", err), - NonDeterministicPrepareError(err) => write!(f, "validation: prepare: {}", err), - } - } -} diff --git a/node/core/pvf/common/src/execute.rs b/node/core/pvf/common/src/execute.rs deleted file mode 100644 index de5ce39f7838..000000000000 --- a/node/core/pvf/common/src/execute.rs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::error::InternalValidationError; -use parity_scale_codec::{Decode, Encode}; -use polkadot_parachain::primitives::ValidationResult; -use polkadot_primitives::ExecutorParams; -use std::time::Duration; - -/// The payload of the one-time handshake that is done when a worker process is created. Carries -/// data from the host to the worker. -#[derive(Encode, Decode)] -pub struct Handshake { - /// The executor parameters. - pub executor_params: ExecutorParams, -} - -/// The response from an execution job on the worker. -#[derive(Encode, Decode)] -pub enum Response { - /// The job completed successfully. - Ok { - /// The result of parachain validation. - result_descriptor: ValidationResult, - /// The amount of CPU time taken by the job. - duration: Duration, - }, - /// The candidate is invalid. - InvalidCandidate(String), - /// The job timed out. - TimedOut, - /// An unexpected panic has occurred in the execution worker. - Panic(String), - /// Some internal error occurred. - InternalError(InternalValidationError), -} - -impl Response { - /// Creates an invalid response from a context `ctx` and a message `msg` (which can be empty). - pub fn format_invalid(ctx: &'static str, msg: &str) -> Self { - if msg.is_empty() { - Self::InvalidCandidate(ctx.to_string()) - } else { - Self::InvalidCandidate(format!("{}: {}", ctx, msg)) - } - } -} diff --git a/node/core/pvf/common/src/executor_intf.rs b/node/core/pvf/common/src/executor_intf.rs deleted file mode 100644 index 5926f3c5dbc7..000000000000 --- a/node/core/pvf/common/src/executor_intf.rs +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Interface to the Substrate Executor - -use polkadot_primitives::{ExecutorParam, ExecutorParams}; -use sc_executor_common::wasm_runtime::HeapAllocStrategy; -use sc_executor_wasmtime::{Config, DeterministicStackLimit, Semantics}; - -// Memory configuration -// -// When Substrate Runtime is instantiated, a number of WASM pages are allocated for the Substrate -// Runtime instance's linear memory. The exact number of pages is a sum of whatever the WASM blob -// itself requests (by default at least enough to hold the data section as well as have some space -// left for the stack; this is, of course, overridable at link time when compiling the runtime) -// plus the number of pages specified in the `extra_heap_pages` passed to the executor. -// -// By default, rustc (or `lld` specifically) should allocate 1 MiB for the shadow stack, or 16 pages. -// The data section for runtimes are typically rather small and can fit in a single digit number of -// WASM pages, so let's say an extra 16 pages. Thus let's assume that 32 pages or 2 MiB are used for -// these needs by default. -const DEFAULT_HEAP_PAGES_ESTIMATE: u32 = 32; -const EXTRA_HEAP_PAGES: u32 = 2048; - -/// The number of bytes devoted for the stack during wasm execution of a PVF. -pub const NATIVE_STACK_MAX: u32 = 256 * 1024 * 1024; - -// VALUES OF THE DEFAULT CONFIGURATION SHOULD NEVER BE CHANGED -// They are used as base values for the execution environment parametrization. -// To overwrite them, add new ones to `EXECUTOR_PARAMS` in the `session_info` pallet and perform -// a runtime upgrade to make them active. -pub const DEFAULT_CONFIG: Config = Config { - allow_missing_func_imports: true, - cache_path: None, - semantics: Semantics { - heap_alloc_strategy: sc_executor_common::wasm_runtime::HeapAllocStrategy::Dynamic { - maximum_pages: Some(DEFAULT_HEAP_PAGES_ESTIMATE + EXTRA_HEAP_PAGES), - }, - - instantiation_strategy: - sc_executor_wasmtime::InstantiationStrategy::RecreateInstanceCopyOnWrite, - - // Enable deterministic stack limit to pin down the exact number of items the wasmtime stack - // can contain before it traps with stack overflow. - // - // Here is how the values below were chosen. - // - // At the moment of writing, the default native stack size limit is 1 MiB. Assuming a logical item - // (see the docs about the field and the instrumentation algorithm) is 8 bytes, 1 MiB can - // fit 2x 65536 logical items. - // - // Since reaching the native stack limit is undesirable, we halve the logical item limit and - // also increase the native 256x. This hopefully should preclude wasm code from reaching - // the stack limit set by the wasmtime. - deterministic_stack_limit: Some(DeterministicStackLimit { - logical_max: 65536, - native_stack_max: NATIVE_STACK_MAX, - }), - canonicalize_nans: true, - // Rationale for turning the multi-threaded compilation off is to make the preparation time - // easily reproducible and as deterministic as possible. - // - // Currently the prepare queue doesn't distinguish between precheck and prepare requests. - // On the one hand, it simplifies the code, on the other, however, slows down compile times - // for execute requests. This behavior may change in future. - parallel_compilation: false, - - // WASM extensions. Only those that are meaningful to us may be controlled here. By default, - // we're using WASM MVP, which means all the extensions are disabled. Nevertheless, some - // extensions (e.g., sign extension ops) are enabled by Wasmtime and cannot be disabled. - wasm_reference_types: false, - wasm_simd: false, - wasm_bulk_memory: false, - wasm_multi_value: false, - }, -}; - -pub fn params_to_wasmtime_semantics(par: &ExecutorParams) -> Result { - let mut sem = DEFAULT_CONFIG.semantics.clone(); - let mut stack_limit = if let Some(stack_limit) = sem.deterministic_stack_limit.clone() { - stack_limit - } else { - return Err("No default stack limit set".to_owned()) - }; - - for p in par.iter() { - match p { - ExecutorParam::MaxMemoryPages(max_pages) => - sem.heap_alloc_strategy = - HeapAllocStrategy::Dynamic { maximum_pages: Some(*max_pages) }, - ExecutorParam::StackLogicalMax(slm) => stack_limit.logical_max = *slm, - ExecutorParam::StackNativeMax(snm) => stack_limit.native_stack_max = *snm, - ExecutorParam::WasmExtBulkMemory => sem.wasm_bulk_memory = true, - // TODO: Not implemented yet; . - ExecutorParam::PrecheckingMaxMemory(_) => (), - ExecutorParam::PvfPrepTimeout(_, _) | ExecutorParam::PvfExecTimeout(_, _) => (), // Not used here - } - } - sem.deterministic_stack_limit = Some(stack_limit); - Ok(sem) -} diff --git a/node/core/pvf/common/src/lib.rs b/node/core/pvf/common/src/lib.rs deleted file mode 100644 index 028fd9b17947..000000000000 --- a/node/core/pvf/common/src/lib.rs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Functionality that is shared by the host and the workers. - -pub mod error; -pub mod execute; -pub mod executor_intf; -pub mod prepare; -pub mod pvf; -pub mod worker; - -pub use cpu_time::ProcessTime; - -const LOG_TARGET: &str = "parachain::pvf-common"; - -use std::mem; -use tokio::io::{self, AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; - -#[doc(hidden)] -pub mod tests { - use std::time::Duration; - - pub const TEST_EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); - pub const TEST_PREPARATION_TIMEOUT: Duration = Duration::from_secs(30); -} - -/// Write some data prefixed by its length into `w`. -pub async fn framed_send(w: &mut (impl AsyncWrite + Unpin), buf: &[u8]) -> io::Result<()> { - let len_buf = buf.len().to_le_bytes(); - w.write_all(&len_buf).await?; - w.write_all(buf).await?; - Ok(()) -} - -/// Read some data prefixed by its length from `r`. -pub async fn framed_recv(r: &mut (impl AsyncRead + Unpin)) -> io::Result> { - let mut len_buf = [0u8; mem::size_of::()]; - r.read_exact(&mut len_buf).await?; - let len = usize::from_le_bytes(len_buf); - let mut buf = vec![0; len]; - r.read_exact(&mut buf).await?; - Ok(buf) -} diff --git a/node/core/pvf/common/src/prepare.rs b/node/core/pvf/common/src/prepare.rs deleted file mode 100644 index ac64e2927a16..000000000000 --- a/node/core/pvf/common/src/prepare.rs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use parity_scale_codec::{Decode, Encode}; - -/// Preparation statistics, including the CPU time and memory taken. -#[derive(Debug, Clone, Default, Encode, Decode)] -pub struct PrepareStats { - /// The CPU time that elapsed for the preparation job. - pub cpu_time_elapsed: std::time::Duration, - /// The observed memory statistics for the preparation job. - pub memory_stats: MemoryStats, -} - -/// Helper struct to contain all the memory stats, including `MemoryAllocationStats` and, if -/// supported by the OS, `ru_maxrss`. -#[derive(Clone, Debug, Default, Encode, Decode)] -pub struct MemoryStats { - /// Memory stats from `tikv_jemalloc_ctl`. - #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] - pub memory_tracker_stats: Option, - /// `ru_maxrss` from `getrusage`. `None` if an error occurred. - #[cfg(target_os = "linux")] - pub max_rss: Option, -} - -/// Statistics of collected memory metrics. -#[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] -#[derive(Clone, Debug, Default, Encode, Decode)] -pub struct MemoryAllocationStats { - /// Total resident memory, in bytes. - pub resident: u64, - /// Total allocated memory, in bytes. - pub allocated: u64, -} diff --git a/node/core/pvf/prepare-worker/Cargo.toml b/node/core/pvf/prepare-worker/Cargo.toml deleted file mode 100644 index 07386de35962..000000000000 --- a/node/core/pvf/prepare-worker/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "polkadot-node-core-pvf-prepare-worker" -version.workspace = true -authors.workspace = true -edition.workspace = true - -[dependencies] -futures = "0.3.21" -gum = { package = "tracing-gum", path = "../../../gum" } -libc = "0.2.139" -rayon = "1.5.1" -tikv-jemalloc-ctl = { version = "0.5.0", optional = true } -tokio = { version = "1.24.2", features = ["fs", "process"] } - -parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } - -polkadot-node-core-pvf-common = { path = "../common" } -polkadot-parachain = { path = "../../../../parachain" } -polkadot-primitives = { path = "../../../../primitives" } - -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor-common = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor-wasmtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-maybe-compressed-blob = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[target.'cfg(target_os = "linux")'.dependencies] -tikv-jemalloc-ctl = "0.5.0" - -[features] -builder = [] -jemalloc-allocator = ["dep:tikv-jemalloc-ctl"] diff --git a/node/core/pvf/prepare-worker/src/executor_intf.rs b/node/core/pvf/prepare-worker/src/executor_intf.rs deleted file mode 100644 index 1f88f6a6dd6e..000000000000 --- a/node/core/pvf/prepare-worker/src/executor_intf.rs +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Interface to the Substrate Executor - -use polkadot_node_core_pvf_common::executor_intf::params_to_wasmtime_semantics; -use polkadot_primitives::ExecutorParams; -use sc_executor_common::runtime_blob::RuntimeBlob; - -/// Runs the prevalidation on the given code. Returns a [`RuntimeBlob`] if it succeeds. -pub fn prevalidate(code: &[u8]) -> Result { - let blob = RuntimeBlob::new(code)?; - // It's assumed this function will take care of any prevalidation logic - // that needs to be done. - // - // Do nothing for now. - Ok(blob) -} - -/// Runs preparation on the given runtime blob. If successful, it returns a serialized compiled -/// artifact which can then be used to pass into `Executor::execute` after writing it to the disk. -pub fn prepare( - blob: RuntimeBlob, - executor_params: &ExecutorParams, -) -> Result, sc_executor_common::error::WasmError> { - let semantics = params_to_wasmtime_semantics(executor_params) - .map_err(|e| sc_executor_common::error::WasmError::Other(e))?; - sc_executor_wasmtime::prepare_runtime_artifact(blob, &semantics) -} diff --git a/node/core/pvf/src/artifacts.rs b/node/core/pvf/src/artifacts.rs index 78d2f88941b8..d5a660cc3aa5 100644 --- a/node/core/pvf/src/artifacts.rs +++ b/node/core/pvf/src/artifacts.rs @@ -55,9 +55,8 @@ //! older by a predefined parameter. This process is run very rarely (say, once a day). Once the //! artifact is expired it is removed from disk eagerly atomically. -use crate::host::PrepareResultSender; +use crate::{error::PrepareError, host::PrepareResultSender, prepare::PrepareStats}; use always_assert::always; -use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats, pvf::PvfPrepData}; use polkadot_parachain::primitives::ValidationCodeHash; use polkadot_primitives::ExecutorParamsHash; use std::{ @@ -66,6 +65,22 @@ use std::{ time::{Duration, SystemTime}, }; +/// Contains the bytes for a successfully compiled artifact. +pub struct CompiledArtifact(Vec); + +impl CompiledArtifact { + /// Creates a `CompiledArtifact`. + pub fn new(code: Vec) -> Self { + Self(code) + } +} + +impl AsRef<[u8]> for CompiledArtifact { + fn as_ref(&self) -> &[u8] { + self.0.as_slice() + } +} + /// Identifier of an artifact. Encodes a code hash of the PVF and a hash of executor parameter set. #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct ArtifactId { @@ -81,11 +96,6 @@ impl ArtifactId { Self { code_hash, executor_params_hash } } - /// Returns an artifact ID that corresponds to the PVF with given executor params. - pub fn from_pvf_prep_data(pvf: &PvfPrepData) -> Self { - Self::new(pvf.code_hash(), pvf.executor_params().hash()) - } - /// Tries to recover the artifact id from the given file name. #[cfg(test)] pub fn from_file_name(file_name: &str) -> Option { @@ -294,7 +304,7 @@ mod tests { #[tokio::test] async fn artifacts_removes_cache_on_startup() { - let fake_cache_path = crate::worker_intf::tmpfile("test-cache").await.unwrap(); + let fake_cache_path = crate::worker_common::tmpfile("test-cache").await.unwrap(); let fake_artifact_path = { let mut p = fake_cache_path.clone(); p.push("wasmtime_0x1234567890123456789012345678901234567890123456789012345678901234"); diff --git a/node/core/pvf/src/error.rs b/node/core/pvf/src/error.rs index 7372cd233c49..33f3f00810f2 100644 --- a/node/core/pvf/src/error.rs +++ b/node/core/pvf/src/error.rs @@ -14,7 +14,65 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use polkadot_node_core_pvf_common::error::{InternalValidationError, PrepareError}; +use crate::prepare::PrepareStats; +use parity_scale_codec::{Decode, Encode}; +use std::fmt; + +/// Result of PVF preparation performed by the validation host. Contains stats about the preparation if +/// successful +pub type PrepareResult = Result; + +/// An error that occurred during the prepare part of the PVF pipeline. +#[derive(Debug, Clone, Encode, Decode)] +pub enum PrepareError { + /// During the prevalidation stage of preparation an issue was found with the PVF. + Prevalidation(String), + /// Compilation failed for the given PVF. + Preparation(String), + /// An unexpected panic has occurred in the preparation worker. + Panic(String), + /// Failed to prepare the PVF due to the time limit. + TimedOut, + /// An IO error occurred. This state is reported by either the validation host or by the worker. + IoErr(String), + /// The temporary file for the artifact could not be created at the given cache path. This state is reported by the + /// validation host (not by the worker). + CreateTmpFileErr(String), + /// The response from the worker is received, but the file cannot be renamed (moved) to the final destination + /// location. This state is reported by the validation host (not by the worker). + RenameTmpFileErr(String), +} + +impl PrepareError { + /// Returns whether this is a deterministic error, i.e. one that should trigger reliably. Those + /// errors depend on the PVF itself and the sc-executor/wasmtime logic. + /// + /// Non-deterministic errors can happen spuriously. Typically, they occur due to resource + /// starvation, e.g. under heavy load or memory pressure. Those errors are typically transient + /// but may persist e.g. if the node is run by overwhelmingly underpowered machine. + pub fn is_deterministic(&self) -> bool { + use PrepareError::*; + match self { + Prevalidation(_) | Preparation(_) | Panic(_) => true, + TimedOut | IoErr(_) | CreateTmpFileErr(_) | RenameTmpFileErr(_) => false, + } + } +} + +impl fmt::Display for PrepareError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use PrepareError::*; + match self { + Prevalidation(err) => write!(f, "prevalidation: {}", err), + Preparation(err) => write!(f, "preparation: {}", err), + Panic(err) => write!(f, "panic: {}", err), + TimedOut => write!(f, "prepare: timeout"), + IoErr(err) => write!(f, "prepare: io error while receiving response: {}", err), + CreateTmpFileErr(err) => write!(f, "prepare: error creating tmp file: {}", err), + RenameTmpFileErr(err) => write!(f, "prepare: error renaming tmp file: {}", err), + } + } +} /// A error raised during validation of the candidate. #[derive(Debug, Clone)] @@ -64,6 +122,37 @@ pub enum InvalidCandidate { Panic(String), } +/// Some internal error occurred. +/// +/// Should only ever be used for validation errors independent of the candidate and PVF, or for errors we ruled out +/// during pre-checking (so preparation errors are fine). +#[derive(Debug, Clone, Encode, Decode)] +pub enum InternalValidationError { + /// Some communication error occurred with the host. + HostCommunication(String), + /// Could not find or open compiled artifact file. + CouldNotOpenFile(String), + /// An error occurred in the CPU time monitor thread. Should be totally unrelated to validation. + CpuTimeMonitorThread(String), + /// Some non-deterministic preparation error occurred. + NonDeterministicPrepareError(PrepareError), +} + +impl fmt::Display for InternalValidationError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use InternalValidationError::*; + match self { + HostCommunication(err) => + write!(f, "validation: some communication error occurred with the host: {}", err), + CouldNotOpenFile(err) => + write!(f, "validation: could not find or open compiled artifact file: {}", err), + CpuTimeMonitorThread(err) => + write!(f, "validation: an error occurred in the CPU time monitor thread: {}", err), + NonDeterministicPrepareError(err) => write!(f, "validation: prepare: {}", err), + } + } +} + impl From for ValidationError { fn from(error: InternalValidationError) -> Self { Self::InternalError(error) diff --git a/node/core/pvf/src/execute/mod.rs b/node/core/pvf/src/execute/mod.rs index 669b9dc04d7c..8e3b17d71569 100644 --- a/node/core/pvf/src/execute/mod.rs +++ b/node/core/pvf/src/execute/mod.rs @@ -24,3 +24,4 @@ mod queue; mod worker_intf; pub use queue::{start, PendingExecutionRequest, ToQueue}; +pub use worker_intf::{Handshake as ExecuteHandshake, Response as ExecuteResponse}; diff --git a/node/core/pvf/src/execute/queue.rs b/node/core/pvf/src/execute/queue.rs index 395697616b36..61cebc5e2c46 100644 --- a/node/core/pvf/src/execute/queue.rs +++ b/node/core/pvf/src/execute/queue.rs @@ -21,7 +21,7 @@ use crate::{ artifacts::{ArtifactId, ArtifactPathId}, host::ResultSender, metrics::Metrics, - worker_intf::{IdleWorker, WorkerHandle}, + worker_common::{IdleWorker, WorkerHandle}, InvalidCandidate, ValidationError, LOG_TARGET, }; use futures::{ diff --git a/node/core/pvf/src/execute/worker_intf.rs b/node/core/pvf/src/execute/worker_intf.rs index 6e54e17e515a..4c26aeb0260a 100644 --- a/node/core/pvf/src/execute/worker_intf.rs +++ b/node/core/pvf/src/execute/worker_intf.rs @@ -18,20 +18,17 @@ use crate::{ artifacts::ArtifactPathId, - worker_intf::{ - path_to_bytes, spawn_with_program_path, IdleWorker, SpawnErr, WorkerHandle, - JOB_TIMEOUT_WALL_CLOCK_FACTOR, + error::InternalValidationError, + worker_common::{ + framed_recv, framed_send, path_to_bytes, spawn_with_program_path, IdleWorker, SpawnErr, + WorkerHandle, JOB_TIMEOUT_WALL_CLOCK_FACTOR, }, LOG_TARGET, }; use futures::FutureExt; use futures_timer::Delay; use parity_scale_codec::{Decode, Encode}; -use polkadot_node_core_pvf_common::{ - error::InternalValidationError, - execute::{Handshake, Response}, - framed_recv, framed_send, -}; + use polkadot_parachain::primitives::ValidationResult; use polkadot_primitives::ExecutorParams; use std::{path::Path, time::Duration}; @@ -211,3 +208,42 @@ async fn recv_response(stream: &mut UnixStream) -> io::Result { ) }) } + +/// The payload of the one-time handshake that is done when a worker process is created. Carries +/// data from the host to the worker. +#[derive(Encode, Decode)] +pub struct Handshake { + /// The executor parameters. + pub executor_params: ExecutorParams, +} + +/// The response from an execution job on the worker. +#[derive(Encode, Decode)] +pub enum Response { + /// The job completed successfully. + Ok { + /// The result of parachain validation. + result_descriptor: ValidationResult, + /// The amount of CPU time taken by the job. + duration: Duration, + }, + /// The candidate is invalid. + InvalidCandidate(String), + /// The job timed out. + TimedOut, + /// An unexpected panic has occurred in the execution worker. + Panic(String), + /// Some internal error occurred. + InternalError(InternalValidationError), +} + +impl Response { + /// Creates an invalid response from a context `ctx` and a message `msg` (which can be empty). + pub fn format_invalid(ctx: &'static str, msg: &str) -> Self { + if msg.is_empty() { + Self::InvalidCandidate(ctx.to_string()) + } else { + Self::InvalidCandidate(format!("{}: {}", ctx, msg)) + } + } +} diff --git a/node/core/pvf/src/host.rs b/node/core/pvf/src/host.rs index 67f4a66e9748..bfc775a32dee 100644 --- a/node/core/pvf/src/host.rs +++ b/node/core/pvf/src/host.rs @@ -22,19 +22,16 @@ use crate::{ artifacts::{ArtifactId, ArtifactPathId, ArtifactState, Artifacts}, + error::PrepareError, execute::{self, PendingExecutionRequest}, metrics::Metrics, - prepare, Priority, ValidationError, LOG_TARGET, + prepare, PrepareResult, Priority, PvfPrepData, ValidationError, LOG_TARGET, }; use always_assert::never; use futures::{ channel::{mpsc, oneshot}, Future, FutureExt, SinkExt, StreamExt, }; -use polkadot_node_core_pvf_common::{ - error::{PrepareError, PrepareResult}, - pvf::PvfPrepData, -}; use polkadot_parachain::primitives::ValidationResult; use std::{ collections::HashMap, @@ -426,7 +423,7 @@ async fn handle_precheck_pvf( pvf: PvfPrepData, result_sender: PrepareResultSender, ) -> Result<(), Fatal> { - let artifact_id = ArtifactId::from_pvf_prep_data(&pvf); + let artifact_id = pvf.as_artifact_id(); if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { match state { @@ -470,7 +467,7 @@ async fn handle_execute_pvf( inputs: ExecutePvfInputs, ) -> Result<(), Fatal> { let ExecutePvfInputs { pvf, exec_timeout, params, priority, result_tx } = inputs; - let artifact_id = ArtifactId::from_pvf_prep_data(&pvf); + let artifact_id = pvf.as_artifact_id(); let executor_params = (*pvf.executor_params()).clone(); if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { @@ -593,7 +590,7 @@ async fn handle_heads_up( let now = SystemTime::now(); for active_pvf in active_pvfs { - let artifact_id = ArtifactId::from_pvf_prep_data(&active_pvf); + let artifact_id = active_pvf.as_artifact_id(); if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { match state { ArtifactState::Prepared { last_time_needed, .. } => { @@ -857,10 +854,9 @@ fn pulse_every(interval: std::time::Duration) -> impl futures::Stream #[cfg(test)] pub(crate) mod tests { use super::*; - use crate::InvalidCandidate; + use crate::{prepare::PrepareStats, InvalidCandidate, PrepareError}; use assert_matches::assert_matches; use futures::future::BoxFuture; - use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats}; const TEST_EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); pub(crate) const TEST_PREPARATION_TIMEOUT: Duration = Duration::from_secs(30); @@ -881,7 +877,7 @@ pub(crate) mod tests { /// Creates a new PVF which artifact id can be uniquely identified by the given number. fn artifact_id(descriminator: u32) -> ArtifactId { - ArtifactId::from_pvf_prep_data(&PvfPrepData::from_discriminator(descriminator)) + PvfPrepData::from_discriminator(descriminator).as_artifact_id() } fn artifact_path(descriminator: u32) -> PathBuf { diff --git a/node/core/pvf/src/lib.rs b/node/core/pvf/src/lib.rs index d8b801292ca8..9b302150fd36 100644 --- a/node/core/pvf/src/lib.rs +++ b/node/core/pvf/src/lib.rs @@ -95,31 +95,27 @@ mod host; mod metrics; mod prepare; mod priority; -mod worker_intf; +mod pvf; +mod worker_common; -#[doc(hidden)] -pub mod testing; - -// Used by `decl_puppet_worker_main!`. -#[doc(hidden)] -pub use sp_tracing; +pub use artifacts::CompiledArtifact; +pub use error::{ + InternalValidationError, InvalidCandidate, PrepareError, PrepareResult, ValidationError, +}; +pub use execute::{ExecuteHandshake, ExecuteResponse}; +#[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] +pub use prepare::MemoryAllocationStats; +pub use prepare::{MemoryStats, PrepareStats}; +pub use priority::Priority; +pub use pvf::PvfPrepData; -pub use error::{InvalidCandidate, ValidationError}; pub use host::{start, Config, ValidationHost}; pub use metrics::Metrics; -pub use priority::Priority; -pub use worker_intf::{framed_recv, framed_send, JOB_TIMEOUT_WALL_CLOCK_FACTOR}; - -// Re-export some common types. -pub use polkadot_node_core_pvf_common::{ - error::{InternalValidationError, PrepareError}, - prepare::PrepareStats, - pvf::PvfPrepData, -}; +pub use worker_common::{framed_recv, framed_send, JOB_TIMEOUT_WALL_CLOCK_FACTOR}; -// Re-export worker entrypoints. -pub use polkadot_node_core_pvf_execute_worker::worker_entrypoint as execute_worker_entrypoint; -pub use polkadot_node_core_pvf_prepare_worker::worker_entrypoint as prepare_worker_entrypoint; +const LOG_TARGET: &str = "parachain::pvf"; -/// The log target for this crate. -pub const LOG_TARGET: &str = "parachain::pvf"; +#[doc(hidden)] +pub mod testing { + pub use crate::worker_common::{spawn_with_program_path, SpawnErr}; +} diff --git a/node/core/pvf/src/metrics.rs b/node/core/pvf/src/metrics.rs index 62f8c6dc5157..12bcd9eadad3 100644 --- a/node/core/pvf/src/metrics.rs +++ b/node/core/pvf/src/metrics.rs @@ -16,7 +16,7 @@ //! Prometheus metrics related to the validation host. -use polkadot_node_core_pvf_common::prepare::MemoryStats; +use crate::prepare::MemoryStats; use polkadot_node_metrics::metrics::{self, prometheus}; /// Validation host metrics. diff --git a/node/core/pvf/src/prepare/mod.rs b/node/core/pvf/src/prepare/mod.rs index 580f67f73fa0..de40c48464c4 100644 --- a/node/core/pvf/src/prepare/mod.rs +++ b/node/core/pvf/src/prepare/mod.rs @@ -28,3 +28,36 @@ mod worker_intf; pub use pool::start as start_pool; pub use queue::{start as start_queue, FromQueue, ToQueue}; + +use parity_scale_codec::{Decode, Encode}; + +/// Preparation statistics, including the CPU time and memory taken. +#[derive(Debug, Clone, Default, Encode, Decode)] +pub struct PrepareStats { + /// The CPU time that elapsed for the preparation job. + pub cpu_time_elapsed: std::time::Duration, + /// The observed memory statistics for the preparation job. + pub memory_stats: MemoryStats, +} + +/// Helper struct to contain all the memory stats, including `MemoryAllocationStats` and, if +/// supported by the OS, `ru_maxrss`. +#[derive(Clone, Debug, Default, Encode, Decode)] +pub struct MemoryStats { + /// Memory stats from `tikv_jemalloc_ctl`. + #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] + pub memory_tracker_stats: Option, + /// `ru_maxrss` from `getrusage`. `None` if an error occurred. + #[cfg(target_os = "linux")] + pub max_rss: Option, +} + +/// Statistics of collected memory metrics. +#[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] +#[derive(Clone, Debug, Default, Encode, Decode)] +pub struct MemoryAllocationStats { + /// Total resident memory, in bytes. + pub resident: u64, + /// Total allocated memory, in bytes. + pub allocated: u64, +} diff --git a/node/core/pvf/src/prepare/pool.rs b/node/core/pvf/src/prepare/pool.rs index ae8ecff5285c..d151f097805e 100644 --- a/node/core/pvf/src/prepare/pool.rs +++ b/node/core/pvf/src/prepare/pool.rs @@ -16,18 +16,16 @@ use super::worker_intf::{self, Outcome}; use crate::{ + error::{PrepareError, PrepareResult}, metrics::Metrics, - worker_intf::{IdleWorker, WorkerHandle}, + pvf::PvfPrepData, + worker_common::{IdleWorker, WorkerHandle}, LOG_TARGET, }; use always_assert::never; use futures::{ channel::mpsc, future::BoxFuture, stream::FuturesUnordered, Future, FutureExt, StreamExt, }; -use polkadot_node_core_pvf_common::{ - error::{PrepareError, PrepareResult}, - pvf::PvfPrepData, -}; use slotmap::HopSlotMap; use std::{ fmt, diff --git a/node/core/pvf/src/prepare/queue.rs b/node/core/pvf/src/prepare/queue.rs index 5e19a4c7217a..f84d5ab0e56e 100644 --- a/node/core/pvf/src/prepare/queue.rs +++ b/node/core/pvf/src/prepare/queue.rs @@ -17,10 +17,11 @@ //! A queue that handles requests for PVF preparation. use super::pool::{self, Worker}; -use crate::{artifacts::ArtifactId, metrics::Metrics, Priority, LOG_TARGET}; +use crate::{ + artifacts::ArtifactId, metrics::Metrics, PrepareResult, Priority, PvfPrepData, LOG_TARGET, +}; use always_assert::{always, never}; use futures::{channel::mpsc, stream::StreamExt as _, Future, SinkExt}; -use polkadot_node_core_pvf_common::{error::PrepareResult, pvf::PvfPrepData}; use std::{ collections::{HashMap, VecDeque}, path::PathBuf, @@ -230,7 +231,7 @@ async fn handle_enqueue( ); queue.metrics.prepare_enqueued(); - let artifact_id = ArtifactId::from_pvf_prep_data(&pvf); + let artifact_id = pvf.as_artifact_id(); if never!( queue.artifact_id_to_job.contains_key(&artifact_id), "second Enqueue sent for a known artifact" @@ -338,7 +339,7 @@ async fn handle_worker_concluded( // this can't be None; // qed. let job_data = never_none!(queue.jobs.remove(job)); - let artifact_id = ArtifactId::from_pvf_prep_data(&job_data.pvf); + let artifact_id = job_data.pvf.as_artifact_id(); queue.artifact_id_to_job.remove(&artifact_id); @@ -424,7 +425,7 @@ async fn spawn_extra_worker(queue: &mut Queue, critical: bool) -> Result<(), Fat async fn assign(queue: &mut Queue, worker: Worker, job: Job) -> Result<(), Fatal> { let job_data = &mut queue.jobs[job]; - let artifact_id = ArtifactId::from_pvf_prep_data(&job_data.pvf); + let artifact_id = job_data.pvf.as_artifact_id(); let artifact_path = artifact_id.path(&queue.cache_path); job_data.worker = Some(worker); @@ -487,10 +488,11 @@ pub fn start( #[cfg(test)] mod tests { use super::*; - use crate::host::tests::TEST_PREPARATION_TIMEOUT; + use crate::{ + error::PrepareError, host::tests::TEST_PREPARATION_TIMEOUT, prepare::PrepareStats, + }; use assert_matches::assert_matches; use futures::{future::BoxFuture, FutureExt}; - use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats}; use slotmap::SlotMap; use std::task::Poll; @@ -614,10 +616,7 @@ mod tests { result: Ok(PrepareStats::default()), }); - assert_eq!( - test.poll_and_recv_from_queue().await.artifact_id, - ArtifactId::from_pvf_prep_data(&pvf(1)) - ); + assert_eq!(test.poll_and_recv_from_queue().await.artifact_id, pvf(1).as_artifact_id()); } #[tokio::test] @@ -736,10 +735,7 @@ mod tests { // Since there is still work, the queue requested one extra worker to spawn to handle the // remaining enqueued work items. assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - assert_eq!( - test.poll_and_recv_from_queue().await.artifact_id, - ArtifactId::from_pvf_prep_data(&pvf(1)) - ); + assert_eq!(test.poll_and_recv_from_queue().await.artifact_id, pvf(1).as_artifact_id()); } #[tokio::test] diff --git a/node/core/pvf/src/prepare/worker_intf.rs b/node/core/pvf/src/prepare/worker_intf.rs index 47522d3f0856..daf94aadc672 100644 --- a/node/core/pvf/src/prepare/worker_intf.rs +++ b/node/core/pvf/src/prepare/worker_intf.rs @@ -17,20 +17,17 @@ //! Host interface to the prepare worker. use crate::{ + error::{PrepareError, PrepareResult}, metrics::Metrics, - worker_intf::{ - path_to_bytes, spawn_with_program_path, tmpfile_in, IdleWorker, SpawnErr, WorkerHandle, - JOB_TIMEOUT_WALL_CLOCK_FACTOR, + prepare::PrepareStats, + pvf::PvfPrepData, + worker_common::{ + framed_recv, framed_send, path_to_bytes, spawn_with_program_path, tmpfile_in, IdleWorker, + SpawnErr, WorkerHandle, JOB_TIMEOUT_WALL_CLOCK_FACTOR, }, LOG_TARGET, }; use parity_scale_codec::{Decode, Encode}; -use polkadot_node_core_pvf_common::{ - error::{PrepareError, PrepareResult}, - framed_recv, framed_send, - prepare::PrepareStats, - pvf::PvfPrepData, -}; use sp_core::hexdisplay::HexDisplay; use std::{ diff --git a/node/core/pvf/common/src/pvf.rs b/node/core/pvf/src/pvf.rs similarity index 81% rename from node/core/pvf/common/src/pvf.rs rename to node/core/pvf/src/pvf.rs index 1661f324083a..c134cacb4acf 100644 --- a/node/core/pvf/common/src/pvf.rs +++ b/node/core/pvf/src/pvf.rs @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +use crate::artifacts::ArtifactId; use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::ValidationCodeHash; use polkadot_primitives::ExecutorParams; @@ -25,6 +26,9 @@ use std::{ time::Duration, }; +#[cfg(test)] +use crate::host::tests::TEST_PREPARATION_TIMEOUT; + /// A struct that carries the exhaustive set of data to prepare an artifact out of plain /// Wasm binary /// @@ -54,8 +58,13 @@ impl PvfPrepData { Self { code, code_hash, executor_params, prep_timeout } } + /// Returns artifact ID that corresponds to the PVF with given executor params + pub(crate) fn as_artifact_id(&self) -> ArtifactId { + ArtifactId::new(self.code_hash, self.executor_params.hash()) + } + /// Returns validation code hash for the PVF - pub fn code_hash(&self) -> ValidationCodeHash { + pub(crate) fn code_hash(&self) -> ValidationCodeHash { self.code_hash } @@ -74,17 +83,16 @@ impl PvfPrepData { self.prep_timeout } - /// Creates a structure for tests. - #[doc(hidden)] - pub fn from_discriminator_and_timeout(num: u32, timeout: Duration) -> Self { + /// Creates a structure for tests + #[cfg(test)] + pub(crate) fn from_discriminator_and_timeout(num: u32, timeout: Duration) -> Self { let descriminator_buf = num.to_le_bytes().to_vec(); Self::from_code(descriminator_buf, ExecutorParams::default(), timeout) } - /// Creates a structure for tests. - #[doc(hidden)] - pub fn from_discriminator(num: u32) -> Self { - Self::from_discriminator_and_timeout(num, crate::tests::TEST_PREPARATION_TIMEOUT) + #[cfg(test)] + pub(crate) fn from_discriminator(num: u32) -> Self { + Self::from_discriminator_and_timeout(num, TEST_PREPARATION_TIMEOUT) } } diff --git a/node/core/pvf/src/worker_intf.rs b/node/core/pvf/src/worker_common.rs similarity index 100% rename from node/core/pvf/src/worker_intf.rs rename to node/core/pvf/src/worker_common.rs diff --git a/node/core/pvf/execute-worker/Cargo.toml b/node/core/pvf/worker/Cargo.toml similarity index 67% rename from node/core/pvf/execute-worker/Cargo.toml rename to node/core/pvf/worker/Cargo.toml index c360cee8bf5d..53d548dbac6f 100644 --- a/node/core/pvf/execute-worker/Cargo.toml +++ b/node/core/pvf/worker/Cargo.toml @@ -1,20 +1,27 @@ [package] -name = "polkadot-node-core-pvf-execute-worker" +name = "polkadot-node-core-pvf-worker" version.workspace = true authors.workspace = true edition.workspace = true +[[bin]] +name = "puppet_worker" +path = "bin/puppet_worker.rs" + [dependencies] +assert_matches = "1.4.0" cpu-time = "1.0.0" futures = "0.3.21" gum = { package = "tracing-gum", path = "../../../gum" } +libc = "0.2.139" rayon = "1.5.1" +tempfile = "3.3.0" tikv-jemalloc-ctl = { version = "0.5.0", optional = true } -tokio = { version = "1.24.2", features = ["fs", "process"] } +tokio = "1.24.2" parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive"] } -polkadot-node-core-pvf-common = { path = "../common" } +polkadot-node-core-pvf = { path = ".." } polkadot-parachain = { path = "../../../../parachain" } polkadot-primitives = { path = "../../../../primitives" } @@ -30,5 +37,12 @@ sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master [target.'cfg(target_os = "linux")'.dependencies] tikv-jemalloc-ctl = "0.5.0" +[build-dependencies] +substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[dev-dependencies] +adder = { package = "test-parachain-adder", path = "../../../../parachain/test-parachains/adder" } +halt = { package = "test-parachain-halt", path = "../../../../parachain/test-parachains/halt" } + [features] -builder = [] +jemalloc-allocator = ["dep:tikv-jemalloc-ctl"] diff --git a/node/core/pvf/bin/puppet_worker.rs b/node/core/pvf/worker/bin/puppet_worker.rs similarity index 92% rename from node/core/pvf/bin/puppet_worker.rs rename to node/core/pvf/worker/bin/puppet_worker.rs index 7f93519d8454..ddd81971292b 100644 --- a/node/core/pvf/bin/puppet_worker.rs +++ b/node/core/pvf/worker/bin/puppet_worker.rs @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -polkadot_node_core_pvf::decl_puppet_worker_main!(); +polkadot_node_core_pvf_worker::decl_puppet_worker_main!(); diff --git a/node/core/pvf/common/build.rs b/node/core/pvf/worker/build.rs similarity index 100% rename from node/core/pvf/common/build.rs rename to node/core/pvf/worker/build.rs diff --git a/node/core/pvf/common/src/worker.rs b/node/core/pvf/worker/src/common.rs similarity index 90% rename from node/core/pvf/common/src/worker.rs rename to node/core/pvf/worker/src/common.rs index debe18985b37..00289737a5c8 100644 --- a/node/core/pvf/common/src/worker.rs +++ b/node/core/pvf/worker/src/common.rs @@ -14,8 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Functionality common to both prepare and execute workers. - use crate::LOG_TARGET; use cpu_time::ProcessTime; use futures::never::Never; @@ -27,42 +25,6 @@ use std::{ }; use tokio::{io, net::UnixStream, runtime::Runtime}; -/// Use this macro to declare a `fn main() {}` that will create an executable that can be used for -/// spawning the desired worker. -#[macro_export] -macro_rules! decl_worker_main { - ($expected_command:expr, $entrypoint:expr) => { - fn main() { - ::sp_tracing::try_init_simple(); - - let args = std::env::args().collect::>(); - if args.len() < 3 { - panic!("wrong number of arguments"); - } - - let mut version = None; - let mut socket_path: &str = ""; - - for i in 2..args.len() { - match args[i].as_ref() { - "--socket-path" => socket_path = args[i + 1].as_str(), - "--node-version" => version = Some(args[i + 1].as_str()), - _ => (), - } - } - - let subcommand = &args[1]; - if subcommand != $expected_command { - panic!( - "trying to run {} binary with the {} subcommand", - $expected_command, subcommand - ) - } - $entrypoint(&socket_path, version); - } - }; -} - /// Some allowed overhead that we account for in the "CPU time monitor" thread's sleeps, on the /// child process. pub const JOB_TIMEOUT_OVERHEAD: Duration = Duration::from_millis(50); diff --git a/node/core/pvf/execute-worker/src/lib.rs b/node/core/pvf/worker/src/execute.rs similarity index 93% rename from node/core/pvf/execute-worker/src/lib.rs rename to node/core/pvf/worker/src/execute.rs index 0ac39aafb0c9..c5b8ddc9dd18 100644 --- a/node/core/pvf/execute-worker/src/lib.rs +++ b/node/core/pvf/worker/src/execute.rs @@ -14,26 +14,20 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -mod executor_intf; - -pub use executor_intf::Executor; - -// NOTE: Initializing logging in e.g. tests will not have an effect in the workers, as they are -// separate spawned processes. Run with e.g. `RUST_LOG=parachain::pvf-execute-worker=trace`. -const LOG_TARGET: &str = "parachain::pvf-execute-worker"; - -use crate::executor_intf::EXECUTE_THREAD_STACK_SIZE; -use cpu_time::ProcessTime; -use parity_scale_codec::{Decode, Encode}; -use polkadot_node_core_pvf_common::{ - error::InternalValidationError, - execute::{Handshake, Response}, - framed_recv, framed_send, - worker::{ +use crate::{ + common::{ bytes_to_path, cpu_time_monitor_loop, stringify_panic_payload, thread::{self, WaitOutcome}, worker_event_loop, }, + executor_intf::{Executor, EXECUTE_THREAD_STACK_SIZE}, + LOG_TARGET, +}; +use cpu_time::ProcessTime; +use parity_scale_codec::{Decode, Encode}; +use polkadot_node_core_pvf::{ + framed_recv, framed_send, ExecuteHandshake as Handshake, ExecuteResponse as Response, + InternalValidationError, }; use polkadot_parachain::primitives::ValidationResult; use std::{ diff --git a/node/core/pvf/execute-worker/src/executor_intf.rs b/node/core/pvf/worker/src/executor_intf.rs similarity index 65% rename from node/core/pvf/execute-worker/src/executor_intf.rs rename to node/core/pvf/worker/src/executor_intf.rs index 98424a3dcd1d..ff286dd74d64 100644 --- a/node/core/pvf/execute-worker/src/executor_intf.rs +++ b/node/core/pvf/worker/src/executor_intf.rs @@ -16,16 +16,13 @@ //! Interface to the Substrate Executor -use polkadot_node_core_pvf_common::executor_intf::{ - params_to_wasmtime_semantics, DEFAULT_CONFIG, NATIVE_STACK_MAX, -}; -use polkadot_primitives::ExecutorParams; +use polkadot_primitives::{ExecutorParam, ExecutorParams}; use sc_executor_common::{ error::WasmError, runtime_blob::RuntimeBlob, - wasm_runtime::{InvokeMethod, WasmModule as _}, + wasm_runtime::{HeapAllocStrategy, InvokeMethod, WasmModule as _}, }; -use sc_executor_wasmtime::{Config, WasmtimeRuntime}; +use sc_executor_wasmtime::{Config, DeterministicStackLimit, Semantics, WasmtimeRuntime}; use sp_core::storage::{ChildInfo, TrackedStorageKey}; use sp_externalities::MultiRemovalResults; use std::any::{Any, TypeId}; @@ -66,6 +63,119 @@ use std::any::{Any, TypeId}; /// The stack size for the execute thread. pub const EXECUTE_THREAD_STACK_SIZE: usize = 2 * 1024 * 1024 + NATIVE_STACK_MAX as usize; +// Memory configuration +// +// When Substrate Runtime is instantiated, a number of WASM pages are allocated for the Substrate +// Runtime instance's linear memory. The exact number of pages is a sum of whatever the WASM blob +// itself requests (by default at least enough to hold the data section as well as have some space +// left for the stack; this is, of course, overridable at link time when compiling the runtime) +// plus the number of pages specified in the `extra_heap_pages` passed to the executor. +// +// By default, rustc (or `lld` specifically) should allocate 1 MiB for the shadow stack, or 16 pages. +// The data section for runtimes are typically rather small and can fit in a single digit number of +// WASM pages, so let's say an extra 16 pages. Thus let's assume that 32 pages or 2 MiB are used for +// these needs by default. +const DEFAULT_HEAP_PAGES_ESTIMATE: u32 = 32; +const EXTRA_HEAP_PAGES: u32 = 2048; + +/// The number of bytes devoted for the stack during wasm execution of a PVF. +const NATIVE_STACK_MAX: u32 = 256 * 1024 * 1024; + +// VALUES OF THE DEFAULT CONFIGURATION SHOULD NEVER BE CHANGED +// They are used as base values for the execution environment parametrization. +// To overwrite them, add new ones to `EXECUTOR_PARAMS` in the `session_info` pallet and perform +// a runtime upgrade to make them active. +const DEFAULT_CONFIG: Config = Config { + allow_missing_func_imports: true, + cache_path: None, + semantics: Semantics { + heap_alloc_strategy: sc_executor_common::wasm_runtime::HeapAllocStrategy::Dynamic { + maximum_pages: Some(DEFAULT_HEAP_PAGES_ESTIMATE + EXTRA_HEAP_PAGES), + }, + + instantiation_strategy: + sc_executor_wasmtime::InstantiationStrategy::RecreateInstanceCopyOnWrite, + + // Enable deterministic stack limit to pin down the exact number of items the wasmtime stack + // can contain before it traps with stack overflow. + // + // Here is how the values below were chosen. + // + // At the moment of writing, the default native stack size limit is 1 MiB. Assuming a logical item + // (see the docs about the field and the instrumentation algorithm) is 8 bytes, 1 MiB can + // fit 2x 65536 logical items. + // + // Since reaching the native stack limit is undesirable, we halve the logical item limit and + // also increase the native 256x. This hopefully should preclude wasm code from reaching + // the stack limit set by the wasmtime. + deterministic_stack_limit: Some(DeterministicStackLimit { + logical_max: 65536, + native_stack_max: NATIVE_STACK_MAX, + }), + canonicalize_nans: true, + // Rationale for turning the multi-threaded compilation off is to make the preparation time + // easily reproducible and as deterministic as possible. + // + // Currently the prepare queue doesn't distinguish between precheck and prepare requests. + // On the one hand, it simplifies the code, on the other, however, slows down compile times + // for execute requests. This behavior may change in future. + parallel_compilation: false, + + // WASM extensions. Only those that are meaningful to us may be controlled here. By default, + // we're using WASM MVP, which means all the extensions are disabled. Nevertheless, some + // extensions (e.g., sign extension ops) are enabled by Wasmtime and cannot be disabled. + wasm_reference_types: false, + wasm_simd: false, + wasm_bulk_memory: false, + wasm_multi_value: false, + }, +}; + +/// Runs the prevalidation on the given code. Returns a [`RuntimeBlob`] if it succeeds. +pub fn prevalidate(code: &[u8]) -> Result { + let blob = RuntimeBlob::new(code)?; + // It's assumed this function will take care of any prevalidation logic + // that needs to be done. + // + // Do nothing for now. + Ok(blob) +} + +/// Runs preparation on the given runtime blob. If successful, it returns a serialized compiled +/// artifact which can then be used to pass into `Executor::execute` after writing it to the disk. +pub fn prepare( + blob: RuntimeBlob, + executor_params: &ExecutorParams, +) -> Result, sc_executor_common::error::WasmError> { + let semantics = params_to_wasmtime_semantics(executor_params) + .map_err(|e| sc_executor_common::error::WasmError::Other(e))?; + sc_executor_wasmtime::prepare_runtime_artifact(blob, &semantics) +} + +fn params_to_wasmtime_semantics(par: &ExecutorParams) -> Result { + let mut sem = DEFAULT_CONFIG.semantics.clone(); + let mut stack_limit = if let Some(stack_limit) = sem.deterministic_stack_limit.clone() { + stack_limit + } else { + return Err("No default stack limit set".to_owned()) + }; + + for p in par.iter() { + match p { + ExecutorParam::MaxMemoryPages(max_pages) => + sem.heap_alloc_strategy = + HeapAllocStrategy::Dynamic { maximum_pages: Some(*max_pages) }, + ExecutorParam::StackLogicalMax(slm) => stack_limit.logical_max = *slm, + ExecutorParam::StackNativeMax(snm) => stack_limit.native_stack_max = *snm, + ExecutorParam::WasmExtBulkMemory => sem.wasm_bulk_memory = true, + ExecutorParam::PrecheckingMaxMemory(_) => (), // TODO: Not implemented yet + ExecutorParam::PvfPrepTimeout(_, _) | ExecutorParam::PvfExecTimeout(_, _) => (), // Not used here + } + } + sem.deterministic_stack_limit = Some(stack_limit); + Ok(sem) +} + #[derive(Clone)] pub struct Executor { config: Config, diff --git a/node/core/pvf/worker/src/lib.rs b/node/core/pvf/worker/src/lib.rs new file mode 100644 index 000000000000..456362cf8f57 --- /dev/null +++ b/node/core/pvf/worker/src/lib.rs @@ -0,0 +1,73 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +mod common; +mod execute; +mod executor_intf; +mod memory_stats; +mod prepare; + +#[doc(hidden)] +pub mod testing; + +#[doc(hidden)] +pub use sp_tracing; + +pub use execute::worker_entrypoint as execute_worker_entrypoint; +pub use prepare::worker_entrypoint as prepare_worker_entrypoint; + +pub use executor_intf::{prepare, prevalidate}; + +// NOTE: Initializing logging in e.g. tests will not have an effect in the workers, as they are +// separate spawned processes. Run with e.g. `RUST_LOG=parachain::pvf-worker=trace`. +const LOG_TARGET: &str = "parachain::pvf-worker"; + +/// Use this macro to declare a `fn main() {}` that will create an executable that can be used for +/// spawning the desired worker. +#[macro_export(local_inner_macros)] +macro_rules! decl_worker_main { + ($command:tt) => { + fn main() { + $crate::sp_tracing::try_init_simple(); + + let args = std::env::args().collect::>(); + + let mut version = None; + let mut socket_path: &str = ""; + + for i in 1..args.len() { + match args[i].as_ref() { + "--socket-path" => socket_path = args[i + 1].as_str(), + "--node-version" => version = Some(args[i + 1].as_str()), + _ => (), + } + } + + decl_worker_main_command!($command, socket_path, version) + } + }; +} + +#[macro_export] +#[doc(hidden)] +macro_rules! decl_worker_main_command { + (prepare, $socket_path:expr, $version: expr) => { + $crate::prepare_worker_entrypoint(&$socket_path, $version) + }; + (execute, $socket_path:expr, $version: expr) => { + $crate::execute_worker_entrypoint(&$socket_path, $version) + }; +} diff --git a/node/core/pvf/prepare-worker/src/memory_stats.rs b/node/core/pvf/worker/src/memory_stats.rs similarity index 97% rename from node/core/pvf/prepare-worker/src/memory_stats.rs rename to node/core/pvf/worker/src/memory_stats.rs index e6dc8572c4a3..907f793d87af 100644 --- a/node/core/pvf/prepare-worker/src/memory_stats.rs +++ b/node/core/pvf/worker/src/memory_stats.rs @@ -33,11 +33,11 @@ /// NOTE: Requires jemalloc enabled. #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] pub mod memory_tracker { - use crate::LOG_TARGET; - use polkadot_node_core_pvf_common::{ - prepare::MemoryAllocationStats, - worker::{stringify_panic_payload, thread}, + use crate::{ + common::{stringify_panic_payload, thread}, + LOG_TARGET, }; + use polkadot_node_core_pvf::MemoryAllocationStats; use std::{thread::JoinHandle, time::Duration}; use tikv_jemalloc_ctl::{epoch, stats, Error}; diff --git a/node/core/pvf/prepare-worker/src/lib.rs b/node/core/pvf/worker/src/prepare.rs similarity index 90% rename from node/core/pvf/prepare-worker/src/lib.rs rename to node/core/pvf/worker/src/prepare.rs index 8f36ef397cfb..fe9c1a85545a 100644 --- a/node/core/pvf/prepare-worker/src/lib.rs +++ b/node/core/pvf/worker/src/prepare.rs @@ -14,31 +14,23 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -mod executor_intf; -mod memory_stats; - -pub use executor_intf::{prepare, prevalidate}; - -// NOTE: Initializing logging in e.g. tests will not have an effect in the workers, as they are -// separate spawned processes. Run with e.g. `RUST_LOG=parachain::pvf-prepare-worker=trace`. -const LOG_TARGET: &str = "parachain::pvf-prepare-worker"; - #[cfg(target_os = "linux")] use crate::memory_stats::max_rss_stat::{extract_max_rss_stat, get_max_rss_thread}; #[cfg(any(target_os = "linux", feature = "jemalloc-allocator"))] use crate::memory_stats::memory_tracker::{get_memory_tracker_loop_stats, memory_tracker_loop}; -use parity_scale_codec::{Decode, Encode}; -use polkadot_node_core_pvf_common::{ - error::{PrepareError, PrepareResult}, - framed_recv, framed_send, - prepare::{MemoryStats, PrepareStats}, - pvf::PvfPrepData, - worker::{ +use crate::{ + common::{ bytes_to_path, cpu_time_monitor_loop, stringify_panic_payload, thread::{self, WaitOutcome}, worker_event_loop, }, - ProcessTime, + prepare, prevalidate, LOG_TARGET, +}; +use cpu_time::ProcessTime; +use parity_scale_codec::{Decode, Encode}; +use polkadot_node_core_pvf::{ + framed_recv, framed_send, CompiledArtifact, MemoryStats, PrepareError, PrepareResult, + PrepareStats, PvfPrepData, }; use std::{ path::PathBuf, @@ -47,22 +39,6 @@ use std::{ }; use tokio::{io, net::UnixStream}; -/// Contains the bytes for a successfully compiled artifact. -pub struct CompiledArtifact(Vec); - -impl CompiledArtifact { - /// Creates a `CompiledArtifact`. - pub fn new(code: Vec) -> Self { - Self(code) - } -} - -impl AsRef<[u8]> for CompiledArtifact { - fn as_ref(&self) -> &[u8] { - self.0.as_slice() - } -} - async fn recv_request(stream: &mut UnixStream) -> io::Result<(PvfPrepData, PathBuf)> { let pvf = framed_recv(stream).await?; let pvf = PvfPrepData::decode(&mut &pvf[..]).map_err(|e| { diff --git a/node/core/pvf/src/testing.rs b/node/core/pvf/worker/src/testing.rs similarity index 93% rename from node/core/pvf/src/testing.rs rename to node/core/pvf/worker/src/testing.rs index cc07d7aeef02..7497d4aed31c 100644 --- a/node/core/pvf/src/testing.rs +++ b/node/core/pvf/worker/src/testing.rs @@ -19,9 +19,6 @@ //! N.B. This is not guarded with some feature flag. Overexposing items here may affect the final //! artifact even for production builds. -#[doc(hidden)] -pub use crate::worker_intf::{spawn_with_program_path, SpawnErr}; - use polkadot_primitives::ExecutorParams; /// A function that emulates the stitches together behaviors of the preparation and the execution @@ -30,8 +27,7 @@ pub fn validate_candidate( code: &[u8], params: &[u8], ) -> Result, Box> { - use polkadot_node_core_pvf_execute_worker::Executor; - use polkadot_node_core_pvf_prepare_worker::{prepare, prevalidate}; + use crate::executor_intf::{prepare, prevalidate, Executor}; let code = sp_maybe_compressed_blob::decompress(code, 10 * 1024 * 1024) .expect("Decompressing code failed"); diff --git a/node/core/pvf/tests/it/adder.rs b/node/core/pvf/worker/tests/it/adder.rs similarity index 100% rename from node/core/pvf/tests/it/adder.rs rename to node/core/pvf/worker/tests/it/adder.rs diff --git a/node/core/pvf/tests/it/main.rs b/node/core/pvf/worker/tests/it/main.rs similarity index 100% rename from node/core/pvf/tests/it/main.rs rename to node/core/pvf/worker/tests/it/main.rs diff --git a/node/core/pvf/tests/it/worker_common.rs b/node/core/pvf/worker/tests/it/worker_common.rs similarity index 100% rename from node/core/pvf/tests/it/worker_common.rs rename to node/core/pvf/worker/tests/it/worker_common.rs diff --git a/node/core/runtime-api/src/cache.rs b/node/core/runtime-api/src/cache.rs index cd8f542496ce..00b2068ad330 100644 --- a/node/core/runtime-api/src/cache.rs +++ b/node/core/runtime-api/src/cache.rs @@ -64,14 +64,7 @@ pub(crate) struct RequestResultCache { LruCache<(Hash, ParaId, OccupiedCoreAssumption), Option>, version: LruCache, disputes: LruCache)>>, - unapplied_slashes: LruCache< - Hash, - Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, - >, - key_ownership_proof: LruCache< - (Hash, ValidatorId), - Option, - >, + staging_para_backing_state: LruCache<(Hash, ParaId), Option>, staging_async_backing_params: LruCache, } @@ -101,8 +94,7 @@ impl Default for RequestResultCache { validation_code_hash: LruCache::new(DEFAULT_CACHE_CAP), version: LruCache::new(DEFAULT_CACHE_CAP), disputes: LruCache::new(DEFAULT_CACHE_CAP), - unapplied_slashes: LruCache::new(DEFAULT_CACHE_CAP), - key_ownership_proof: LruCache::new(DEFAULT_CACHE_CAP), + staging_para_backing_state: LruCache::new(DEFAULT_CACHE_CAP), staging_async_backing_params: LruCache::new(DEFAULT_CACHE_CAP), } @@ -401,49 +393,6 @@ impl RequestResultCache { self.disputes.put(relay_parent, value); } - pub(crate) fn unapplied_slashes( - &mut self, - relay_parent: &Hash, - ) -> Option<&Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>> - { - self.unapplied_slashes.get(relay_parent) - } - - pub(crate) fn cache_unapplied_slashes( - &mut self, - relay_parent: Hash, - value: Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, - ) { - self.unapplied_slashes.put(relay_parent, value); - } - - pub(crate) fn key_ownership_proof( - &mut self, - key: (Hash, ValidatorId), - ) -> Option<&Option> { - self.key_ownership_proof.get(&key) - } - - pub(crate) fn cache_key_ownership_proof( - &mut self, - key: (Hash, ValidatorId), - value: Option, - ) { - self.key_ownership_proof.put(key, value); - } - - // This request is never cached, hence always returns `None`. - pub(crate) fn submit_report_dispute_lost( - &mut self, - _key: ( - Hash, - vstaging_primitives::slashing::DisputeProof, - vstaging_primitives::slashing::OpaqueKeyOwnershipProof, - ), - ) -> Option<&Option<()>> { - None - } - pub(crate) fn staging_para_backing_state( &mut self, key: (Hash, ParaId), @@ -510,22 +459,6 @@ pub(crate) enum RequestResult { ValidationCodeHash(Hash, ParaId, OccupiedCoreAssumption, Option), Version(Hash, u32), Disputes(Hash, Vec<(SessionIndex, CandidateHash, DisputeState)>), - UnappliedSlashes( - Hash, - Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, - ), - KeyOwnershipProof( - Hash, - ValidatorId, - Option, - ), - // This is a request with side-effects. - SubmitReportDisputeLost( - Hash, - vstaging_primitives::slashing::DisputeProof, - vstaging_primitives::slashing::OpaqueKeyOwnershipProof, - Option<()>, - ), StagingParaBackingState(Hash, ParaId, Option), StagingAsyncBackingParams(Hash, vstaging_primitives::AsyncBackingParams), diff --git a/node/core/runtime-api/src/lib.rs b/node/core/runtime-api/src/lib.rs index 512076bd223f..d835ceb53fd3 100644 --- a/node/core/runtime-api/src/lib.rs +++ b/node/core/runtime-api/src/lib.rs @@ -157,12 +157,7 @@ where self.requests_cache.cache_version(relay_parent, version), Disputes(relay_parent, disputes) => self.requests_cache.cache_disputes(relay_parent, disputes), - UnappliedSlashes(relay_parent, unapplied_slashes) => - self.requests_cache.cache_unapplied_slashes(relay_parent, unapplied_slashes), - KeyOwnershipProof(relay_parent, validator_id, key_ownership_proof) => self - .requests_cache - .cache_key_ownership_proof((relay_parent, validator_id), key_ownership_proof), - SubmitReportDisputeLost(_, _, _, _) => {}, + StagingParaBackingState(relay_parent, para_id, constraints) => self .requests_cache .cache_staging_para_backing_state((relay_parent, para_id), constraints), @@ -282,17 +277,6 @@ where .map(|sender| Request::ValidationCodeHash(para, assumption, sender)), Request::Disputes(sender) => query!(disputes(), sender).map(|sender| Request::Disputes(sender)), - Request::UnappliedSlashes(sender) => - query!(unapplied_slashes(), sender).map(|sender| Request::UnappliedSlashes(sender)), - Request::KeyOwnershipProof(validator_id, sender) => - query!(key_ownership_proof(validator_id), sender) - .map(|sender| Request::KeyOwnershipProof(validator_id, sender)), - Request::SubmitReportDisputeLost(dispute_proof, key_ownership_proof, sender) => - query!(submit_report_dispute_lost(dispute_proof, key_ownership_proof), sender).map( - |sender| { - Request::SubmitReportDisputeLost(dispute_proof, key_ownership_proof, sender) - }, - ), Request::StagingParaBackingState(para, sender) => query!(staging_para_backing_state(para), sender) .map(|sender| Request::StagingParaBackingState(para, sender)), @@ -447,38 +431,33 @@ where Request::Authorities(sender) => query!(Authorities, authorities(), ver = 1, sender), Request::Validators(sender) => query!(Validators, validators(), ver = 1, sender), - Request::ValidatorGroups(sender) => { - query!(ValidatorGroups, validator_groups(), ver = 1, sender) - }, - Request::AvailabilityCores(sender) => { - query!(AvailabilityCores, availability_cores(), ver = 1, sender) - }, + Request::ValidatorGroups(sender) => + query!(ValidatorGroups, validator_groups(), ver = 1, sender), + Request::AvailabilityCores(sender) => + query!(AvailabilityCores, availability_cores(), ver = 1, sender), Request::PersistedValidationData(para, assumption, sender) => query!( PersistedValidationData, persisted_validation_data(para, assumption), ver = 1, sender ), - Request::AssumedValidationData(para, expected_persisted_validation_data_hash, sender) => { + Request::AssumedValidationData(para, expected_persisted_validation_data_hash, sender) => query!( AssumedValidationData, assumed_validation_data(para, expected_persisted_validation_data_hash), ver = 1, sender - ) - }, + ), Request::CheckValidationOutputs(para, commitments, sender) => query!( CheckValidationOutputs, check_validation_outputs(para, commitments), ver = 1, sender ), - Request::SessionIndexForChild(sender) => { - query!(SessionIndexForChild, session_index_for_child(), ver = 1, sender) - }, - Request::ValidationCode(para, assumption, sender) => { - query!(ValidationCode, validation_code(para, assumption), ver = 1, sender) - }, + Request::SessionIndexForChild(sender) => + query!(SessionIndexForChild, session_index_for_child(), ver = 1, sender), + Request::ValidationCode(para, assumption, sender) => + query!(ValidationCode, validation_code(para, assumption), ver = 1, sender), Request::ValidationCodeByHash(validation_code_hash, sender) => query!( ValidationCodeByHash, validation_code_by_hash(validation_code_hash), @@ -491,12 +470,10 @@ where ver = 1, sender ), - Request::CandidateEvents(sender) => { - query!(CandidateEvents, candidate_events(), ver = 1, sender) - }, - Request::SessionInfo(index, sender) => { - query!(SessionInfo, session_info(index), ver = 2, sender) - }, + Request::CandidateEvents(sender) => + query!(CandidateEvents, candidate_events(), ver = 1, sender), + Request::SessionInfo(index, sender) => + query!(SessionInfo, session_info(index), ver = 2, sender), Request::SessionExecutorParams(session_index, sender) => query!( SessionExecutorParams, session_executor_params(session_index), @@ -504,15 +481,12 @@ where sender ), Request::DmqContents(id, sender) => query!(DmqContents, dmq_contents(id), ver = 1, sender), - Request::InboundHrmpChannelsContents(id, sender) => { - query!(InboundHrmpChannelsContents, inbound_hrmp_channels_contents(id), ver = 1, sender) - }, - Request::CurrentBabeEpoch(sender) => { - query!(CurrentBabeEpoch, current_epoch(), ver = 1, sender) - }, - Request::FetchOnChainVotes(sender) => { - query!(FetchOnChainVotes, on_chain_votes(), ver = 1, sender) - }, + Request::InboundHrmpChannelsContents(id, sender) => + query!(InboundHrmpChannelsContents, inbound_hrmp_channels_contents(id), ver = 1, sender), + Request::CurrentBabeEpoch(sender) => + query!(CurrentBabeEpoch, current_epoch(), ver = 1, sender), + Request::FetchOnChainVotes(sender) => + query!(FetchOnChainVotes, on_chain_votes(), ver = 1, sender), Request::SubmitPvfCheckStatement(stmt, signature, sender) => { query!( SubmitPvfCheckStatement, @@ -524,30 +498,10 @@ where Request::PvfsRequirePrecheck(sender) => { query!(PvfsRequirePrecheck, pvfs_require_precheck(), ver = 2, sender) }, - Request::ValidationCodeHash(para, assumption, sender) => { - query!(ValidationCodeHash, validation_code_hash(para, assumption), ver = 2, sender) - }, - Request::Disputes(sender) => { - query!(Disputes, disputes(), ver = Request::DISPUTES_RUNTIME_REQUIREMENT, sender) - }, - Request::UnappliedSlashes(sender) => query!( - UnappliedSlashes, - unapplied_slashes(), - ver = Request::UNAPPLIED_SLASHES_RUNTIME_REQUIREMENT, - sender - ), - Request::KeyOwnershipProof(validator_id, sender) => query!( - KeyOwnershipProof, - key_ownership_proof(validator_id), - ver = Request::KEY_OWNERSHIP_PROOF_RUNTIME_REQUIREMENT, - sender - ), - Request::SubmitReportDisputeLost(dispute_proof, key_ownership_proof, sender) => query!( - SubmitReportDisputeLost, - submit_report_dispute_lost(dispute_proof, key_ownership_proof), - ver = Request::SUBMIT_REPORT_DISPUTE_LOST_RUNTIME_REQUIREMENT, - sender - ), + Request::ValidationCodeHash(para, assumption, sender) => + query!(ValidationCodeHash, validation_code_hash(para, assumption), ver = 2, sender), + Request::Disputes(sender) => + query!(Disputes, disputes(), ver = Request::DISPUTES_RUNTIME_REQUIREMENT, sender), Request::StagingParaBackingState(para, sender) => { query!( StagingParaBackingState, diff --git a/node/gum/README.md b/node/gum/README.md index 739ce3066ecb..9d2cc3168cdd 100644 --- a/node/gum/README.md +++ b/node/gum/README.md @@ -3,10 +3,6 @@ "gum" to make `tracing::{warn,info,..}` and `mick-jaeger` stick together, to be cross referenced in grafana with zero additional loc in the source code. -## Usage - -See the crate docs (e.g. run `cargo doc --open`) for usage information! - ## Architecture Decision Record (ADR) ### Context diff --git a/node/gum/proc-macro/Cargo.toml b/node/gum/proc-macro/Cargo.toml index 9e60535704d3..3fac1a7b928f 100644 --- a/node/gum/proc-macro/Cargo.toml +++ b/node/gum/proc-macro/Cargo.toml @@ -13,7 +13,7 @@ proc-macro = true [dependencies] syn = { version = "2.0.15", features = ["full", "extra-traits"] } -quote = "1.0.28" +quote = "1.0.26" proc-macro2 = "1.0.56" proc-macro-crate = "1.1.3" expander = "2.0.0" diff --git a/node/gum/src/lib.rs b/node/gum/src/lib.rs index c2d62d98a671..8e65343d21e2 100644 --- a/node/gum/src/lib.rs +++ b/node/gum/src/lib.rs @@ -20,89 +20,6 @@ //! A wrapper around `tracing` macros, to provide semi automatic //! `traceID` annotation without codebase turnover. -//! -//! # Usage -//! -//! The API follows the [`tracing` -//! API](https://docs.rs/tracing/latest/tracing/index.html), but the docs contain -//! more detail than you probably need to know, so here's the quick version. -//! -//! Most common usage is of the form: -//! -//! ```rs -//! gum::warn!( -//! target: LOG_TARGET, -//! worker_pid = %idle_worker.pid, -//! ?error, -//! "failed to send a handshake to the spawned worker", -//! ); -//! ``` -//! -//! ### Log levels -//! -//! All of the the [`tracing` macros](https://docs.rs/tracing/latest/tracing/index.html#macros) are available. -//! In decreasing order of priority they are: -//! -//! - `error!` -//! - `warn!` -//! - `info!` -//! - `debug!` -//! - `trace!` -//! -//! ### `target` -//! -//! The `LOG_TARGET` should be defined once per crate, e.g.: -//! -//! ```rs -//! const LOG_TARGET: &str = "parachain::pvf"; -//! ``` -//! -//! This should be of the form `::`, where the `::` is optional. -//! -//! The target and subtarget are used when debugging by specializing the Grafana Loki query to -//! filter specific subsystem logs. The more specific the query is the better when approaching the -//! query response limit. -//! -//! ### Fields -//! -//! Here's the rundown on how fields work: -//! -//! - Fields on spans and events are specified using the `syntax field_name = -//! field_value`. -//! - Local variables may be used as field values without an assignment, similar to -//! struct initializers. -//! - The `?` sigil is shorthand that specifies a field should be recorded using its -//! `fmt::Debug` implementation. -//! - The `%` sigil operates similarly, but indicates that the value should be -//! recorded using its `fmt::Display` implementation. -//! -//! For full details, again see [the tracing -//! docs](https://docs.rs/tracing/latest/tracing/index.html#recording-fields). -//! -//! ### Viewing traces -//! -//! When testing, -//! -//! ```rs -//! sp_tracing::init_for_tests(); -//! ``` -//! -//! should enable all trace logs. -//! -//! Alternatively, you can do: -//! -//! ```rs -//! sp_tracing::try_init_simple(); -//! ``` -//! -//! On the command line you specify `RUST_LOG` with the desired target and trace level: -//! -//! ```sh -//! RUST_LOG=parachain::pvf=trace cargo test -//! ``` -//! -//! On the other hand if you want all `parachain` logs, specify `parachain=trace`, which will also -//! include logs from `parachain::pvf` and other subtargets. pub use tracing::{enabled, event, Level}; diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index 8e23e623174f..a36822b041a3 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -20,8 +20,7 @@ polkadot-node-subsystem-types = { path = "../subsystem-types" } polkadot-node-core-dispute-coordinator = { path = "../core/dispute-coordinator" } polkadot-node-core-candidate-validation = { path = "../core/candidate-validation" } polkadot-node-core-backing = { path = "../core/backing" } -polkadot-node-core-pvf-execute-worker = { path = "../core/pvf/execute-worker" } -polkadot-node-core-pvf-prepare-worker = { path = "../core/pvf/prepare-worker" } +polkadot-node-core-pvf-worker = { path = "../core/pvf/worker" } polkadot-node-primitives = { path = "../primitives" } polkadot-primitives = { path = "../../primitives" } color-eyre = { version = "0.6.1", default-features = false } diff --git a/node/malus/src/malus.rs b/node/malus/src/malus.rs index d09f8be990a4..36cf0cca06bf 100644 --- a/node/malus/src/malus.rs +++ b/node/malus/src/malus.rs @@ -97,7 +97,7 @@ impl MalusCli { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_prepare_worker::worker_entrypoint( + polkadot_node_core_pvf_worker::prepare_worker_entrypoint( &cmd.socket_path, None, ); @@ -111,7 +111,7 @@ impl MalusCli { #[cfg(not(target_os = "android"))] { - polkadot_node_core_pvf_execute_worker::worker_entrypoint( + polkadot_node_core_pvf_worker::execute_worker_entrypoint( &cmd.socket_path, None, ); diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index f965018c07d9..ce77a9fc2ecd 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -19,7 +19,7 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master polkadot-parachain = { path = "../../parachain", default-features = false } schnorrkel = "0.9.1" thiserror = "1.0.31" -serde = { version = "1.0.163", features = ["derive"] } +serde = { version = "1.0.137", features = ["derive"] } [target.'cfg(not(target_os = "unknown"))'.dependencies] zstd = { version = "0.11.2", default-features = false } diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 4329405e76f1..972192ff8107 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -70,7 +70,7 @@ frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", bran futures = "0.3.21" hex-literal = "0.4.1" gum = { package = "tracing-gum", path = "../gum/" } -serde = { version = "1.0.163", features = ["derive"] } +serde = { version = "1.0.137", features = ["derive"] } serde_json = "1.0.96" thiserror = "1.0.31" kvdb = "0.13.0" diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index a467da98946a..c19fd8b2576b 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -903,6 +903,7 @@ where let approval_voting_config = ApprovalVotingConfig { col_approval_data: parachains_db::REAL_COLUMNS.col_approval_data, + col_session_data: parachains_db::REAL_COLUMNS.col_session_window_data, slot_duration_millis: slot_duration.as_millis() as u64, }; @@ -926,6 +927,7 @@ where let dispute_coordinator_config = DisputeCoordinatorConfig { col_dispute_data: parachains_db::REAL_COLUMNS.col_dispute_coordinator_data, + col_session_data: parachains_db::REAL_COLUMNS.col_session_window_data, }; let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams { @@ -1165,11 +1167,15 @@ where let gadget = beefy::start_beefy_gadget::<_, _, _, _, _, _, _>(beefy_params); - // BEEFY currently only runs on testnets, if it fails we'll + // Wococo's purpose is to be a testbed for BEEFY, so if it fails we'll // bring the node down with it to make sure it is noticed. - task_manager - .spawn_essential_handle() - .spawn_blocking("beefy-gadget", None, gadget); + if chain_spec.is_wococo() { + task_manager + .spawn_essential_handle() + .spawn_blocking("beefy-gadget", None, gadget); + } else { + task_manager.spawn_handle().spawn_blocking("beefy-gadget", None, gadget); + } if is_offchain_indexing_enabled { task_manager.spawn_handle().spawn_blocking( @@ -1519,6 +1525,7 @@ fn revert_chain_selection(db: Arc, hash: Hash) -> sp_blockchain::R fn revert_approval_voting(db: Arc, hash: Hash) -> sp_blockchain::Result<()> { let config = approval_voting_subsystem::Config { col_approval_data: parachains_db::REAL_COLUMNS.col_approval_data, + col_session_data: parachains_db::REAL_COLUMNS.col_session_window_data, slot_duration_millis: Default::default(), }; diff --git a/node/service/src/parachains_db/mod.rs b/node/service/src/parachains_db/mod.rs index 519afbe0ccd1..918aecd25e76 100644 --- a/node/service/src/parachains_db/mod.rs +++ b/node/service/src/parachains_db/mod.rs @@ -36,18 +36,12 @@ pub(crate) mod columns { pub mod v2 { pub const NUM_COLUMNS: u32 = 6; - - #[cfg(test)] - pub const COL_SESSION_WINDOW_DATA: u32 = 5; - } - - pub mod v3 { - pub const NUM_COLUMNS: u32 = 5; pub const COL_AVAILABILITY_DATA: u32 = 0; pub const COL_AVAILABILITY_META: u32 = 1; pub const COL_APPROVAL_DATA: u32 = 2; pub const COL_CHAIN_SELECTION_DATA: u32 = 3; pub const COL_DISPUTE_COORDINATOR_DATA: u32 = 4; + pub const COL_SESSION_WINDOW_DATA: u32 = 5; pub const ORDERED_COL: &[u32] = &[COL_AVAILABILITY_META, COL_CHAIN_SELECTION_DATA, COL_DISPUTE_COORDINATOR_DATA]; @@ -68,16 +62,19 @@ pub struct ColumnsConfig { pub col_chain_selection_data: u32, /// The column used by dispute coordinator for data. pub col_dispute_coordinator_data: u32, + /// The column used for session window data. + pub col_session_window_data: u32, } /// The real columns used by the parachains DB. #[cfg(any(test, feature = "full-node"))] pub const REAL_COLUMNS: ColumnsConfig = ColumnsConfig { - col_availability_data: columns::v3::COL_AVAILABILITY_DATA, - col_availability_meta: columns::v3::COL_AVAILABILITY_META, - col_approval_data: columns::v3::COL_APPROVAL_DATA, - col_chain_selection_data: columns::v3::COL_CHAIN_SELECTION_DATA, - col_dispute_coordinator_data: columns::v3::COL_DISPUTE_COORDINATOR_DATA, + col_availability_data: columns::v2::COL_AVAILABILITY_DATA, + col_availability_meta: columns::v2::COL_AVAILABILITY_META, + col_approval_data: columns::v2::COL_APPROVAL_DATA, + col_chain_selection_data: columns::v2::COL_CHAIN_SELECTION_DATA, + col_dispute_coordinator_data: columns::v2::COL_DISPUTE_COORDINATOR_DATA, + col_session_window_data: columns::v2::COL_SESSION_WINDOW_DATA, }; #[derive(PartialEq)] @@ -125,17 +122,20 @@ pub fn open_creating_rocksdb( let path = root.join("parachains").join("db"); - let mut db_config = DatabaseConfig::with_columns(columns::v3::NUM_COLUMNS); + let mut db_config = DatabaseConfig::with_columns(columns::v2::NUM_COLUMNS); let _ = db_config .memory_budget - .insert(columns::v3::COL_AVAILABILITY_DATA, cache_sizes.availability_data); + .insert(columns::v2::COL_AVAILABILITY_DATA, cache_sizes.availability_data); + let _ = db_config + .memory_budget + .insert(columns::v2::COL_AVAILABILITY_META, cache_sizes.availability_meta); let _ = db_config .memory_budget - .insert(columns::v3::COL_AVAILABILITY_META, cache_sizes.availability_meta); + .insert(columns::v2::COL_APPROVAL_DATA, cache_sizes.approval_data); let _ = db_config .memory_budget - .insert(columns::v3::COL_APPROVAL_DATA, cache_sizes.approval_data); + .insert(columns::v2::COL_SESSION_WINDOW_DATA, cache_sizes.session_data); let path_str = path .to_str() @@ -146,7 +146,7 @@ pub fn open_creating_rocksdb( let db = Database::open(&db_config, &path_str)?; let db = polkadot_node_subsystem_util::database::kvdb_impl::DbAdapter::new( db, - columns::v3::ORDERED_COL, + columns::v2::ORDERED_COL, ); Ok(Arc::new(db)) @@ -166,12 +166,12 @@ pub fn open_creating_paritydb( std::fs::create_dir_all(&path_str)?; upgrade::try_upgrade_db(&path, DatabaseKind::ParityDB)?; - let db = parity_db::Db::open_or_create(&upgrade::paritydb_version_3_config(&path)) + let db = parity_db::Db::open_or_create(&upgrade::paritydb_version_2_config(&path)) .map_err(|err| io::Error::new(io::ErrorKind::Other, format!("{:?}", err)))?; let db = polkadot_node_subsystem_util::database::paritydb_impl::DbAdapter::new( db, - columns::v3::ORDERED_COL, + columns::v2::ORDERED_COL, ); Ok(Arc::new(db)) } diff --git a/node/service/src/parachains_db/upgrade.rs b/node/service/src/parachains_db/upgrade.rs index 6041a093ef9b..c52bd21c0573 100644 --- a/node/service/src/parachains_db/upgrade.rs +++ b/node/service/src/parachains_db/upgrade.rs @@ -28,7 +28,7 @@ type Version = u32; const VERSION_FILE_NAME: &'static str = "parachain_db_version"; /// Current db version. -const CURRENT_VERSION: Version = 3; +const CURRENT_VERSION: Version = 2; #[derive(thiserror::Error, Debug)] pub enum Error { @@ -58,8 +58,6 @@ pub(crate) fn try_upgrade_db(db_path: &Path, db_kind: DatabaseKind) -> Result<() Some(0) => migrate_from_version_0_to_1(db_path, db_kind)?, // 1 -> 2 migration Some(1) => migrate_from_version_1_to_2(db_path, db_kind)?, - // 2 -> 3 migration - Some(2) => migrate_from_version_2_to_3(db_path, db_kind)?, // Already at current version, do nothing. Some(CURRENT_VERSION) => (), // This is an arbitrary future version, we don't handle it. @@ -129,18 +127,6 @@ fn migrate_from_version_1_to_2(path: &Path, db_kind: DatabaseKind) -> Result<(), }) } -fn migrate_from_version_2_to_3(path: &Path, db_kind: DatabaseKind) -> Result<(), Error> { - gum::info!(target: LOG_TARGET, "Migrating parachains db from version 2 to version 3 ..."); - match db_kind { - DatabaseKind::ParityDB => paritydb_migrate_from_version_2_to_3(path), - DatabaseKind::RocksDB => rocksdb_migrate_from_version_2_to_3(path), - } - .and_then(|result| { - gum::info!(target: LOG_TARGET, "Migration complete! "); - Ok(result) - }) -} - /// Migration from version 0 to version 1: /// * the number of columns has changed from 3 to 5; fn rocksdb_migrate_from_version_0_to_1(path: &Path) -> Result<(), Error> { @@ -174,20 +160,6 @@ fn rocksdb_migrate_from_version_1_to_2(path: &Path) -> Result<(), Error> { Ok(()) } -fn rocksdb_migrate_from_version_2_to_3(path: &Path) -> Result<(), Error> { - use kvdb_rocksdb::{Database, DatabaseConfig}; - - let db_path = path - .to_str() - .ok_or_else(|| super::other_io_error("Invalid database path".into()))?; - let db_cfg = DatabaseConfig::with_columns(super::columns::v2::NUM_COLUMNS); - let mut db = Database::open(&db_cfg, db_path)?; - - db.remove_last_column()?; - - Ok(()) -} - // This currently clears columns which had their configs altered between versions. // The columns to be changed are constrained by the `allowed_columns` vector. fn paritydb_fix_columns( @@ -249,7 +221,7 @@ fn paritydb_fix_columns( pub(crate) fn paritydb_version_1_config(path: &Path) -> parity_db::Options { let mut options = parity_db::Options::with_columns(&path, super::columns::v1::NUM_COLUMNS as u8); - for i in columns::v3::ORDERED_COL { + for i in columns::v2::ORDERED_COL { options.columns[*i as usize].btree_index = true; } @@ -260,18 +232,7 @@ pub(crate) fn paritydb_version_1_config(path: &Path) -> parity_db::Options { pub(crate) fn paritydb_version_2_config(path: &Path) -> parity_db::Options { let mut options = parity_db::Options::with_columns(&path, super::columns::v2::NUM_COLUMNS as u8); - for i in columns::v3::ORDERED_COL { - options.columns[*i as usize].btree_index = true; - } - - options -} - -/// Database configuration for version 3. -pub(crate) fn paritydb_version_3_config(path: &Path) -> parity_db::Options { - let mut options = - parity_db::Options::with_columns(&path, super::columns::v3::NUM_COLUMNS as u8); - for i in columns::v3::ORDERED_COL { + for i in columns::v2::ORDERED_COL { options.columns[*i as usize].btree_index = true; } @@ -283,8 +244,8 @@ pub(crate) fn paritydb_version_3_config(path: &Path) -> parity_db::Options { pub(crate) fn paritydb_version_0_config(path: &Path) -> parity_db::Options { let mut options = parity_db::Options::with_columns(&path, super::columns::v1::NUM_COLUMNS as u8); - options.columns[super::columns::v3::COL_AVAILABILITY_META as usize].btree_index = true; - options.columns[super::columns::v3::COL_CHAIN_SELECTION_DATA as usize].btree_index = true; + options.columns[super::columns::v2::COL_AVAILABILITY_META as usize].btree_index = true; + options.columns[super::columns::v2::COL_CHAIN_SELECTION_DATA as usize].btree_index = true; options } @@ -299,7 +260,7 @@ fn paritydb_migrate_from_version_0_to_1(path: &Path) -> Result<(), Error> { paritydb_fix_columns( path, paritydb_version_1_config(path), - vec![super::columns::v3::COL_DISPUTE_COORDINATOR_DATA], + vec![super::columns::v2::COL_DISPUTE_COORDINATOR_DATA], )?; Ok(()) @@ -317,20 +278,9 @@ fn paritydb_migrate_from_version_1_to_2(path: &Path) -> Result<(), Error> { Ok(()) } -/// Migration from version 2 to version 3: -/// - drop the column used by `RollingSessionWindow` -fn paritydb_migrate_from_version_2_to_3(path: &Path) -> Result<(), Error> { - parity_db::Db::drop_last_column(&mut paritydb_version_2_config(path)) - .map_err(|e| other_io_error(format!("Error removing COL_SESSION_WINDOW_DATA {:?}", e)))?; - Ok(()) -} - #[cfg(test)] mod tests { - use super::{ - columns::{v2::COL_SESSION_WINDOW_DATA, v3::*}, - *, - }; + use super::{columns::v2::*, *}; #[test] fn test_paritydb_migrate_0_to_1() { @@ -425,7 +375,7 @@ mod tests { // We need to properly set db version for upgrade to work. fs::write(version_file_path(db_dir.path()), "1").expect("Failed to write DB version"); { - let db = DbAdapter::new(db, columns::v3::ORDERED_COL); + let db = DbAdapter::new(db, columns::v2::ORDERED_COL); db.write(DBTransaction { ops: vec![DBOp::Insert { col: COL_DISPUTE_COORDINATOR_DATA, @@ -443,7 +393,7 @@ mod tests { assert_eq!(db.num_columns(), super::columns::v2::NUM_COLUMNS); - let db = DbAdapter::new(db, columns::v3::ORDERED_COL); + let db = DbAdapter::new(db, columns::v2::ORDERED_COL); assert_eq!( db.get(COL_DISPUTE_COORDINATOR_DATA, b"1234").unwrap(), @@ -466,59 +416,4 @@ mod tests { Some("0xdeadb00b".as_bytes().to_vec()) ); } - - #[test] - fn test_paritydb_migrate_2_to_3() { - use parity_db::Db; - - let db_dir = tempfile::tempdir().unwrap(); - let path = db_dir.path(); - let test_key = b"1337"; - - // We need to properly set db version for upgrade to work. - fs::write(version_file_path(path), "2").expect("Failed to write DB version"); - - { - let db = Db::open_or_create(&paritydb_version_2_config(&path)).unwrap(); - - // Write some dummy data - db.commit(vec![( - COL_SESSION_WINDOW_DATA as u8, - test_key.to_vec(), - Some(b"0xdeadb00b".to_vec()), - )]) - .unwrap(); - - assert_eq!(db.num_columns(), columns::v2::NUM_COLUMNS as u8); - } - - try_upgrade_db(&path, DatabaseKind::ParityDB).unwrap(); - - let db = Db::open(&paritydb_version_3_config(&path)).unwrap(); - - assert_eq!(db.num_columns(), columns::v3::NUM_COLUMNS as u8); - } - - #[test] - fn test_rocksdb_migrate_2_to_3() { - use kvdb_rocksdb::{Database, DatabaseConfig}; - - let db_dir = tempfile::tempdir().unwrap(); - let db_path = db_dir.path().to_str().unwrap(); - let db_cfg = DatabaseConfig::with_columns(super::columns::v2::NUM_COLUMNS); - { - let db = Database::open(&db_cfg, db_path).unwrap(); - assert_eq!(db.num_columns(), super::columns::v2::NUM_COLUMNS as u32); - } - - // We need to properly set db version for upgrade to work. - fs::write(version_file_path(db_dir.path()), "2").expect("Failed to write DB version"); - - try_upgrade_db(&db_dir.path(), DatabaseKind::RocksDB).unwrap(); - - let db_cfg = DatabaseConfig::with_columns(super::columns::v3::NUM_COLUMNS); - let db = Database::open(&db_cfg, db_path).unwrap(); - - assert_eq!(db.num_columns(), super::columns::v3::NUM_COLUMNS); - } } diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index 92ca9896f5dd..68e953b9dade 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -642,26 +642,6 @@ pub enum RuntimeApiRequest { ), /// Returns all on-chain disputes at given block number. Available in `v3`. Disputes(RuntimeApiSender)>>), - /// Returns a list of validators that lost a past session dispute and need to be slashed. - /// `VStaging` - UnappliedSlashes( - RuntimeApiSender< - Vec<(SessionIndex, CandidateHash, vstaging_primitives::slashing::PendingSlashes)>, - >, - ), - /// Returns a merkle proof of a validator session key. - /// `VStaging` - KeyOwnershipProof( - ValidatorId, - RuntimeApiSender>, - ), - /// Submits an unsigned extrinsic to slash validator who lost a past session dispute. - /// `VStaging` - SubmitReportDisputeLost( - vstaging_primitives::slashing::DisputeProof, - vstaging_primitives::slashing::OpaqueKeyOwnershipProof, - RuntimeApiSender>, - ), /// Get the backing state of the given para. /// This is a staging API that will not be available on production runtimes. StagingParaBackingState(ParaId, RuntimeApiSender>), @@ -677,18 +657,9 @@ impl RuntimeApiRequest { /// `Disputes` pub const DISPUTES_RUNTIME_REQUIREMENT: u32 = 3; - /// `UnappliedSlashes` - pub const UNAPPLIED_SLASHES_RUNTIME_REQUIREMENT: u32 = 4; - /// `ExecutorParams` pub const EXECUTOR_PARAMS_RUNTIME_REQUIREMENT: u32 = 4; - /// `KeyOwnershipProof` - pub const KEY_OWNERSHIP_PROOF_RUNTIME_REQUIREMENT: u32 = 4; - - /// `SubmitReportDisputeLost` - pub const SUBMIT_REPORT_DISPUTE_LOST_RUNTIME_REQUIREMENT: u32 = 4; - /// Minimum version for backing state, required for async backing. /// /// 99 for now, should be adjusted to VSTAGING/actual runtime version once released. diff --git a/node/subsystem-types/src/runtime_client.rs b/node/subsystem-types/src/runtime_client.rs index 9f78a6f1d0ef..4f4d3344c43e 100644 --- a/node/subsystem-types/src/runtime_client.rs +++ b/node/subsystem-types/src/runtime_client.rs @@ -16,7 +16,7 @@ use async_trait::async_trait; use polkadot_primitives::{ - runtime_api::ParachainHost, vstaging, Block, BlockNumber, CandidateCommitments, CandidateEvent, + runtime_api::ParachainHost, Block, BlockNumber, CandidateCommitments, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id, InboundDownwardMessage, InboundHrmpMessage, OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, @@ -182,34 +182,6 @@ pub trait RuntimeApiSubsystemClient { at: Hash, ) -> Result)>, ApiError>; - /// Returns a list of validators that lost a past session dispute and need to be slashed. - /// - /// WARNING: This is a staging method! Do not use on production runtimes! - async fn unapplied_slashes( - &self, - at: Hash, - ) -> Result, ApiError>; - - /// Returns a merkle proof of a validator session key in a past session. - /// - /// WARNING: This is a staging method! Do not use on production runtimes! - async fn key_ownership_proof( - &self, - at: Hash, - validator_id: ValidatorId, - ) -> Result, ApiError>; - - /// Submits an unsigned extrinsic to slash validators who lost a dispute about - /// a candidate of a past session. - /// - /// WARNING: This is a staging method! Do not use on production runtimes! - async fn submit_report_dispute_lost( - &self, - at: Hash, - dispute_proof: vstaging::slashing::DisputeProof, - key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, - ) -> Result, ApiError>; - /// Returns the state of parachain backing for a given para. /// This is a staging method! Do not use on production runtimes! async fn staging_para_backing_state( @@ -419,31 +391,6 @@ where self.runtime_api().disputes(at) } - async fn unapplied_slashes( - &self, - at: Hash, - ) -> Result, ApiError> { - self.runtime_api().unapplied_slashes(at) - } - - async fn key_ownership_proof( - &self, - at: Hash, - validator_id: ValidatorId, - ) -> Result, ApiError> { - self.runtime_api().key_ownership_proof(at, validator_id) - } - - async fn submit_report_dispute_lost( - &self, - at: Hash, - dispute_proof: vstaging::slashing::DisputeProof, - key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, - ) -> Result, ApiError> { - self.runtime_api() - .submit_report_dispute_lost(at, dispute_proof, key_ownership_proof) - } - async fn staging_para_backing_state( &self, at: Hash, diff --git a/node/subsystem-util/src/lib.rs b/node/subsystem-util/src/lib.rs index 6f9a803efb9d..616b4f01fd5f 100644 --- a/node/subsystem-util/src/lib.rs +++ b/node/subsystem-util/src/lib.rs @@ -72,6 +72,8 @@ pub mod backing_implicit_view; /// An emulator for node-side code to predict the results of on-chain parachain inclusion /// and predict future constraints. pub mod inclusion_emulator; +/// A rolling session window cache. +pub mod rolling_session_window; /// Convenient and efficient runtime info access. pub mod runtime; diff --git a/node/subsystem-util/src/rolling_session_window.rs b/node/subsystem-util/src/rolling_session_window.rs new file mode 100644 index 000000000000..18364491849a --- /dev/null +++ b/node/subsystem-util/src/rolling_session_window.rs @@ -0,0 +1,1532 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! A rolling window of sessions and cached session info, updated by the state of newly imported blocks. +//! +//! This is useful for consensus components which need to stay up-to-date about recent sessions but don't +//! care about the state of particular blocks. + +use super::database::{DBTransaction, Database}; +use kvdb::{DBKey, DBOp}; + +use parity_scale_codec::{Decode, Encode}; +pub use polkadot_node_primitives::{new_session_window_size, SessionWindowSize}; +use polkadot_primitives::{BlockNumber, Hash, SessionIndex, SessionInfo}; +use std::sync::Arc; + +use futures::channel::oneshot; +use polkadot_node_subsystem::{ + errors::{ChainApiError, RuntimeApiError}, + messages::{ChainApiMessage, RuntimeApiMessage, RuntimeApiRequest}, + overseer, +}; + +// The window size is equal to the `approval-voting` and `dispute-coordinator` constants that +// have been obsoleted. +const SESSION_WINDOW_SIZE: SessionWindowSize = new_session_window_size!(6); +const LOG_TARGET: &str = "parachain::rolling-session-window"; +const STORED_ROLLING_SESSION_WINDOW: &[u8] = b"Rolling_session_window"; + +/// Sessions unavailable in state to cache. +#[derive(Debug, Clone, thiserror::Error)] +pub enum SessionsUnavailableReason { + /// Runtime API subsystem was unavailable. + #[error(transparent)] + RuntimeApiUnavailable(#[from] oneshot::Canceled), + /// The runtime API itself returned an error. + #[error(transparent)] + RuntimeApi(#[from] RuntimeApiError), + /// The chain API itself returned an error. + #[error(transparent)] + ChainApi(#[from] ChainApiError), + /// Missing session info from runtime API for given `SessionIndex`. + #[error("Missing session index {0:?}")] + Missing(SessionIndex), + /// Missing last finalized block number. + #[error("Missing last finalized block number")] + MissingLastFinalizedBlock, + /// Missing last finalized block hash. + #[error("Missing last finalized block hash")] + MissingLastFinalizedBlockHash(BlockNumber), +} + +/// Information about the sessions being fetched. +#[derive(Debug, Clone)] +pub struct SessionsUnavailableInfo { + /// The desired window start. + pub window_start: SessionIndex, + /// The desired window end. + pub window_end: SessionIndex, + /// The block hash whose state the sessions were meant to be drawn from. + pub block_hash: Hash, +} + +/// Sessions were unavailable to fetch from the state for some reason. +#[derive(Debug, thiserror::Error, Clone)] +#[error("Sessions unavailable: {kind:?}, info: {info:?}")] +pub struct SessionsUnavailable { + /// The error kind. + #[source] + kind: SessionsUnavailableReason, + /// The info about the session window, if any. + info: Option, +} + +/// An indicated update of the rolling session window. +#[derive(Debug, PartialEq, Clone)] +pub enum SessionWindowUpdate { + /// The session window was just advanced from one range to a new one. + Advanced { + /// The previous start of the window (inclusive). + prev_window_start: SessionIndex, + /// The previous end of the window (inclusive). + prev_window_end: SessionIndex, + /// The new start of the window (inclusive). + new_window_start: SessionIndex, + /// The new end of the window (inclusive). + new_window_end: SessionIndex, + }, + /// The session window was unchanged. + Unchanged, +} + +/// A structure to store rolling session database parameters. +#[derive(Clone)] +pub struct DatabaseParams { + /// Database reference. + pub db: Arc, + /// The column which stores the rolling session info. + pub db_column: u32, +} +/// A rolling window of sessions and cached session info. +pub struct RollingSessionWindow { + earliest_session: SessionIndex, + session_info: Vec, + window_size: SessionWindowSize, + // The option is just to enable some approval-voting tests to force feed sessions + // in the window without dealing with the DB. + db_params: Option, +} + +/// The rolling session data we persist in the database. +#[derive(Encode, Decode, Default)] +struct StoredWindow { + earliest_session: SessionIndex, + session_info: Vec, +} + +impl RollingSessionWindow { + /// Initialize a new session info cache with the given window size. + /// Invariant: The database always contains the earliest session. Then, + /// we can always extend the session info vector using chain state. + pub async fn new( + mut sender: Sender, + block_hash: Hash, + db_params: DatabaseParams, + ) -> Result + where + Sender: overseer::SubsystemSender + + overseer::SubsystemSender, + { + // At first, determine session window start using the chain state. + let session_index = get_session_index_for_child(&mut sender, block_hash).await?; + let earliest_non_finalized_block_session = + Self::earliest_non_finalized_block_session(&mut sender).await?; + + // This will increase the session window to cover the full unfinalized chain. + let on_chain_window_start = std::cmp::min( + session_index.saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + earliest_non_finalized_block_session, + ); + + // Fetch session information from DB. + let maybe_stored_window = Self::db_load(db_params.clone()); + + // Get the DB stored sessions and recompute window start based on DB data. + let (mut window_start, stored_sessions) = + if let Some(mut stored_window) = maybe_stored_window { + // Check if DB is ancient. + if earliest_non_finalized_block_session > + stored_window.earliest_session + stored_window.session_info.len() as u32 + { + // If ancient, we scrap it and fetch from chain state. + stored_window.session_info.clear(); + } + + // The session window might extend beyond the last finalized block, but that's fine as we'll prune it at + // next update. + let window_start = if stored_window.session_info.len() > 0 { + // If there is at least one entry in db, we always take the DB as source of truth. + stored_window.earliest_session + } else { + on_chain_window_start + }; + + (window_start, stored_window.session_info) + } else { + (on_chain_window_start, Vec::new()) + }; + + // Compute the amount of sessions missing from the window that will be fetched from chain state. + let sessions_missing_count = session_index + .saturating_sub(window_start) + .saturating_add(1) + .saturating_sub(stored_sessions.len() as u32); + + // Extend from chain state. + let sessions = if sessions_missing_count > 0 { + match extend_sessions_from_chain_state( + stored_sessions, + &mut sender, + block_hash, + &mut window_start, + session_index, + ) + .await + { + Err(kind) => Err(SessionsUnavailable { + kind, + info: Some(SessionsUnavailableInfo { + window_start, + window_end: session_index, + block_hash, + }), + }), + Ok(sessions) => Ok(sessions), + }? + } else { + // There are no new sessions to be fetched from chain state. + stored_sessions + }; + + Ok(Self { + earliest_session: window_start, + session_info: sessions, + window_size: SESSION_WINDOW_SIZE, + db_params: Some(db_params), + }) + } + + // Load session information from the parachains db. + fn db_load(db_params: DatabaseParams) -> Option { + match db_params.db.get(db_params.db_column, STORED_ROLLING_SESSION_WINDOW).ok()? { + None => None, + Some(raw) => { + let maybe_decoded = StoredWindow::decode(&mut &raw[..]).map(Some); + match maybe_decoded { + Ok(decoded) => decoded, + Err(err) => { + gum::warn!( + target: LOG_TARGET, + ?err, + "Failed decoding db entry; will start with onchain session infos and self-heal DB entry on next update." + ); + None + }, + } + }, + } + } + + // Saves/Updates all sessions in the database. + // TODO: https://github.com/paritytech/polkadot/issues/6144 + fn db_save(&mut self, stored_window: StoredWindow) { + if let Some(db_params) = self.db_params.as_ref() { + match db_params.db.write(DBTransaction { + ops: vec![DBOp::Insert { + col: db_params.db_column, + key: DBKey::from_slice(STORED_ROLLING_SESSION_WINDOW), + value: stored_window.encode(), + }], + }) { + Ok(_) => {}, + Err(err) => { + gum::warn!(target: LOG_TARGET, ?err, "Failed writing db entry"); + }, + } + } + } + + /// Initialize a new session info cache with the given window size and + /// initial data. + /// This is only used in `approval voting` tests. + pub fn with_session_info( + earliest_session: SessionIndex, + session_info: Vec, + ) -> Self { + RollingSessionWindow { + earliest_session, + session_info, + window_size: SESSION_WINDOW_SIZE, + db_params: None, + } + } + + /// Access the session info for the given session index, if stored within the window. + pub fn session_info(&self, index: SessionIndex) -> Option<&SessionInfo> { + if index < self.earliest_session { + None + } else { + self.session_info.get((index - self.earliest_session) as usize) + } + } + + /// Access the index of the earliest session. + pub fn earliest_session(&self) -> SessionIndex { + self.earliest_session + } + + /// Access the index of the latest session. + pub fn latest_session(&self) -> SessionIndex { + self.earliest_session + (self.session_info.len() as SessionIndex).saturating_sub(1) + } + + /// Returns `true` if `session_index` is contained in the window. + pub fn contains(&self, session_index: SessionIndex) -> bool { + session_index >= self.earliest_session() && session_index <= self.latest_session() + } + + async fn earliest_non_finalized_block_session( + sender: &mut Sender, + ) -> Result + where + Sender: overseer::SubsystemSender + + overseer::SubsystemSender, + { + let last_finalized_height = { + let (tx, rx) = oneshot::channel(); + sender.send_message(ChainApiMessage::FinalizedBlockNumber(tx)).await; + match rx.await { + Ok(Ok(number)) => number, + Ok(Err(e)) => + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::ChainApi(e), + info: None, + }), + Err(err) => { + gum::warn!( + target: LOG_TARGET, + ?err, + "Failed fetching last finalized block number" + ); + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::MissingLastFinalizedBlock, + info: None, + }) + }, + } + }; + + let (tx, rx) = oneshot::channel(); + // We want to get the session index for the child of the last finalized block. + sender + .send_message(ChainApiMessage::FinalizedBlockHash(last_finalized_height, tx)) + .await; + let last_finalized_hash_parent = match rx.await { + Ok(Ok(maybe_hash)) => maybe_hash, + Ok(Err(e)) => + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::ChainApi(e), + info: None, + }), + Err(err) => { + gum::warn!(target: LOG_TARGET, ?err, "Failed fetching last finalized block hash"); + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::MissingLastFinalizedBlockHash( + last_finalized_height, + ), + info: None, + }) + }, + }; + + // Get the session in which the last finalized block was authored. + if let Some(last_finalized_hash_parent) = last_finalized_hash_parent { + let session = + match get_session_index_for_child(sender, last_finalized_hash_parent).await { + Ok(session_index) => session_index, + Err(err) => { + gum::warn!( + target: LOG_TARGET, + ?err, + ?last_finalized_hash_parent, + "Failed fetching session index" + ); + return Err(err) + }, + }; + + Ok(session) + } else { + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::MissingLastFinalizedBlockHash( + last_finalized_height, + ), + info: None, + }) + } + } + + /// When inspecting a new import notification, updates the session info cache to match + /// the session of the imported block's child. + /// + /// this only needs to be called on heads where we are directly notified about import, as sessions do + /// not change often and import notifications are expected to be typically increasing in session number. + /// + /// some backwards drift in session index is acceptable. + pub async fn cache_session_info_for_head( + &mut self, + sender: &mut Sender, + block_hash: Hash, + ) -> Result + where + Sender: overseer::SubsystemSender + + overseer::SubsystemSender, + { + let session_index = get_session_index_for_child(sender, block_hash).await?; + let latest = self.latest_session(); + + // Either cached or ancient. + if session_index <= latest { + return Ok(SessionWindowUpdate::Unchanged) + } + + let earliest_non_finalized_block_session = + Self::earliest_non_finalized_block_session(sender).await?; + + let old_window_start = self.earliest_session; + let old_window_end = latest; + + // Ensure we keep sessions up to last finalized block by adjusting the window start. + // This will increase the session window to cover the full unfinalized chain. + let window_start = std::cmp::min( + session_index.saturating_sub(self.window_size.get() - 1), + earliest_non_finalized_block_session, + ); + + // Never look back past earliest session, since if sessions beyond were not needed or available + // in the past remains valid for the future (window only advances forward). + let mut window_start = std::cmp::max(window_start, self.earliest_session); + + let mut sessions = self.session_info.clone(); + let sessions_out_of_window = window_start.saturating_sub(old_window_start) as usize; + + let sessions = if sessions_out_of_window < sessions.len() { + // Drop sessions based on how much the window advanced. + sessions.split_off((window_start as usize).saturating_sub(old_window_start as usize)) + } else { + // Window has jumped such that we need to fetch all sessions from on chain. + Vec::new() + }; + + match extend_sessions_from_chain_state( + sessions, + sender, + block_hash, + &mut window_start, + session_index, + ) + .await + { + Err(kind) => Err(SessionsUnavailable { + kind, + info: Some(SessionsUnavailableInfo { + window_start, + window_end: session_index, + block_hash, + }), + }), + Ok(s) => { + let update = SessionWindowUpdate::Advanced { + prev_window_start: old_window_start, + prev_window_end: old_window_end, + new_window_start: window_start, + new_window_end: session_index, + }; + + self.session_info = s; + + // we need to account for this case: + // window_start ................................... session_index + // old_window_start ........... latest + let new_earliest = std::cmp::max(window_start, old_window_start); + self.earliest_session = new_earliest; + + // Update current window in DB. + self.db_save(StoredWindow { + earliest_session: self.earliest_session, + session_info: self.session_info.clone(), + }); + Ok(update) + }, + } + } +} + +// Returns the session index expected at any child of the `parent` block. +// +// Note: We could use `RuntimeInfo::get_session_index_for_child` here but it's +// cleaner to just call the runtime API directly without needing to create an instance +// of `RuntimeInfo`. +async fn get_session_index_for_child( + sender: &mut impl overseer::SubsystemSender, + block_hash: Hash, +) -> Result { + let (s_tx, s_rx) = oneshot::channel(); + + // We're requesting session index of a child to populate the cache in advance. + sender + .send_message(RuntimeApiMessage::Request( + block_hash, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) + .await; + + match s_rx.await { + Ok(Ok(s)) => Ok(s), + Ok(Err(e)) => + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::RuntimeApi(e), + info: None, + }), + Err(e) => + return Err(SessionsUnavailable { + kind: SessionsUnavailableReason::RuntimeApiUnavailable(e), + info: None, + }), + } +} + +/// Attempts to extend db stored sessions with sessions missing between `start` and up to `end_inclusive`. +/// Runtime session info fetching errors are ignored if that doesn't create a gap in the window. +async fn extend_sessions_from_chain_state( + stored_sessions: Vec, + sender: &mut impl overseer::SubsystemSender, + block_hash: Hash, + window_start: &mut SessionIndex, + end_inclusive: SessionIndex, +) -> Result, SessionsUnavailableReason> { + // Start from the db sessions. + let mut sessions = stored_sessions; + // We allow session fetch failures only if we won't create a gap in the window by doing so. + // If `allow_failure` is set to true here, fetching errors are ignored until we get a first session. + let mut allow_failure = sessions.is_empty(); + + let start = *window_start + sessions.len() as u32; + + for i in start..=end_inclusive { + let (tx, rx) = oneshot::channel(); + sender + .send_message(RuntimeApiMessage::Request( + block_hash, + RuntimeApiRequest::SessionInfo(i, tx), + )) + .await; + + match rx.await { + Ok(Ok(Some(session_info))) => { + // We do not allow failure anymore after having at least 1 session in window. + allow_failure = false; + sessions.push(session_info); + }, + Ok(Ok(None)) if !allow_failure => return Err(SessionsUnavailableReason::Missing(i)), + Ok(Ok(None)) => { + // Handle `allow_failure` true. + // If we didn't get the session, we advance window start. + *window_start += 1; + gum::debug!( + target: LOG_TARGET, + session = ?i, + "Session info missing from runtime." + ); + }, + Ok(Err(e)) if !allow_failure => return Err(SessionsUnavailableReason::RuntimeApi(e)), + Err(canceled) if !allow_failure => + return Err(SessionsUnavailableReason::RuntimeApiUnavailable(canceled)), + Ok(Err(err)) => { + // Handle `allow_failure` true. + // If we didn't get the session, we advance window start. + *window_start += 1; + gum::debug!( + target: LOG_TARGET, + session = ?i, + ?err, + "Error while fetching session information." + ); + }, + Err(err) => { + // Handle `allow_failure` true. + // If we didn't get the session, we advance window start. + *window_start += 1; + gum::debug!( + target: LOG_TARGET, + session = ?i, + ?err, + "Channel error while fetching session information." + ); + }, + }; + } + + Ok(sessions) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::database::kvdb_impl::DbAdapter; + use assert_matches::assert_matches; + use polkadot_node_subsystem::{ + messages::{AllMessages, AvailabilityRecoveryMessage}, + SubsystemContext, + }; + use polkadot_node_subsystem_test_helpers::make_subsystem_context; + use polkadot_primitives::Header; + use sp_core::testing::TaskExecutor; + + const SESSION_DATA_COL: u32 = 0; + + const NUM_COLUMNS: u32 = 1; + + fn dummy_db_params() -> DatabaseParams { + let db = kvdb_memorydb::create(NUM_COLUMNS); + let db = DbAdapter::new(db, &[]); + let db: Arc = Arc::new(db); + DatabaseParams { db, db_column: SESSION_DATA_COL } + } + + fn dummy_session_info(index: SessionIndex) -> SessionInfo { + SessionInfo { + validators: Default::default(), + discovery_keys: Vec::new(), + assignment_keys: Vec::new(), + validator_groups: Default::default(), + n_cores: index as _, + zeroth_delay_tranche_width: index as _, + relay_vrf_modulo_samples: index as _, + n_delay_tranches: index as _, + no_show_slots: index as _, + needed_approvals: index as _, + active_validator_indices: Vec::new(), + dispute_period: 6, + random_seed: [0u8; 32], + } + } + + fn cache_session_info_test( + expected_start_session: SessionIndex, + session: SessionIndex, + window: Option, + expect_requests_from: SessionIndex, + db_params: Option, + ) -> RollingSessionWindow { + let db_params = db_params.unwrap_or(dummy_db_params()); + + let header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 5, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let finalized_header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 0, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = + make_subsystem_context::(pool.clone()); + + let hash = header.hash(); + + let sender = ctx.sender(); + + let test_fut = { + Box::pin(async move { + let window = match window { + None => + RollingSessionWindow::new(sender.clone(), hash, db_params).await.unwrap(), + Some(mut window) => { + window.cache_session_info_for_head(sender, hash).await.unwrap(); + window + }, + }; + assert_eq!(window.earliest_session, expected_start_session); + assert_eq!( + window.session_info, + (expected_start_session..=session).map(dummy_session_info).collect::>(), + ); + + window + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(finalized_header.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, finalized_header.number); + let _ = s_tx.send(Ok(Some(finalized_header.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, finalized_header.hash()); + let _ = s_tx.send(Ok(session)); + } + ); + + for i in expect_requests_from..=session { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(i, j); + let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); + } + ); + } + }); + + let (window, _) = futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + window + } + + #[test] + fn cache_session_info_start_empty_db() { + let db_params = dummy_db_params(); + + let window = cache_session_info_test( + (10 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 10, + None, + (10 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + Some(db_params.clone()), + ); + + let window = cache_session_info_test( + (11 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 11, + Some(window), + 11, + None, + ); + assert_eq!(window.session_info.len(), SESSION_WINDOW_SIZE.get() as usize); + + cache_session_info_test( + (11 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 12, + None, + 12, + Some(db_params), + ); + } + + #[test] + fn cache_session_info_first_early() { + cache_session_info_test(0, 1, None, 0, None); + } + + #[test] + fn cache_session_info_does_not_underflow() { + let window = RollingSessionWindow { + earliest_session: 1, + session_info: vec![dummy_session_info(1)], + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + cache_session_info_test(1, 2, Some(window), 2, None); + } + + #[test] + fn cache_session_window_contains() { + let window = RollingSessionWindow { + earliest_session: 10, + session_info: vec![dummy_session_info(1)], + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + assert!(!window.contains(0)); + assert!(!window.contains(10 + SESSION_WINDOW_SIZE.get())); + assert!(!window.contains(11)); + assert!(!window.contains(10 + SESSION_WINDOW_SIZE.get() - 1)); + } + + #[test] + fn cache_session_info_first_late() { + cache_session_info_test( + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 100, + None, + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + None, + ); + } + + #[test] + fn cache_session_info_jump() { + let window = RollingSessionWindow { + earliest_session: 50, + session_info: vec![ + dummy_session_info(50), + dummy_session_info(51), + dummy_session_info(52), + ], + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + cache_session_info_test( + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 100, + Some(window), + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + None, + ); + } + + #[test] + fn cache_session_info_roll_full() { + let start = 99 - (SESSION_WINDOW_SIZE.get() - 1); + let window = RollingSessionWindow { + earliest_session: start, + session_info: (start..=99).map(dummy_session_info).collect(), + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + cache_session_info_test( + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 100, + Some(window), + 100, // should only make one request. + None, + ); + } + + #[test] + fn cache_session_info_roll_many_full_db() { + let db_params = dummy_db_params(); + let start = 97 - (SESSION_WINDOW_SIZE.get() - 1); + let window = RollingSessionWindow { + earliest_session: start, + session_info: (start..=97).map(dummy_session_info).collect(), + window_size: SESSION_WINDOW_SIZE, + db_params: Some(db_params.clone()), + }; + + cache_session_info_test( + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 100, + Some(window), + 98, + None, + ); + + // We expect the session to be populated from DB, and only fetch 101 from on chain. + cache_session_info_test( + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 101, + None, + 101, + Some(db_params.clone()), + ); + + // Session warps in the future. + let window = cache_session_info_test(195, 200, None, 195, Some(db_params)); + + assert_eq!(window.session_info.len(), SESSION_WINDOW_SIZE.get() as usize); + } + + #[test] + fn cache_session_info_roll_many_full() { + let start = 97 - (SESSION_WINDOW_SIZE.get() - 1); + let window = RollingSessionWindow { + earliest_session: start, + session_info: (start..=97).map(dummy_session_info).collect(), + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + cache_session_info_test( + (100 as SessionIndex).saturating_sub(SESSION_WINDOW_SIZE.get() - 1), + 100, + Some(window), + 98, + None, + ); + } + + #[test] + fn cache_session_info_roll_early() { + let start = 0; + let window = RollingSessionWindow { + earliest_session: start, + session_info: (0..=1).map(dummy_session_info).collect(), + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + cache_session_info_test( + 0, + 2, + Some(window), + 2, // should only make one request. + None, + ); + } + + #[test] + fn cache_session_info_roll_many_early() { + let start = 0; + let window = RollingSessionWindow { + earliest_session: start, + session_info: (0..=1).map(dummy_session_info).collect(), + window_size: SESSION_WINDOW_SIZE, + db_params: Some(dummy_db_params()), + }; + + let actual_window_size = window.session_info.len() as u32; + + cache_session_info_test(0, 3, Some(window), actual_window_size, None); + } + + #[test] + fn db_load_works() { + // Session index of the tip of our fake test chain. + let session: SessionIndex = 100; + let genesis_session: SessionIndex = 0; + + let header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 5, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let finalized_header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 0, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let finalized_header_clone = finalized_header.clone(); + + let hash: sp_core::H256 = header.hash(); + let db_params = dummy_db_params(); + let db_params_clone = db_params.clone(); + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); + + let test_fut = { + let sender = ctx.sender().clone(); + Box::pin(async move { + let mut rsw = + RollingSessionWindow::new(sender.clone(), hash, db_params_clone).await.unwrap(); + + let session_info = rsw.session_info.clone(); + let earliest_session = rsw.earliest_session(); + + assert_eq!(earliest_session, 0); + assert_eq!(session_info.len(), 101); + + rsw.db_save(StoredWindow { earliest_session, session_info }); + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(finalized_header.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, finalized_header.number); + let _ = s_tx.send(Ok(Some(finalized_header.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, finalized_header.hash()); + let _ = s_tx.send(Ok(0)); + } + ); + + // Unfinalized chain starts at geneisis block, so session 0 is how far we stretch. + for i in genesis_session..=session { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(i, j); + let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); + } + ); + } + }); + + futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); + + let test_fut = { + Box::pin(async move { + let sender = ctx.sender().clone(); + let res = RollingSessionWindow::new(sender, hash, db_params).await; + let rsw = res.unwrap(); + assert_eq!(rsw.earliest_session, 0); + assert_eq!(rsw.session_info.len(), 101); + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(finalized_header_clone.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, finalized_header_clone.number); + let _ = s_tx.send(Ok(Some(finalized_header_clone.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, finalized_header_clone.hash()); + let _ = s_tx.send(Ok(0)); + } + ); + }); + + futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + } + + #[test] + fn cache_session_fails_for_gap_in_window() { + // Session index of the tip of our fake test chain. + let session: SessionIndex = 100; + let genesis_session: SessionIndex = 0; + + let header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 5, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let finalized_header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 0, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); + + let hash = header.hash(); + + let test_fut = { + let sender = ctx.sender().clone(); + Box::pin(async move { + let res = RollingSessionWindow::new(sender, hash, dummy_db_params()).await; + + assert!(res.is_err()); + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(finalized_header.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, finalized_header.number); + let _ = s_tx.send(Ok(Some(finalized_header.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, finalized_header.hash()); + let _ = s_tx.send(Ok(0)); + } + ); + + // Unfinalized chain starts at geneisis block, so session 0 is how far we stretch. + // First 50 sessions are missing. + for i in genesis_session..=50 { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(i, j); + let _ = s_tx.send(Ok(None)); + } + ); + } + // next 10 sessions are present + for i in 51..=60 { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(i, j); + let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); + } + ); + } + // gap of 1 session + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(61, j); + let _ = s_tx.send(Ok(None)); + } + ); + }); + + futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + } + + #[test] + fn any_session_stretch_with_failure_allowed_for_unfinalized_chain() { + // Session index of the tip of our fake test chain. + let session: SessionIndex = 100; + let genesis_session: SessionIndex = 0; + + let header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 5, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let finalized_header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 0, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); + + let hash = header.hash(); + + let test_fut = { + let sender = ctx.sender().clone(); + Box::pin(async move { + let res = RollingSessionWindow::new(sender, hash, dummy_db_params()).await; + assert!(res.is_ok()); + let rsw = res.unwrap(); + // Since first 50 sessions are missing the earliest should be 50. + assert_eq!(rsw.earliest_session, 50); + assert_eq!(rsw.session_info.len(), 51); + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(finalized_header.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, finalized_header.number); + let _ = s_tx.send(Ok(Some(finalized_header.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, finalized_header.hash()); + let _ = s_tx.send(Ok(0)); + } + ); + + // Unfinalized chain starts at geneisis block, so session 0 is how far we stretch. + // We also test if failure is allowed for 50 first missing sessions. + for i in genesis_session..=session { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(i, j); + + let _ = s_tx.send(Ok(if i < 50 { + None + } else { + Some(dummy_session_info(i)) + })); + } + ); + } + }); + + futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + } + + #[test] + fn any_session_unavailable_for_caching_means_no_change() { + let session: SessionIndex = 6; + let start_session = session.saturating_sub(SESSION_WINDOW_SIZE.get() - 1); + + let header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 5, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let finalized_header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 0, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); + + let hash = header.hash(); + + let test_fut = { + let sender = ctx.sender().clone(); + Box::pin(async move { + let res = RollingSessionWindow::new(sender, hash, dummy_db_params()).await; + assert!(res.is_err()); + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(finalized_header.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, finalized_header.number); + let _ = s_tx.send(Ok(Some(finalized_header.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, finalized_header.hash()); + let _ = s_tx.send(Ok(session)); + } + ); + + for i in start_session..=session { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(j, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(i, j); + + let _ = s_tx.send(Ok(if i == session { + None + } else { + Some(dummy_session_info(i)) + })); + } + ); + } + }); + + futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + } + + #[test] + fn request_session_info_for_genesis() { + let session: SessionIndex = 0; + + let header = Header { + digest: Default::default(), + extrinsics_root: Default::default(), + number: 0, + state_root: Default::default(), + parent_hash: Default::default(), + }; + + let pool = TaskExecutor::new(); + let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); + + let hash = header.hash(); + + let test_fut = { + Box::pin(async move { + let sender = ctx.sender().clone(); + let window = + RollingSessionWindow::new(sender, hash, dummy_db_params()).await.unwrap(); + + assert_eq!(window.earliest_session, session); + assert_eq!(window.session_info, vec![dummy_session_info(session)]); + }) + }; + + let aux_fut = Box::pin(async move { + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, hash); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + s_tx, + )) => { + let _ = s_tx.send(Ok(header.number)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + block_number, + s_tx, + )) => { + assert_eq!(block_number, header.number); + let _ = s_tx.send(Ok(Some(header.hash()))); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionIndexForChild(s_tx), + )) => { + assert_eq!(h, header.hash()); + let _ = s_tx.send(Ok(session)); + } + ); + + assert_matches!( + handle.recv().await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + h, + RuntimeApiRequest::SessionInfo(s, s_tx), + )) => { + assert_eq!(h, hash); + assert_eq!(s, session); + + let _ = s_tx.send(Ok(Some(dummy_session_info(s)))); + } + ); + }); + + futures::executor::block_on(futures::future::join(test_fut, aux_fut)); + } +} diff --git a/node/test/performance-test/Cargo.toml b/node/test/performance-test/Cargo.toml index 0e5800b920e3..70f072c03ae1 100644 --- a/node/test/performance-test/Cargo.toml +++ b/node/test/performance-test/Cargo.toml @@ -6,11 +6,11 @@ edition.workspace = true [dependencies] thiserror = "1.0.31" -quote = "1.0.28" +quote = "1.0.26" env_logger = "0.9" log = "0.4" -polkadot-node-core-pvf-prepare-worker = { path = "../../core/pvf/prepare-worker" } +polkadot-node-core-pvf-worker = { path = "../../core/pvf/worker" } polkadot-erasure-coding = { path = "../../../erasure-coding" } polkadot-node-primitives = { path = "../../primitives" } polkadot-primitives = { path = "../../../primitives" } diff --git a/node/test/performance-test/src/lib.rs b/node/test/performance-test/src/lib.rs index 15073912654a..1afa43cc62ba 100644 --- a/node/test/performance-test/src/lib.rs +++ b/node/test/performance-test/src/lib.rs @@ -65,9 +65,9 @@ pub fn measure_pvf_prepare(wasm_code: &[u8]) -> Result .or(Err(PerfCheckError::CodeDecompressionFailed))?; // Recreate the pipeline from the pvf prepare worker. - let blob = polkadot_node_core_pvf_prepare_worker::prevalidate(code.as_ref()) - .map_err(PerfCheckError::from)?; - polkadot_node_core_pvf_prepare_worker::prepare(blob, &ExecutorParams::default()) + let blob = + polkadot_node_core_pvf_worker::prevalidate(code.as_ref()).map_err(PerfCheckError::from)?; + polkadot_node_core_pvf_worker::prepare(blob, &ExecutorParams::default()) .map_err(PerfCheckError::from)?; Ok(start.elapsed()) diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index 7913d5462338..afd192257636 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -17,10 +17,10 @@ sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } polkadot-core-primitives = { path = "../core-primitives", default-features = false } derive_more = "0.99.11" -bounded-collections = { version = "0.1.7", default-features = false } +bounded-collections = { version = "0.1.5", default-features = false } # all optional crates. -serde = { version = "1.0.163", default-features = false, features = [ "derive" ], optional = true } +serde = { version = "1.0.137", default-features = false, features = [ "derive" ], optional = true } [features] default = ["std"] diff --git a/parachain/test-parachains/adder/build.rs b/parachain/test-parachains/adder/build.rs index 6bb34ead1b86..d6377f3d5a5a 100644 --- a/parachain/test-parachains/adder/build.rs +++ b/parachain/test-parachains/adder/build.rs @@ -17,9 +17,5 @@ use substrate_wasm_builder::WasmBuilder; fn main() { - WasmBuilder::new() - .with_current_project() - .export_heap_base() - .disable_runtime_version_section_check() - .build() + WasmBuilder::new().with_current_project().export_heap_base().build() } diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index c9454787ef1c..081dfd938942 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -34,7 +34,7 @@ sc-service = { git = "https://github.com/paritytech/substrate", branch = "master # This one is tricky. Even though it is not used directly by the collator, we still need it for the # `puppet_worker` binary, which is required for the integration test. However, this shouldn't be # a big problem since it is used transitively anyway. -polkadot-node-core-pvf = { path = "../../../../node/core/pvf" } +polkadot-node-core-pvf-worker = { path = "../../../../node/core/pvf/worker" } [dev-dependencies] polkadot-parachain = { path = "../../.." } diff --git a/parachain/test-parachains/adder/collator/bin/puppet_worker.rs b/parachain/test-parachains/adder/collator/bin/puppet_worker.rs index 7f93519d8454..ddd81971292b 100644 --- a/parachain/test-parachains/adder/collator/bin/puppet_worker.rs +++ b/parachain/test-parachains/adder/collator/bin/puppet_worker.rs @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -polkadot_node_core_pvf::decl_puppet_worker_main!(); +polkadot_node_core_pvf_worker::decl_puppet_worker_main!(); diff --git a/parachain/test-parachains/adder/collator/src/lib.rs b/parachain/test-parachains/adder/collator/src/lib.rs index 02a4598f9e47..4b2b9248de22 100644 --- a/parachain/test-parachains/adder/collator/src/lib.rs +++ b/parachain/test-parachains/adder/collator/src/lib.rs @@ -272,7 +272,7 @@ mod tests { } fn validate_collation(collator: &Collator, parent_head: HeadData, collation: Collation) { - use polkadot_node_core_pvf::testing::validate_candidate; + use polkadot_node_core_pvf_worker::testing::validate_candidate; let block_data = match collation.proof_of_validity { MaybeCompressedPoV::Raw(pov) => pov.block_data, diff --git a/parachain/test-parachains/halt/build.rs b/parachain/test-parachains/halt/build.rs index cb3370c150d4..aabf553cedd9 100644 --- a/parachain/test-parachains/halt/build.rs +++ b/parachain/test-parachains/halt/build.rs @@ -17,11 +17,7 @@ use substrate_wasm_builder::WasmBuilder; fn main() { - WasmBuilder::new() - .with_current_project() - .export_heap_base() - .disable_runtime_version_section_check() - .build(); + WasmBuilder::new().with_current_project().export_heap_base().build(); enable_alloc_error_handler(); } diff --git a/parachain/test-parachains/undying/build.rs b/parachain/test-parachains/undying/build.rs index 6bb34ead1b86..d6377f3d5a5a 100644 --- a/parachain/test-parachains/undying/build.rs +++ b/parachain/test-parachains/undying/build.rs @@ -17,9 +17,5 @@ use substrate_wasm_builder::WasmBuilder; fn main() { - WasmBuilder::new() - .with_current_project() - .export_heap_base() - .disable_runtime_version_section_check() - .build() + WasmBuilder::new().with_current_project().export_heap_base().build() } diff --git a/parachain/test-parachains/undying/collator/Cargo.toml b/parachain/test-parachains/undying/collator/Cargo.toml index 2b9d80401f5d..1b2ccf3be0ca 100644 --- a/parachain/test-parachains/undying/collator/Cargo.toml +++ b/parachain/test-parachains/undying/collator/Cargo.toml @@ -34,7 +34,7 @@ sc-service = { git = "https://github.com/paritytech/substrate", branch = "master # This one is tricky. Even though it is not used directly by the collator, we still need it for the # `puppet_worker` binary, which is required for the integration test. However, this shouldn't be # a big problem since it is used transitively anyway. -polkadot-node-core-pvf = { path = "../../../../node/core/pvf" } +polkadot-node-core-pvf-worker = { path = "../../../../node/core/pvf/worker" } [dev-dependencies] polkadot-parachain = { path = "../../.." } diff --git a/parachain/test-parachains/undying/collator/bin/puppet_worker.rs b/parachain/test-parachains/undying/collator/bin/puppet_worker.rs index 7f93519d8454..ddd81971292b 100644 --- a/parachain/test-parachains/undying/collator/bin/puppet_worker.rs +++ b/parachain/test-parachains/undying/collator/bin/puppet_worker.rs @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -polkadot_node_core_pvf::decl_puppet_worker_main!(); +polkadot_node_core_pvf_worker::decl_puppet_worker_main!(); diff --git a/parachain/test-parachains/undying/collator/src/lib.rs b/parachain/test-parachains/undying/collator/src/lib.rs index 838590fa16f5..dcaf9b63296d 100644 --- a/parachain/test-parachains/undying/collator/src/lib.rs +++ b/parachain/test-parachains/undying/collator/src/lib.rs @@ -354,7 +354,7 @@ mod tests { } fn validate_collation(collator: &Collator, parent_head: HeadData, collation: Collation) { - use polkadot_node_core_pvf::testing::validate_candidate; + use polkadot_node_core_pvf_worker::testing::validate_candidate; let block_data = match collation.proof_of_validity { MaybeCompressedPoV::Raw(pov) => pov.block_data, diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 4274ac9175d7..6ce968230724 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -9,7 +9,7 @@ bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] } hex-literal = "0.4.1" parity-scale-codec = { version = "3.4.0", default-features = false, features = ["bit-vec", "derive"] } scale-info = { version = "2.5.0", default-features = false, features = ["bit-vec", "derive"] } -serde = { version = "1.0.163", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } application-crypto = { package = "sp-application-crypto", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/primitives/src/runtime_api.rs b/primitives/src/runtime_api.rs index 67714476560c..4e15e1fb9338 100644 --- a/primitives/src/runtime_api.rs +++ b/primitives/src/runtime_api.rs @@ -219,24 +219,6 @@ sp_api::decl_runtime_apis! { /// Returns execution parameters for the session. fn session_executor_params(session_index: SessionIndex) -> Option; - /// Returns a list of validators that lost a past session dispute and need to be slashed. - #[api_version(5)] - fn unapplied_slashes() -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)>; - - /// Returns a merkle proof of a validator session key. - #[api_version(5)] - fn key_ownership_proof( - validator_id: ValidatorId, - ) -> Option; - - /// Submit an unsigned extrinsic to slash validators who lost a dispute about - /// a candidate of a past session. - #[api_version(5)] - fn submit_report_dispute_lost( - dispute_proof: vstaging::slashing::DisputeProof, - key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, - ) -> Option<()>; - /***** Asynchronous backing *****/ /// Returns the state of parachain backing for a given para. diff --git a/primitives/src/vstaging/mod.rs b/primitives/src/vstaging/mod.rs index c0910a8ebebd..48d9f2a784f3 100644 --- a/primitives/src/vstaging/mod.rs +++ b/primitives/src/vstaging/mod.rs @@ -18,7 +18,6 @@ // Put any primitives used by staging APIs functions here pub use crate::v4::*; -pub mod slashing; use sp_std::prelude::*; use parity_scale_codec::{Decode, Encode}; diff --git a/primitives/src/vstaging/slashing.rs b/primitives/src/vstaging/slashing.rs deleted file mode 100644 index c5782c7c2ab4..000000000000 --- a/primitives/src/vstaging/slashing.rs +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2017-2023 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Primitives types used for dispute slashing. - -use crate::v4::{CandidateHash, SessionIndex, ValidatorId, ValidatorIndex}; -use parity_scale_codec::{Decode, Encode}; -use scale_info::TypeInfo; -use sp_std::{collections::btree_map::BTreeMap, vec::Vec}; - -/// The kind of the dispute offence. -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, TypeInfo, Debug)] -pub enum SlashingOffenceKind { - /// A severe offence when a validator backed an invalid block. - #[codec(index = 0)] - ForInvalid, - /// A minor offence when a validator disputed a valid block. - #[codec(index = 1)] - AgainstValid, -} - -/// Timeslots should uniquely identify offences and are used for the offence -/// deduplication. -#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Encode, Decode, TypeInfo, Debug)] -pub struct DisputesTimeSlot { - // The order of the fields matters for `derive(Ord)`. - /// Session index when the candidate was backed/included. - pub session_index: SessionIndex, - /// Candidate hash of the disputed candidate. - pub candidate_hash: CandidateHash, -} - -impl DisputesTimeSlot { - /// Create a new instance of `Self`. - pub fn new(session_index: SessionIndex, candidate_hash: CandidateHash) -> Self { - Self { session_index, candidate_hash } - } -} - -/// We store most of the information about a lost dispute on chain. This struct -/// is required to identify and verify it. -#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, Debug)] -pub struct DisputeProof { - /// Time slot when the dispute occured. - pub time_slot: DisputesTimeSlot, - /// The dispute outcome. - pub kind: SlashingOffenceKind, - /// The index of the validator who lost a dispute. - pub validator_index: ValidatorIndex, - /// The parachain session key of the validator. - pub validator_id: ValidatorId, -} - -/// Slashes that are waiting to be applied once we have validator key -/// identification. -#[derive(Encode, Decode, TypeInfo, Debug, Clone)] -pub struct PendingSlashes { - /// Indices and keys of the validators who lost a dispute and are pending - /// slashes. - pub keys: BTreeMap, - /// The dispute outcome. - pub kind: SlashingOffenceKind, -} - -// TODO: can we reuse this type between BABE, GRANDPA and disputes? -/// An opaque type used to represent the key ownership proof at the runtime API -/// boundary. The inner value is an encoded representation of the actual key -/// ownership proof which will be parameterized when defining the runtime. At -/// the runtime API boundary this type is unknown and as such we keep this -/// opaque representation, implementors of the runtime API will have to make -/// sure that all usages of `OpaqueKeyOwnershipProof` refer to the same type. -#[derive(Decode, Encode, PartialEq, Eq, Debug, Clone, TypeInfo)] -pub struct OpaqueKeyOwnershipProof(Vec); -impl OpaqueKeyOwnershipProof { - /// Create a new `OpaqueKeyOwnershipProof` using the given encoded - /// representation. - pub fn new(inner: Vec) -> OpaqueKeyOwnershipProof { - OpaqueKeyOwnershipProof(inner) - } - - /// Try to decode this `OpaqueKeyOwnershipProof` into the given concrete key - /// ownership proof type. - pub fn decode(self) -> Option { - Decode::decode(&mut &self.0[..]).ok() - } -} diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 64a19394918b..517b600eeea6 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.163", default-features = false } +serde = { version = "1.0.139", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" diff --git a/runtime/common/src/claims.rs b/runtime/common/src/claims.rs index fe6b54535396..b598d2ea0ef0 100644 --- a/runtime/common/src/claims.rs +++ b/runtime/common/src/claims.rs @@ -20,7 +20,6 @@ use frame_support::{ ensure, traits::{Currency, Get, IsSubType, VestingSchedule}, weights::Weight, - DefaultNoBound, }; pub use pallet::*; use parity_scale_codec::{Decode, Encode}; @@ -29,8 +28,10 @@ use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{self, Deserialize, Deserializer, Serialize, Serializer}; use sp_io::{crypto::secp256k1_ecdsa_recover, hashing::keccak_256}; +#[cfg(feature = "std")] +use sp_runtime::traits::Zero; use sp_runtime::{ - traits::{CheckedSub, DispatchInfoOf, SignedExtension, Zero}, + traits::{CheckedSub, DispatchInfoOf, SignedExtension}, transaction_validity::{ InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction, }, @@ -228,13 +229,19 @@ pub mod pallet { pub(super) type Preclaims = StorageMap<_, Identity, T::AccountId, EthereumAddress>; #[pallet::genesis_config] - #[derive(DefaultNoBound)] pub struct GenesisConfig { pub claims: Vec<(EthereumAddress, BalanceOf, Option, Option)>, pub vesting: Vec<(EthereumAddress, (BalanceOf, BalanceOf, T::BlockNumber))>, } + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { claims: Default::default(), vesting: Default::default() } + } + } + #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 729a3d6f90af..8653e6f19123 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -195,6 +195,7 @@ pub mod pallet { pub next_free_para_id: ParaId, } + #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { GenesisConfig { next_free_para_id: LOWEST_PUBLIC_ID } diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index b317cc9e88da..acb58ee96513 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.163", default-features = false } +serde = { version = "1.0.139", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" diff --git a/runtime/kusama/src/weights/runtime_parachains_configuration.rs b/runtime/kusama/src/weights/runtime_parachains_configuration.rs index 8fa5b6e33393..109cbcce1a8d 100644 --- a/runtime/kusama/src/weights/runtime_parachains_configuration.rs +++ b/runtime/kusama/src/weights/runtime_parachains_configuration.rs @@ -17,26 +17,24 @@ //! Autogenerated weights for `runtime_parachains::configuration` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-05-30, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-04-28, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 1024 // Executed Command: -// target/production/polkadot +// ./target/production/polkadot // benchmark // pallet +// --chain=kusama-dev // --steps=50 // --repeat=20 +// --pallet=runtime_parachains::configuration // --extrinsic=* // --execution=wasm // --wasm-execution=compiled -// --heap-pages=4096 -// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/polkadot/.git/.artifacts/bench.json -// --pallet=runtime_parachains::configuration -// --chain=kusama-dev // --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ +// --output=./runtime/kusama/src/weights/runtime_parachains_configuration.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -57,11 +55,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_block_number() -> Weight { // Proof Size summary in bytes: - // Measured: `127` - // Estimated: `1612` - // Minimum execution time: 9_471_000 picoseconds. - Weight::from_parts(9_872_000, 0) - .saturating_add(Weight::from_parts(0, 1612)) + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 9_482_000 picoseconds. + Weight::from_parts(9_845_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -73,11 +71,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_u32() -> Weight { // Proof Size summary in bytes: - // Measured: `127` - // Estimated: `1612` - // Minimum execution time: 9_555_000 picoseconds. - Weight::from_parts(9_800_000, 0) - .saturating_add(Weight::from_parts(0, 1612)) + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 9_689_000 picoseconds. + Weight::from_parts(9_960_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -89,11 +87,27 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_option_u32() -> Weight { // Proof Size summary in bytes: - // Measured: `127` - // Estimated: `1612` - // Minimum execution time: 9_623_000 picoseconds. - Weight::from_parts(9_832_000, 0) - .saturating_add(Weight::from_parts(0, 1612)) + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 9_523_000 picoseconds. + Weight::from_parts(9_736_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: Configuration PendingConfigs (r:1 w:1) + /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) + /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) + /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) + fn set_config_with_weight() -> Weight { + // Proof Size summary in bytes: + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 9_443_000 picoseconds. + Weight::from_parts(9_679_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -115,11 +129,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_balance() -> Weight { // Proof Size summary in bytes: - // Measured: `127` - // Estimated: `1612` - // Minimum execution time: 9_482_000 picoseconds. - Weight::from_parts(9_797_000, 0) - .saturating_add(Weight::from_parts(0, 1612)) + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 9_460_000 picoseconds. + Weight::from_parts(9_716_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -131,11 +145,11 @@ impl runtime_parachains::configuration::WeightInfo for /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) fn set_config_with_executor_params() -> Weight { // Proof Size summary in bytes: - // Measured: `127` - // Estimated: `1612` - // Minimum execution time: 10_753_000 picoseconds. - Weight::from_parts(11_009_000, 0) - .saturating_add(Weight::from_parts(0, 1612)) + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 10_279_000 picoseconds. + Weight::from_parts(10_615_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 31e9bdfc89dc..e1b5b5b1de59 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -10,7 +10,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.163", features = [ "derive" ], optional = true } +serde = { version = "1.0.139", features = [ "derive" ], optional = true } derive_more = "0.99.17" bitflags = "1.3.2" diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index ff41acddbf7f..62efc095334d 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -19,7 +19,7 @@ //! Configuration can change only at session boundaries and is buffered until then. use crate::{inclusion::MAX_UPWARD_MESSAGE_SIZE_BOUND, shared}; -use frame_support::{pallet_prelude::*, DefaultNoBound}; +use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::{MAX_HORIZONTAL_MESSAGE_NUM, MAX_UPWARD_MESSAGE_NUM}; @@ -440,6 +440,7 @@ pub trait WeightInfo { fn set_config_with_block_number() -> Weight; fn set_config_with_u32() -> Weight; fn set_config_with_option_u32() -> Weight; + fn set_config_with_weight() -> Weight; fn set_config_with_balance() -> Weight; fn set_hrmp_open_request_ttl() -> Weight; fn set_config_with_executor_params() -> Weight; @@ -456,6 +457,9 @@ impl WeightInfo for TestWeightInfo { fn set_config_with_option_u32() -> Weight { Weight::MAX } + fn set_config_with_weight() -> Weight { + Weight::MAX + } fn set_config_with_balance() -> Weight { Weight::MAX } @@ -523,11 +527,17 @@ pub mod pallet { pub(crate) type BypassConsistencyCheck = StorageValue<_, bool, ValueQuery>; #[pallet::genesis_config] - #[derive(DefaultNoBound)] pub struct GenesisConfig { pub config: HostConfiguration, } + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { config: Default::default() } + } + } + #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { diff --git a/runtime/parachains/src/disputes/slashing.rs b/runtime/parachains/src/disputes/slashing.rs index daf10814df0f..58b452d6db07 100644 --- a/runtime/parachains/src/disputes/slashing.rs +++ b/runtime/parachains/src/disputes/slashing.rs @@ -49,10 +49,8 @@ use frame_support::{ weights::Weight, }; -use primitives::{ - vstaging::slashing::{DisputeProof, DisputesTimeSlot, PendingSlashes, SlashingOffenceKind}, - CandidateHash, SessionIndex, ValidatorId, ValidatorIndex, -}; +use parity_scale_codec::{Decode, Encode}; +use primitives::{CandidateHash, SessionIndex, ValidatorId, ValidatorIndex}; use scale_info::TypeInfo; use sp_runtime::{ traits::Convert, @@ -60,12 +58,15 @@ use sp_runtime::{ InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity, TransactionValidityError, ValidTransaction, }, - KeyTypeId, Perbill, + KeyTypeId, Perbill, RuntimeDebug, }; use sp_session::{GetSessionNumber, GetValidatorCount}; use sp_staking::offence::{DisableStrategy, Kind, Offence, OffenceError, ReportOffence}; use sp_std::{ - collections::{btree_map::Entry, btree_set::BTreeSet}, + collections::{ + btree_map::{BTreeMap, Entry}, + btree_set::BTreeSet, + }, prelude::*, }; @@ -91,8 +92,23 @@ impl BenchmarkingConfiguration for BenchConfig { const MAX_VALIDATORS: u32 = M; } +/// Timeslots should uniquely identify offences and are used for the offence +/// deduplication. +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] +pub struct DisputesTimeSlot { + // The order of these matters for `derive(Ord)`. + session_index: SessionIndex, + candidate_hash: CandidateHash, +} + +impl DisputesTimeSlot { + pub fn new(session_index: SessionIndex, candidate_hash: CandidateHash) -> Self { + Self { session_index, candidate_hash } + } +} + /// An offence that is filed when a series of validators lost a dispute. -#[derive(TypeInfo)] +#[derive(RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(Clone, PartialEq, Eq))] pub struct SlashingOffence { /// The size of the validator set in that session. @@ -307,6 +323,39 @@ where } } +#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug, TypeInfo)] +pub enum SlashingOffenceKind { + #[codec(index = 0)] + ForInvalid, + #[codec(index = 1)] + AgainstValid, +} + +/// We store most of the information about a lost dispute on chain. This struct +/// is required to identify and verify it. +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] +pub struct DisputeProof { + /// Time slot when the dispute occured. + pub time_slot: DisputesTimeSlot, + /// The dispute outcome. + pub kind: SlashingOffenceKind, + /// The index of the validator who lost a dispute. + pub validator_index: ValidatorIndex, + /// The parachain session key of the validator. + pub validator_id: ValidatorId, +} + +/// Slashes that are waiting to be applied once we have validator key +/// identification. +#[derive(Encode, Decode, RuntimeDebug, TypeInfo)] +pub struct PendingSlashes { + /// Indices and keys of the validators who lost a dispute and are pending + /// slashes. + pub keys: BTreeMap, + /// The dispute outcome. + pub kind: SlashingOffenceKind, +} + /// A trait that defines methods to report an offence (after the slashing report /// has been validated) and for submitting a transaction to report a slash (from /// an offchain context). @@ -554,17 +603,6 @@ impl Pallet { let old_session = session_index - config.dispute_period - 1; let _ = >::clear_prefix(old_session, REMOVE_LIMIT, None); } - - pub(crate) fn unapplied_slashes() -> Vec<(SessionIndex, CandidateHash, PendingSlashes)> { - >::iter().collect() - } - - pub(crate) fn submit_unsigned_slashing_report( - dispute_proof: DisputeProof, - key_ownership_proof: ::KeyOwnerProof, - ) -> Option<()> { - T::HandleReports::submit_unsigned_slashing_report(dispute_proof, key_ownership_proof).ok() - } } /// Methods for the `ValidateUnsigned` implementation: diff --git a/runtime/parachains/src/disputes/slashing/benchmarking.rs b/runtime/parachains/src/disputes/slashing/benchmarking.rs index 4debc41d3306..d7f2eeed1ac4 100644 --- a/runtime/parachains/src/disputes/slashing/benchmarking.rs +++ b/runtime/parachains/src/disputes/slashing/benchmarking.rs @@ -21,7 +21,6 @@ use frame_benchmarking::{benchmarks, whitelist_account}; use frame_support::traits::{OnFinalize, OnInitialize}; use frame_system::RawOrigin; use pallet_staking::testing_utils::create_validators; -use parity_scale_codec::Decode; use primitives::{Hash, PARACHAIN_KEY_TYPE_ID}; use sp_runtime::traits::{One, StaticLookup}; use sp_session::MembershipProof; diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index 77b20ce171fd..12ef3a6384e9 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -18,7 +18,7 @@ use crate::{ configuration::{self, HostConfiguration}, dmp, ensure_parachain, initializer, paras, }; -use frame_support::{pallet_prelude::*, traits::ReservableCurrency, DefaultNoBound}; +use frame_support::{pallet_prelude::*, traits::ReservableCurrency}; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::HorizontalMessages; @@ -435,11 +435,17 @@ pub mod pallet { /// configuration pallet. /// 2. `sender` and `recipient` must be valid paras. #[pallet::genesis_config] - #[derive(DefaultNoBound)] pub struct GenesisConfig { preopen_hrmp_channels: Vec<(ParaId, ParaId, u32, u32)>, } + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { preopen_hrmp_channels: Default::default() } + } + } + #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { @@ -615,6 +621,7 @@ pub mod pallet { } } +#[cfg(feature = "std")] fn initialize_storage(preopen_hrmp_channels: &[(ParaId, ParaId, u32, u32)]) { let host_config = configuration::Pallet::::config(); for &(sender, recipient, max_capacity, max_message_size) in preopen_hrmp_channels { @@ -627,6 +634,7 @@ fn initialize_storage(preopen_hrmp_channels: &[(ParaId, ParaId, u32, >::process_hrmp_open_channel_requests(&host_config); } +#[cfg(feature = "std")] fn preopen_hrmp_channel( sender: ParaId, recipient: ParaId, diff --git a/runtime/parachains/src/paras/mod.rs b/runtime/parachains/src/paras/mod.rs index 309f15537eb9..26d94f4a908c 100644 --- a/runtime/parachains/src/paras/mod.rs +++ b/runtime/parachains/src/paras/mod.rs @@ -115,7 +115,7 @@ use crate::{ shared, }; use bitvec::{order::Lsb0 as BitOrderLsb0, vec::BitVec}; -use frame_support::{pallet_prelude::*, traits::EstimateNextSessionRotation, DefaultNoBound}; +use frame_support::{pallet_prelude::*, traits::EstimateNextSessionRotation}; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use primitives::{ @@ -784,11 +784,17 @@ pub mod pallet { StorageMap<_, Identity, ValidationCodeHash, ValidationCode>; #[pallet::genesis_config] - #[derive(DefaultNoBound)] pub struct GenesisConfig { pub paras: Vec<(ParaId, ParaGenesisArgs)>, } + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { paras: Default::default() } + } + } + #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { diff --git a/runtime/parachains/src/runtime_api_impl/vstaging.rs b/runtime/parachains/src/runtime_api_impl/vstaging.rs index 82c1fc1a712f..8548f4dff5c2 100644 --- a/runtime/parachains/src/runtime_api_impl/vstaging.rs +++ b/runtime/parachains/src/runtime_api_impl/vstaging.rs @@ -16,42 +16,16 @@ //! Put implementations of functions from staging APIs here. -use crate::{configuration, disputes, dmp, hrmp, inclusion, initializer, paras, shared}; +use crate::{configuration, dmp, hrmp, inclusion, initializer, paras, shared}; use primitives::{ - vstaging, vstaging::{ AsyncBackingParams, BackingState, CandidatePendingAvailability, Constraints, InboundHrmpLimitations, OutboundHrmpChannelLimitations, }, - CandidateHash, DisputeState, Id as ParaId, SessionIndex, + Id as ParaId, }; use sp_std::prelude::*; -/// Implementation for `get_session_disputes` function from the runtime API -pub fn get_session_disputes( -) -> Vec<(SessionIndex, CandidateHash, DisputeState)> { - >::disputes() -} - -/// Implementation of `unapplied_slashes` runtime API -pub fn unapplied_slashes( -) -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)> { - >::unapplied_slashes() -} - -/// Implementation of `submit_report_dispute_lost` runtime API -pub fn submit_unsigned_slashing_report( - dispute_proof: vstaging::slashing::DisputeProof, - key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, -) -> Option<()> { - let key_ownership_proof = key_ownership_proof.decode()?; - - >::submit_unsigned_slashing_report( - dispute_proof, - key_ownership_proof, - ) -} - /// Implementation for `StagingParaBackingState` function from the runtime API pub fn backing_state( para_id: ParaId, diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index e287ab3646ee..5e59c22c984d 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.163", default-features = false } +serde = { version = "1.0.139", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" diff --git a/runtime/polkadot/src/weights/runtime_parachains_configuration.rs b/runtime/polkadot/src/weights/runtime_parachains_configuration.rs index 292b8916dad0..f1ae7bbad4e0 100644 --- a/runtime/polkadot/src/weights/runtime_parachains_configuration.rs +++ b/runtime/polkadot/src/weights/runtime_parachains_configuration.rs @@ -101,7 +101,24 @@ impl runtime_parachains::configuration::WeightInfo for .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(1)) } - + /// Storage: Configuration PendingConfigs (r:1 w:1) + /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Configuration ActiveConfig (r:1 w:0) + /// Proof Skipped: Configuration ActiveConfig (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) + /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) + /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) + fn set_config_with_weight() -> Weight { + // Proof Size summary in bytes: + // Measured: `393` + // Estimated: `1878` + // Minimum execution time: 12_999_000 picoseconds. + Weight::from_parts(13_465_000, 0) + .saturating_add(Weight::from_parts(0, 1878)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(1)) + } /// Storage: Benchmark Override (r:0 w:0) /// Proof Skipped: Benchmark Override (max_values: None, max_size: None, mode: Measured) fn set_hrmp_open_request_ttl() -> Weight { diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 3b39756e3b40..a6d00060d939 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -9,7 +9,7 @@ edition.workspace = true parity-scale-codec = { version = "3.4.0", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.163", default-features = false } +serde = { version = "1.0.139", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 77060d96e0ab..03567318e226 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -23,11 +23,11 @@ use pallet_nis::WithMaximumOf; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::{ - vstaging, AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, + AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, Moment, Nonce, OccupiedCoreAssumption, PersistedValidationData, ScrapedOnChainVotes, SessionInfo, Signature, - ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, PARACHAIN_KEY_TYPE_ID, + ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, }; use runtime_common::{ assigned_slots, auctions, claims, crowdloan, impl_runtime_weights, impls::ToAuthor, @@ -1909,31 +1909,6 @@ sp_api::impl_runtime_apis! { parachains_runtime_api_impl::get_session_disputes::() } - fn unapplied_slashes( - ) -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)> { - runtime_parachains::runtime_api_impl::vstaging::unapplied_slashes::() - } - - fn key_ownership_proof( - validator_id: ValidatorId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((PARACHAIN_KEY_TYPE_ID, validator_id)) - .map(|p| p.encode()) - .map(vstaging::slashing::OpaqueKeyOwnershipProof::new) - } - - fn submit_report_dispute_lost( - dispute_proof: vstaging::slashing::DisputeProof, - key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, - ) -> Option<()> { - runtime_parachains::runtime_api_impl::vstaging::submit_unsigned_slashing_report::( - dispute_proof, - key_ownership_proof, - ) - } - fn staging_para_backing_state(para_id: ParaId) -> Option { runtime_parachains::runtime_api_impl::vstaging::backing_state::(para_id) } diff --git a/runtime/rococo/src/weights/runtime_parachains_configuration.rs b/runtime/rococo/src/weights/runtime_parachains_configuration.rs index 11effbc4e63e..fcc8ed4840c8 100644 --- a/runtime/rococo/src/weights/runtime_parachains_configuration.rs +++ b/runtime/rococo/src/weights/runtime_parachains_configuration.rs @@ -101,7 +101,24 @@ impl runtime_parachains::configuration::WeightInfo for .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(1)) } - + /// Storage: Configuration PendingConfigs (r:1 w:1) + /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Configuration ActiveConfig (r:1 w:0) + /// Proof Skipped: Configuration ActiveConfig (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) + /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) + /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) + fn set_config_with_weight() -> Weight { + // Proof Size summary in bytes: + // Measured: `397` + // Estimated: `1882` + // Minimum execution time: 12_914_000 picoseconds. + Weight::from_parts(13_395_000, 0) + .saturating_add(Weight::from_parts(0, 1882)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(1)) + } /// Storage: Benchmark Override (r:0 w:0) /// Proof Skipped: Benchmark Override (max_values: None, max_size: None, mode: Measured) fn set_hrmp_open_request_ttl() -> Weight { diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index 73bd3ab3688d..b5b2d2289437 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.163", default-features = false } +serde = { version = "1.0.139", default-features = false } serde_derive = { version = "1.0.117", optional = true } smallvec = "1.8.0" diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index a361a2a6ec5c..767f8bda68d7 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -546,7 +546,6 @@ pub mod pallet_test_notifier { use pallet_xcm::ensure_response; use sp_runtime::DispatchResult; use xcm::latest::prelude::*; - use xcm_executor::traits::QueryHandler as XcmQueryHandler; #[pallet::pallet] pub struct Pallet(_); @@ -582,7 +581,7 @@ pub mod pallet_test_notifier { let id = who .using_encoded(|mut d| <[u8; 32]>::decode(&mut d)) .map_err(|_| Error::::BadAccountFormat)?; - let qid = as XcmQueryHandler>::new_query( + let qid = pallet_xcm::Pallet::::new_query( Junction::AccountId32 { network: None, id }, 100u32.into(), Here, diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index bcc406a7c2a2..08a8ca23a55a 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -11,7 +11,7 @@ parity-scale-codec = { version = "3.4.0", default-features = false, features = [ scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.163", default-features = false } +serde = { version = "1.0.139", default-features = false } serde_derive = { version = "1.0.117", optional = true } smallvec = "1.8.0" diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 0cf7d2a1737d..9101fd5a8e38 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -39,12 +39,12 @@ use pallet_session::historical as session_historical; use pallet_transaction_payment::{CurrencyAdapter, FeeDetails, RuntimeDispatchInfo}; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::{ - vstaging, AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, + AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, Moment, Nonce, OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionInfo, Signature, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, - ValidatorSignature, PARACHAIN_KEY_TYPE_ID, + ValidatorSignature, }; use runtime_common::{ assigned_slots, auctions, crowdloan, elections::OnChainAccuracy, impl_runtime_weights, @@ -58,9 +58,7 @@ use runtime_parachains::{ inclusion::{AggregateMessageOrigin, UmpQueueId}, initializer as parachains_initializer, origin as parachains_origin, paras as parachains_paras, paras_inherent as parachains_paras_inherent, reward_points as parachains_reward_points, - runtime_api_impl::{ - v4 as parachains_runtime_api_impl, vstaging as parachains_runtime_api_impl_staging, - }, + runtime_api_impl::v4 as parachains_runtime_api_impl, scheduler as parachains_scheduler, session_info as parachains_session_info, shared as parachains_shared, }; @@ -1583,31 +1581,6 @@ sp_api::impl_runtime_apis! { parachains_runtime_api_impl::get_session_disputes::() } - fn unapplied_slashes( - ) -> Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)> { - parachains_runtime_api_impl_staging::unapplied_slashes::() - } - - fn key_ownership_proof( - validator_id: ValidatorId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((PARACHAIN_KEY_TYPE_ID, validator_id)) - .map(|p| p.encode()) - .map(vstaging::slashing::OpaqueKeyOwnershipProof::new) - } - - fn submit_report_dispute_lost( - dispute_proof: vstaging::slashing::DisputeProof, - key_ownership_proof: vstaging::slashing::OpaqueKeyOwnershipProof, - ) -> Option<()> { - parachains_runtime_api_impl_staging::submit_unsigned_slashing_report::( - dispute_proof, - key_ownership_proof, - ) - } - fn staging_para_backing_state(para_id: ParaId) -> Option { runtime_parachains::runtime_api_impl::vstaging::backing_state::(para_id) } diff --git a/runtime/westend/src/weights/runtime_parachains_configuration.rs b/runtime/westend/src/weights/runtime_parachains_configuration.rs index ec769bb2fa15..aaa7536bdd3d 100644 --- a/runtime/westend/src/weights/runtime_parachains_configuration.rs +++ b/runtime/westend/src/weights/runtime_parachains_configuration.rs @@ -95,7 +95,22 @@ impl runtime_parachains::configuration::WeightInfo for .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } - + /// Storage: Configuration PendingConfigs (r:1 w:1) + /// Proof Skipped: Configuration PendingConfigs (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Configuration BypassConsistencyCheck (r:1 w:0) + /// Proof Skipped: Configuration BypassConsistencyCheck (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: ParasShared CurrentSessionIndex (r:1 w:0) + /// Proof Skipped: ParasShared CurrentSessionIndex (max_values: Some(1), max_size: None, mode: Measured) + fn set_config_with_weight() -> Weight { + // Proof Size summary in bytes: + // Measured: `90` + // Estimated: `1575` + // Minimum execution time: 10_293_000 picoseconds. + Weight::from_parts(10_619_000, 0) + .saturating_add(Weight::from_parts(0, 1575)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(1)) + } /// Storage: Benchmark Override (r:0 w:0) /// Proof Skipped: Benchmark Override (max_values: None, max_size: None, mode: Measured) fn set_hrmp_open_request_ttl() -> Weight { diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 1f2d0c1c8acf..081b4648416f 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -15,7 +15,7 @@ tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } jsonrpsee = { version = "0.16.2", features = ["ws-client", "macros"] } log = "0.4.17" paste = "1.0.7" -serde = "1.0.163" +serde = "1.0.137" serde_json = "1.0" thiserror = "1.0.31" tokio = { version = "1.24.2", features = ["macros", "rt-multi-thread", "sync"] } diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index ce3ec331b151..e2a123a16680 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -6,14 +6,14 @@ authors.workspace = true edition.workspace = true [dependencies] -bounded-collections = { version = "0.1.7", default-features = false } +bounded-collections = { version = "0.1.5", default-features = false } derivative = { version = "2.2.0", default-features = false, features = [ "use_core" ] } impl-trait-for-tuples = "0.2.2" log = { version = "0.4.17", default-features = false } parity-scale-codec = { version = "3.4.0", default-features = false, features = [ "derive", "max-encoded-len" ] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } sp-weights = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -serde = { version = "1.0.163", optional = true, features = ["derive"] } +serde = { version = "1.0.136", optional = true, features = ["derive"] } xcm-procedural = { path = "procedural" } [dev-dependencies] diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml index 9ebd11228b21..dd58b0bf903a 100644 --- a/xcm/pallet-xcm/Cargo.toml +++ b/xcm/pallet-xcm/Cargo.toml @@ -6,10 +6,10 @@ version.workspace = true [dependencies] -bounded-collections = { version = "0.1.7", default-features = false } +bounded-collections = { version = "0.1.5", default-features = false } codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false, features = ["derive"] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.163", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } log = { version = "0.4.17", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 61243c7d682b..041e76b2f69f 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -52,8 +52,8 @@ use frame_system::pallet_prelude::*; pub use pallet::*; use xcm_executor::{ traits::{ - CheckSuspension, ClaimAssets, DropAssets, MatchesFungible, OnResponse, QueryHandler, - QueryResponseStatus, VersionChangeNotifier, WeightBounds, + CheckSuspension, ClaimAssets, DropAssets, MatchesFungible, OnResponse, + VersionChangeNotifier, WeightBounds, }, Assets, }; @@ -638,6 +638,7 @@ pub mod pallet { pub safe_xcm_version: Option, } + #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { Self { safe_xcm_version: Some(XCM_VERSION) } @@ -1126,66 +1127,6 @@ pub mod pallet { /// The maximum number of distinct assets allowed to be transferred in a single helper extrinsic. const MAX_ASSETS_FOR_TRANSFER: usize = 2; -impl QueryHandler for Pallet { - type QueryId = u64; - type BlockNumber = T::BlockNumber; - type Error = XcmError; - type UniversalLocation = T::UniversalLocation; - - /// Attempt to create a new query ID and register it as a query that is yet to respond. - fn new_query( - responder: impl Into, - timeout: T::BlockNumber, - match_querier: impl Into, - ) -> Self::QueryId { - Self::do_new_query(responder, None, timeout, match_querier).into() - } - - /// To check the status of the query, use `fn query()` passing the resultant `QueryId` - /// value. - fn report_outcome( - message: &mut Xcm<()>, - responder: impl Into, - timeout: Self::BlockNumber, - ) -> Result { - let responder = responder.into(); - let destination = Self::UniversalLocation::get() - .invert_target(&responder) - .map_err(|()| XcmError::LocationNotInvertible)?; - let query_id = Self::new_query(responder, timeout, Here); - let response_info = QueryResponseInfo { destination, query_id, max_weight: Weight::zero() }; - let report_error = Xcm(vec![ReportError(response_info)]); - message.0.insert(0, SetAppendix(report_error)); - Ok(query_id) - } - - /// Removes response when ready and emits [Event::ResponseTaken] event. - fn take_response(query_id: Self::QueryId) -> QueryResponseStatus { - match Queries::::get(query_id) { - Some(QueryStatus::Ready { response, at }) => match response.try_into() { - Ok(response) => { - Queries::::remove(query_id); - Self::deposit_event(Event::ResponseTaken { query_id }); - QueryResponseStatus::Ready { response, at } - }, - Err(_) => QueryResponseStatus::UnexpectedVersion, - }, - Some(QueryStatus::Pending { timeout, .. }) => QueryResponseStatus::Pending { timeout }, - Some(_) => QueryResponseStatus::UnexpectedVersion, - None => QueryResponseStatus::NotFound, - } - } - - #[cfg(feature = "runtime-benchmarks")] - fn expect_response(id: Self::QueryId, response: Response) { - let response = response.into(); - Queries::::insert( - id, - QueryStatus::Ready { response, at: frame_system::Pallet::::block_number() }, - ); - } -} - impl Pallet { fn do_reserve_transfer_assets( origin: OriginFor, @@ -1557,6 +1498,36 @@ impl Pallet { }) } + /// Consume `message` and return another which is equivalent to it except that it reports + /// back the outcome. + /// + /// - `message`: The message whose outcome should be reported. + /// - `responder`: The origin from which a response should be expected. + /// - `timeout`: The block number after which it is permissible for `notify` not to be + /// called even if a response is received. + /// + /// `report_outcome` may return an error if the `responder` is not invertible. + /// + /// It is assumed that the querier of the response will be `Here`. + /// + /// To check the status of the query, use `fn query()` passing the resultant `QueryId` + /// value. + pub fn report_outcome( + message: &mut Xcm<()>, + responder: impl Into, + timeout: T::BlockNumber, + ) -> Result { + let responder = responder.into(); + let destination = T::UniversalLocation::get() + .invert_target(&responder) + .map_err(|()| XcmError::LocationNotInvertible)?; + let query_id = Self::new_query(responder, timeout, Here); + let response_info = QueryResponseInfo { destination, query_id, max_weight: Weight::zero() }; + let report_error = Xcm(vec![ReportError(response_info)]); + message.0.insert(0, SetAppendix(report_error)); + Ok(query_id) + } + /// Consume `message` and return another which is equivalent to it except that it reports /// back the outcome and dispatches `notify` on this chain. /// @@ -1598,6 +1569,15 @@ impl Pallet { Ok(()) } + /// Attempt to create a new query ID and register it as a query that is yet to respond. + pub fn new_query( + responder: impl Into, + timeout: T::BlockNumber, + match_querier: impl Into, + ) -> u64 { + Self::do_new_query(responder, None, timeout, match_querier) + } + /// Attempt to create a new query ID and register it as a query that is yet to respond, and /// which will call a dispatchable when a response happens. pub fn new_notify_query( @@ -1612,6 +1592,20 @@ impl Pallet { Self::do_new_query(responder, Some(notify), timeout, match_querier) } + /// Attempt to remove and return the response of query with ID `query_id`. + /// + /// Returns `None` if the response is not (yet) available. + pub fn take_response(query_id: QueryId) -> Option<(Response, T::BlockNumber)> { + if let Some(QueryStatus::Ready { response, at }) = Queries::::get(query_id) { + let response = response.try_into().ok()?; + Queries::::remove(query_id); + Self::deposit_event(Event::ResponseTaken { query_id }); + Some((response, at)) + } else { + None + } + } + /// Note that a particular destination to whom we would like to send a message is unknown /// and queue it for version discovery. fn note_unknown_version(dest: &MultiLocation) { diff --git a/xcm/pallet-xcm/src/mock.rs b/xcm/pallet-xcm/src/mock.rs index 6cfc1447e2b4..de3f8d4957a3 100644 --- a/xcm/pallet-xcm/src/mock.rs +++ b/xcm/pallet-xcm/src/mock.rs @@ -50,7 +50,6 @@ pub mod pallet_test_notifier { use frame_system::pallet_prelude::*; use sp_runtime::DispatchResult; use xcm::latest::prelude::*; - use xcm_executor::traits::QueryHandler; #[pallet::pallet] pub struct Pallet(_); @@ -86,7 +85,7 @@ pub mod pallet_test_notifier { let id = who .using_encoded(|mut d| <[u8; 32]>::decode(&mut d)) .map_err(|_| Error::::BadAccountFormat)?; - let qid = as QueryHandler>::new_query( + let qid = crate::Pallet::::new_query( Junction::AccountId32 { network: None, id }, 100u32.into(), querier, diff --git a/xcm/pallet-xcm/src/tests.rs b/xcm/pallet-xcm/src/tests.rs index 2ad13dced936..6415fe03d895 100644 --- a/xcm/pallet-xcm/src/tests.rs +++ b/xcm/pallet-xcm/src/tests.rs @@ -28,7 +28,7 @@ use sp_runtime::traits::{AccountIdConversion, BlakeTwo256, Hash}; use xcm::{latest::QueryResponseInfo, prelude::*}; use xcm_builder::AllowKnownQueryResponses; use xcm_executor::{ - traits::{Properties, QueryHandler, QueryResponseStatus, ShouldExecute}, + traits::{Properties, ShouldExecute}, XcmExecutor, }; @@ -170,8 +170,7 @@ fn report_outcome_works() { }) ); - let response = - QueryResponseStatus::Ready { response: Response::ExecutionResult(None), at: 1 }; + let response = Some((Response::ExecutionResult(None), 1)); assert_eq!(XcmPallet::take_response(0), response); }); } @@ -271,8 +270,7 @@ fn custom_querier_works() { }) ); - let response = - QueryResponseStatus::Ready { response: Response::ExecutionResult(None), at: 1 }; + let response = Some((Response::ExecutionResult(None), 1)); assert_eq!(XcmPallet::take_response(0), response); }); } diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index dc56695043ca..4da7ac1e2223 100644 --- a/xcm/procedural/Cargo.toml +++ b/xcm/procedural/Cargo.toml @@ -9,6 +9,6 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.56" -quote = "1.0.28" +quote = "1.0.26" syn = "2.0.15" Inflector = "0.11.4" diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index 465d338fd0a7..6f4a4f9dde14 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -36,8 +36,7 @@ polkadot-test-runtime = { path = "../../runtime/test-runtime" } default = ["std"] runtime-benchmarks = [ "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "xcm-executor/runtime-benchmarks", + "frame-system/runtime-benchmarks" ] std = [ "log/std", diff --git a/xcm/xcm-builder/src/lib.rs b/xcm/xcm-builder/src/lib.rs index 124e83d3c338..9ff37209c015 100644 --- a/xcm/xcm-builder/src/lib.rs +++ b/xcm/xcm-builder/src/lib.rs @@ -28,9 +28,8 @@ pub mod test_utils; mod location_conversion; pub use location_conversion::{ - Account32Hash, AccountId32Aliases, AccountKey20Aliases, AliasesIntoAccountId32, - ChildParachainConvertsVia, GlobalConsensusParachainConvertsFor, ParentIsPreset, - SiblingParachainConvertsVia, + Account32Hash, AccountId32Aliases, AccountKey20Aliases, ChildParachainConvertsVia, + GlobalConsensusParachainConvertsFor, ParentIsPreset, SiblingParachainConvertsVia, }; mod origin_conversion; @@ -96,6 +95,3 @@ pub use universal_exports::{ ExporterFor, HaulBlob, HaulBlobError, HaulBlobExporter, NetworkExportTable, SovereignPaidRemoteExporter, UnpaidLocalExporter, UnpaidRemoteExporter, }; - -mod pay; -pub use pay::{FixedLocation, LocatableAssetId, PayAccountId32OnChainOverXcm, PayOverXcm}; diff --git a/xcm/xcm-builder/src/location_conversion.rs b/xcm/xcm-builder/src/location_conversion.rs index bafec5da4a30..66c9fc6dd31d 100644 --- a/xcm/xcm-builder/src/location_conversion.rs +++ b/xcm/xcm-builder/src/location_conversion.rs @@ -232,26 +232,6 @@ impl>, AccountId: From<[u8; 32]> + Into<[u8; 32]> } } -/// Conversion implementation which converts from a `[u8; 32]`-based `AccountId` into a -/// `MultiLocation` consisting solely of a `AccountId32` junction with a fixed value for its -/// network (provided by `Network`) and the `AccountId`'s `[u8; 32]` datum for the `id`. -pub struct AliasesIntoAccountId32(PhantomData<(Network, AccountId)>); -impl<'a, Network: Get>, AccountId: Clone + Into<[u8; 32]> + Clone> - Convert<&'a AccountId, MultiLocation> for AliasesIntoAccountId32 -{ - fn convert(who: &AccountId) -> Result { - Ok(AccountId32 { network: Network::get(), id: who.clone().into() }.into()) - } -} - -impl>, AccountId: Into<[u8; 32]> + Clone> - Convert for AliasesIntoAccountId32 -{ - fn convert(who: AccountId) -> Result { - Ok(AccountId32 { network: Network::get(), id: who.into() }.into()) - } -} - pub struct AccountKey20Aliases(PhantomData<(Network, AccountId)>); impl>, AccountId: From<[u8; 20]> + Into<[u8; 20]> + Clone> Convert for AccountKey20Aliases diff --git a/xcm/xcm-builder/src/pay.rs b/xcm/xcm-builder/src/pay.rs deleted file mode 100644 index e8cd2b2bb287..000000000000 --- a/xcm/xcm-builder/src/pay.rs +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! `PayOverXcm` struct for paying through XCM and getting the status back. - -use frame_support::traits::{ - tokens::{Pay, PaymentStatus}, - Get, -}; -use sp_runtime::traits::Convert; -use sp_std::{marker::PhantomData, vec}; -use xcm::{opaque::lts::Weight, prelude::*}; -use xcm_executor::traits::{QueryHandler, QueryResponseStatus}; - -/// Implementation of the `frame_support::traits::tokens::Pay` trait, to allow -/// for XCM-based payments of a given `Balance` of some asset ID existing on some chain under -/// ownership of some `Interior` location of the local chain to a particular `Beneficiary`. The -/// `AssetKind` value can be converted into both the XCM `AssetId` (via and `Into` bound) and the -/// the destination chain's location, via the `AssetKindToLocatableAsset` type parameter. -/// -/// This relies on the XCM `TransferAsset` instruction. A trait `BeneficiaryRefToLocation` must be -/// provided in order to convert the `Beneficiary` reference into a location usable by -/// `TransferAsset`. -/// -/// `PayOverXcm::pay` is asynchronous, and returns a `QueryId` which can then be used in -/// `check_payment` to check the status of the XCM transaction. -/// -/// See also `PayAccountId32OverXcm` which is similar to this except that `BeneficiaryRefToLocation` -/// need not be supplied and `Beneficiary` must implement `Into<[u8; 32]>`. -pub struct PayOverXcm< - Interior, - Router, - Querier, - Timeout, - Beneficiary, - AssetKind, - AssetKindToLocatableAsset, - BeneficiaryRefToLocation, ->( - PhantomData<( - Interior, - Router, - Querier, - Timeout, - Beneficiary, - AssetKind, - AssetKindToLocatableAsset, - BeneficiaryRefToLocation, - )>, -); -impl< - Interior: Get, - Router: SendXcm, - Querier: QueryHandler, - Timeout: Get, - Beneficiary: Clone, - AssetKind, - AssetKindToLocatableAsset: Convert, - BeneficiaryRefToLocation: for<'a> Convert<&'a Beneficiary, MultiLocation>, - > Pay - for PayOverXcm< - Interior, - Router, - Querier, - Timeout, - Beneficiary, - AssetKind, - AssetKindToLocatableAsset, - BeneficiaryRefToLocation, - > -{ - type Beneficiary = Beneficiary; - type AssetKind = AssetKind; - type Balance = u128; - type Id = Querier::QueryId; - type Error = xcm::latest::Error; - - fn pay( - who: &Self::Beneficiary, - asset_kind: Self::AssetKind, - amount: Self::Balance, - ) -> Result { - let locatable = AssetKindToLocatableAsset::convert(asset_kind); - let LocatableAssetId { asset_id, location: asset_location } = locatable; - let destination = Querier::UniversalLocation::get() - .invert_target(&asset_location) - .map_err(|()| Self::Error::LocationNotInvertible)?; - let beneficiary = BeneficiaryRefToLocation::convert(&who); - - let query_id = Querier::new_query(asset_location, Timeout::get(), Interior::get()); - - let message = Xcm(vec![ - UnpaidExecution { weight_limit: Unlimited, check_origin: None }, - SetAppendix(Xcm(vec![ReportError(QueryResponseInfo { - destination, - query_id, - max_weight: Weight::zero(), - })])), - DescendOrigin(Interior::get()), - TransferAsset { - beneficiary, - assets: vec![MultiAsset { id: asset_id, fun: Fungibility::Fungible(amount) }] - .into(), - }, - ]); - - let (ticket, _) = Router::validate(&mut Some(asset_location), &mut Some(message))?; - Router::deliver(ticket)?; - Ok(query_id.into()) - } - - fn check_payment(id: Self::Id) -> PaymentStatus { - use QueryResponseStatus::*; - match Querier::take_response(id) { - Ready { response, .. } => match response { - Response::ExecutionResult(None) => PaymentStatus::Success, - Response::ExecutionResult(Some(_)) => PaymentStatus::Failure, - _ => PaymentStatus::Unknown, - }, - Pending { .. } => PaymentStatus::InProgress, - NotFound | UnexpectedVersion => PaymentStatus::Unknown, - } - } - - #[cfg(feature = "runtime-benchmarks")] - fn ensure_successful(_: &Self::Beneficiary, _: Self::AssetKind, _: Self::Balance) { - // We cannot generally guarantee this will go through successfully since we don't have any - // control over the XCM transport layers. We just assume that the benchmark environment - // will be sending it somewhere sensible. - } - - #[cfg(feature = "runtime-benchmarks")] - fn ensure_concluded(id: Self::Id) { - Querier::expect_response(id, Response::ExecutionResult(None)); - } -} - -/// Specialization of the [PayOverXcm] trait to allow `[u8; 32]`-based `AccountId` values to be -/// paid on a remote chain. -/// -/// Implementation of the [frame_support::traits::tokens::Pay] trait, to allow -/// for XCM payments of a given `Balance` of `AssetKind` existing on a `DestinationChain` under -/// ownership of some `Interior` location of the local chain to a particular `Beneficiary`. -/// -/// This relies on the XCM `TransferAsset` instruction. `Beneficiary` must implement -/// `Into<[u8; 32]>` (as 32-byte `AccountId`s generally do), and the actual XCM beneficiary will be -/// the location consisting of a single `AccountId32` junction with an appropriate account and no -/// specific network. -/// -/// `PayOverXcm::pay` is asynchronous, and returns a `QueryId` which can then be used in -/// `check_payment` to check the status of the XCM transaction. -pub type PayAccountId32OnChainOverXcm< - DestinationChain, - Interior, - Router, - Querier, - Timeout, - Beneficiary, - AssetKind, -> = PayOverXcm< - Interior, - Router, - Querier, - Timeout, - Beneficiary, - AssetKind, - crate::AliasesIntoAccountId32<(), Beneficiary>, - FixedLocation, ->; - -/// Simple struct which contains both an XCM `location` and `asset_id` to identift an asset which -/// exists on some chain. -pub struct LocatableAssetId { - /// The asset's ID. - pub asset_id: AssetId, - /// The (relative) location in which the asset ID is meaningful. - pub location: MultiLocation, -} - -/// Adapter `struct` which implements a conversion from any `AssetKind` into a [LocatableAsset] -/// value using a fixed `Location` for the `location` field. -pub struct FixedLocation(sp_std::marker::PhantomData); -impl, AssetKind: Into> Convert - for FixedLocation -{ - fn convert(value: AssetKind) -> LocatableAssetId { - LocatableAssetId { asset_id: value.into(), location: Location::get() } - } -} - -#[test] -fn it_builds() {} diff --git a/xcm/xcm-builder/src/tests/locking.rs b/xcm/xcm-builder/src/tests/locking.rs index f4ef618ac0e7..7c408c999b56 100644 --- a/xcm/xcm-builder/src/tests/locking.rs +++ b/xcm/xcm-builder/src/tests/locking.rs @@ -136,8 +136,6 @@ fn remote_unlock_roundtrip_should_work() { set_send_price((Parent, 10u128)); // We have been told by Parachain #1 that Account #3 has locked funds which we can unlock. - // Previously, we must have sent a LockAsset instruction to Parachain #1. - // This caused Parachain #1 to send us the NoteUnlockable instruction. let message = Xcm(vec![NoteUnlockable { asset: (Parent, 100u128).into(), owner: (3u64,).into() }]); let hash = fake_message_hash(&message); @@ -171,10 +169,8 @@ fn remote_unlock_roundtrip_should_work() { assert_eq!(r, Outcome::Complete(Weight::from_parts(40, 40))); assert_eq!(asset_list((3u64,)), vec![(Parent, 990u128).into()]); - let expected_msg = Xcm::<()>(vec![UnlockAsset { - target: (Parent, Parachain(42), 3u64).into(), - asset: (Parent, 100u128).into(), - }]); + let expected_msg = + Xcm::<()>(vec![UnlockAsset { target: (3u64,).into(), asset: (Parent, 100u128).into() }]); let expected_hash = fake_message_hash(&expected_msg); assert_eq!(sent_xcm(), vec![((Parent, Parachain(1)).into(), expected_msg, expected_hash)]); assert_eq!( diff --git a/xcm/xcm-executor/src/lib.rs b/xcm/xcm-executor/src/lib.rs index 16f53fd6503b..ce9d3d4644e8 100644 --- a/xcm/xcm-executor/src/lib.rs +++ b/xcm/xcm-executor/src/lib.rs @@ -876,11 +876,9 @@ impl XcmExecutor { RequestUnlock { asset, locker } => { let origin = *self.origin_ref().ok_or(XcmError::BadOrigin)?; let remote_asset = Self::try_reanchor(asset.clone(), &locker)?.0; - let remote_target = Self::try_reanchor_multilocation(origin, &locker)?.0; let reduce_ticket = Config::AssetLocker::prepare_reduce_unlockable(locker, asset, origin)?; - let msg = - Xcm::<()>(vec![UnlockAsset { asset: remote_asset, target: remote_target }]); + let msg = Xcm::<()>(vec![UnlockAsset { asset: remote_asset, target: origin }]); let (ticket, price) = validate_send::(locker, msg)?; self.take_fee(price, FeeReason::RequestUnlock)?; reduce_ticket.enact()?; @@ -992,17 +990,6 @@ impl XcmExecutor { Ok((asset, reanchor_context)) } - fn try_reanchor_multilocation( - location: MultiLocation, - destination: &MultiLocation, - ) -> Result<(MultiLocation, InteriorMultiLocation), XcmError> { - let reanchor_context = Config::UniversalLocation::get(); - let location = location - .reanchored(&destination, reanchor_context) - .map_err(|_| XcmError::ReanchorFailed)?; - Ok((location, reanchor_context)) - } - /// NOTE: Any assets which were unable to be reanchored are introduced into `failed_bin`. fn reanchored( mut assets: Assets, diff --git a/xcm/xcm-executor/src/traits/mod.rs b/xcm/xcm-executor/src/traits/mod.rs index cac9c73ee277..3b904630d73e 100644 --- a/xcm/xcm-executor/src/traits/mod.rs +++ b/xcm/xcm-executor/src/traits/mod.rs @@ -38,7 +38,7 @@ pub use token_matching::{ Error, MatchesFungible, MatchesFungibles, MatchesNonFungible, MatchesNonFungibles, }; mod on_response; -pub use on_response::{OnResponse, QueryHandler, QueryResponseStatus, VersionChangeNotifier}; +pub use on_response::{OnResponse, VersionChangeNotifier}; mod should_execute; pub use should_execute::{CheckSuspension, Properties, ShouldExecute}; mod transact_asset; diff --git a/xcm/xcm-executor/src/traits/on_response.rs b/xcm/xcm-executor/src/traits/on_response.rs index 34bb7eb9597d..dcb7d924d799 100644 --- a/xcm/xcm-executor/src/traits/on_response.rs +++ b/xcm/xcm-executor/src/traits/on_response.rs @@ -14,17 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use crate::Xcm; -use core::result; -use frame_support::{ - dispatch::fmt::Debug, - pallet_prelude::{Get, TypeInfo}, -}; -use parity_scale_codec::{FullCodec, MaxEncodedLen}; -use sp_arithmetic::traits::Zero; use xcm::latest::{ - Error as XcmError, InteriorMultiLocation, MultiLocation, QueryId, Response, - Result as XcmResult, Weight, XcmContext, + Error as XcmError, MultiLocation, QueryId, Response, Result as XcmResult, Weight, XcmContext, }; /// Define what needs to be done upon receiving a query response. @@ -103,63 +94,3 @@ impl VersionChangeNotifier for () { false } } - -/// The possible state of an XCM query response. -#[derive(Debug, PartialEq, Eq)] -pub enum QueryResponseStatus { - /// The response has arrived, and includes the inner Response and the block number it arrived at. - Ready { response: Response, at: BlockNumber }, - /// The response has not yet arrived, the XCM might still be executing or the response might be in transit. - Pending { timeout: BlockNumber }, - /// No response with the given `QueryId` was found, or the response was already queried and removed from local storage. - NotFound, - /// Got an unexpected XCM version. - UnexpectedVersion, -} - -/// Provides methods to expect responses from XCMs and query their status. -pub trait QueryHandler { - type QueryId: From - + FullCodec - + MaxEncodedLen - + TypeInfo - + Clone - + Eq - + PartialEq - + Debug - + Copy; - type BlockNumber: Zero; - type Error; - type UniversalLocation: Get; - - /// Attempt to create a new query ID and register it as a query that is yet to respond. - fn new_query( - responder: impl Into, - timeout: Self::BlockNumber, - match_querier: impl Into, - ) -> QueryId; - - /// Consume `message` and return another which is equivalent to it except that it reports - /// back the outcome. - /// - /// - `message`: The message whose outcome should be reported. - /// - `responder`: The origin from which a response should be expected. - /// - `timeout`: The block number after which it is permissible to return `NotFound` from `take_response`. - /// - /// `report_outcome` may return an error if the `responder` is not invertible. - /// - /// It is assumed that the querier of the response will be `Here`. - /// The response can be queried with `take_response`. - fn report_outcome( - message: &mut Xcm<()>, - responder: impl Into, - timeout: Self::BlockNumber, - ) -> result::Result; - - /// Attempt to remove and return the response of query with ID `query_id`. - fn take_response(id: Self::QueryId) -> QueryResponseStatus; - - /// Makes sure to expect a response with the given id. - #[cfg(feature = "runtime-benchmarks")] - fn expect_response(id: Self::QueryId, response: Response); -} diff --git a/xcm/xcm-simulator/example/src/lib.rs b/xcm/xcm-simulator/example/src/lib.rs index bd5ebb0b472f..33a5b2c70a9f 100644 --- a/xcm/xcm-simulator/example/src/lib.rs +++ b/xcm/xcm-simulator/example/src/lib.rs @@ -272,7 +272,7 @@ mod tests { } #[test] - fn remote_locking_and_unlocking() { + fn remote_locking() { MockNet::reset(); let locked_amount = 100; @@ -280,7 +280,7 @@ mod tests { ParaB::execute_with(|| { let message = Xcm(vec![LockAsset { asset: (Here, locked_amount).into(), - unlocker: Parachain(1).into(), + unlocker: (Parachain(1),).into(), }]); assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent, message.clone())); }); @@ -306,28 +306,6 @@ mod tests { }])] ); }); - - ParaB::execute_with(|| { - // Request unlocking part of the funds on the relay chain - let message = Xcm(vec![RequestUnlock { - asset: (Parent, locked_amount - 50).into(), - locker: Parent.into(), - }]); - assert_ok!(ParachainPalletXcm::send_xcm(Here, (Parent, Parachain(1)), message)); - }); - - Relay::execute_with(|| { - use pallet_balances::{BalanceLock, Reasons}; - // Lock is reduced - assert_eq!( - relay_chain::Balances::locks(&child_account_id(2)), - vec![BalanceLock { - id: *b"py/xcmlk", - amount: locked_amount - 50, - reasons: Reasons::All - }] - ); - }); } /// Scenario: diff --git a/xcm/xcm-simulator/example/src/parachain.rs b/xcm/xcm-simulator/example/src/parachain.rs index 39a2e27470b2..cea5a93ec0af 100644 --- a/xcm/xcm-simulator/example/src/parachain.rs +++ b/xcm/xcm-simulator/example/src/parachain.rs @@ -17,10 +17,9 @@ //! Parachain runtime mock. use codec::{Decode, Encode}; -use core::marker::PhantomData; use frame_support::{ construct_runtime, parameter_types, - traits::{ContainsPair, EnsureOrigin, EnsureOriginWithArg, Everything, EverythingBut, Nothing}, + traits::{EnsureOrigin, EnsureOriginWithArg, Everything, EverythingBut, Nothing}, weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight}, }; @@ -28,7 +27,7 @@ use frame_system::EnsureRoot; use sp_core::{ConstU32, H256}; use sp_runtime::{ testing::Header, - traits::{Get, Hash, IdentityLookup}, + traits::{Hash, IdentityLookup}, AccountId32, }; use sp_std::prelude::*; @@ -239,7 +238,7 @@ impl Config for XcmConfig { type Trader = FixedRateOfFungible; type ResponseHandler = (); type AssetTrap = (); - type AssetLocker = PolkadotXcm; + type AssetLocker = (); type AssetExchanger = (); type AssetClaims = (); type SubscriptionService = (); @@ -326,7 +325,7 @@ pub mod mock_msg_queue { Ok(xcm) => { let location = (Parent, Parachain(sender.into())); match T::XcmExecutor::execute_xcm(location, xcm, message_hash, max_weight) { - Outcome::Error(e) => (Err(e), Event::Fail(Some(hash), e)), + Outcome::Error(e) => (Err(e.clone()), Event::Fail(Some(hash), e)), Outcome::Complete(w) => (Ok(w), Event::Success(Some(hash))), // As far as the caller is concerned, this was dispatched without error, so // we just report the weight used. @@ -350,7 +349,7 @@ pub mod mock_msg_queue { let _ = XcmpMessageFormat::decode(&mut data_ref) .expect("Simulator encodes with versioned xcm format; qed"); - let mut remaining_fragments = data_ref; + let mut remaining_fragments = &data_ref[..]; while !remaining_fragments.is_empty() { if let Ok(xcm) = VersionedXcm::::decode(&mut remaining_fragments) @@ -404,22 +403,6 @@ parameter_types! { pub ReachableDest: Option = Some(Parent.into()); } -pub struct TrustedLockerCase(PhantomData); -impl> ContainsPair - for TrustedLockerCase -{ - fn contains(origin: &MultiLocation, asset: &MultiAsset) -> bool { - let (o, a) = T::get(); - a.matches(asset) && &o == origin - } -} - -parameter_types! { - pub RelayTokenForRelay: (MultiLocation, MultiAssetFilter) = (Parent.into(), Wild(AllOf { id: Concrete(Parent.into()), fun: WildFungible })); -} - -pub type TrustedLockers = TrustedLockerCase; - impl pallet_xcm::Config for Runtime { type RuntimeEvent = RuntimeEvent; type SendXcmOrigin = EnsureXcmOrigin; @@ -437,7 +420,7 @@ impl pallet_xcm::Config for Runtime { type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion; type Currency = Balances; type CurrencyMatcher = (); - type TrustedLockers = TrustedLockers; + type TrustedLockers = (); type SovereignAccountOf = LocationToAccountId; type MaxLockers = ConstU32<8>; type MaxRemoteLockConsumers = ConstU32<0>; diff --git a/zombienet_tests/functional/0003-beefy-and-mmr.toml b/zombienet_tests/functional/0003-beefy-and-mmr.toml index a8d97bc30f85..bea5ac1ba64f 100644 --- a/zombienet_tests/functional/0003-beefy-and-mmr.toml +++ b/zombienet_tests/functional/0003-beefy-and-mmr.toml @@ -9,8 +9,8 @@ command = "polkadot" [[relaychain.node_groups]] name = "validator" count = 3 -args = ["--log=beefy=debug", "--enable-offchain-indexing=true"] +args = ["--log=beefy=debug", "--beefy", "--enable-offchain-indexing=true"] [[relaychain.nodes]] name = "validator-unstable" -args = ["--log=beefy=debug", "--enable-offchain-indexing=true"] +args = ["--log=beefy=debug", "--beefy", "--enable-offchain-indexing=true"]