mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 08:11:04 +00:00
Moves Block to frame_system instead of construct_runtime and removes Header and BlockNumber (#14437)
* Initial setup * Adds node block * Uses UncheckedExtrinsic and removes Where section * Updates frame_system to use Block * Adds deprecation warning * Fixes pallet-timestamp * Removes Header and BlockNumber * Addresses review comments * Addresses review comments * Adds comment about compiler bug * Removes where clause * Refactors code * Fixes errors in cargo check * Fixes errors in cargo check * Fixes warnings in cargo check * Formatting * Fixes construct_runtime tests * Uses import instead of full path for BlockNumber * Uses import instead of full path for Header * Formatting * Fixes construct_runtime tests * Fixes imports in benchmarks * Formatting * Fixes construct_runtime tests * Formatting * Minor updates * Fixes construct_runtime ui tests * Fixes construct_runtime ui tests with 1.70 * Fixes docs * Fixes docs * Adds u128 mock block type * Fixes split example * fixes for cumulus * ".git/.scripts/commands/fmt/fmt.sh" * Updates new tests * Fixes fully-qualified path in few places * Formatting * Update frame/examples/default-config/src/lib.rs Co-authored-by: Juan <juangirini@gmail.com> * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Juan <juangirini@gmail.com> * ".git/.scripts/commands/fmt/fmt.sh" * Addresses some review comments * Fixes build * ".git/.scripts/commands/fmt/fmt.sh" * Update frame/democracy/src/lib.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update frame/democracy/src/lib.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Addresses review comments * Updates trait bounds * Minor fix * ".git/.scripts/commands/fmt/fmt.sh" * Removes unnecessary bound * ".git/.scripts/commands/fmt/fmt.sh" * Updates test * Fixes build * Adds a bound for header * ".git/.scripts/commands/fmt/fmt.sh" * Removes where block * Minor fix * Minor fix * Fixes tests * ".git/.scripts/commands/update-ui/update-ui.sh" 1.70 * Updates test * Update primitives/runtime/src/traits.rs Co-authored-by: Bastian Köcher <git@kchr.de> * Update primitives/runtime/src/traits.rs Co-authored-by: Bastian Köcher <git@kchr.de> * Updates doc * Updates doc --------- Co-authored-by: command-bot <> Co-authored-by: Juan <juangirini@gmail.com> Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Bastian Köcher <git@kchr.de>
This commit is contained in:
@@ -26,7 +26,7 @@ use crate::{
|
||||
},
|
||||
DispatchResult,
|
||||
};
|
||||
use codec::{Codec, Decode, Encode, EncodeLike, MaxEncodedLen};
|
||||
use codec::{Codec, Decode, Encode, EncodeLike, FullCodec, MaxEncodedLen};
|
||||
use impl_trait_for_tuples::impl_for_tuples;
|
||||
#[cfg(feature = "serde")]
|
||||
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||
@@ -1154,7 +1154,9 @@ pub trait IsMember<MemberId> {
|
||||
/// `parent_hash`, as well as a `digest` and a block `number`.
|
||||
///
|
||||
/// You can also create a `new` one from those fields.
|
||||
pub trait Header: Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + 'static {
|
||||
pub trait Header:
|
||||
Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + TypeInfo + 'static
|
||||
{
|
||||
/// Header number.
|
||||
type Number: Member
|
||||
+ MaybeSerializeDeserialize
|
||||
@@ -1164,7 +1166,10 @@ pub trait Header: Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + 's
|
||||
+ Copy
|
||||
+ MaybeDisplay
|
||||
+ AtLeast32BitUnsigned
|
||||
+ Codec;
|
||||
+ Default
|
||||
+ TypeInfo
|
||||
+ MaxEncodedLen
|
||||
+ FullCodec;
|
||||
/// Header hash type
|
||||
type Hash: HashOutput;
|
||||
/// Hashing algorithm
|
||||
@@ -1210,15 +1215,50 @@ pub trait Header: Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + 's
|
||||
}
|
||||
}
|
||||
|
||||
// Something that provides the Header Type. Only for internal usage and should only be used
|
||||
// via `HeaderFor` or `BlockNumberFor`.
|
||||
//
|
||||
// This is needed to fix the "cyclical" issue in loading Header/BlockNumber as part of a
|
||||
// `pallet::call`. Essentially, `construct_runtime` aggregates all calls to create a `RuntimeCall`
|
||||
// that is then used to define `UncheckedExtrinsic`.
|
||||
// ```ignore
|
||||
// pub type UncheckedExtrinsic =
|
||||
// generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
|
||||
// ```
|
||||
// This `UncheckedExtrinsic` is supplied to the `Block`.
|
||||
// ```ignore
|
||||
// pub type Block = generic::Block<Header, UncheckedExtrinsic>;
|
||||
// ```
|
||||
// So, if we do not create a trait outside of `Block` that doesn't have `Extrinsic`, we go into a
|
||||
// recursive loop leading to a build error.
|
||||
//
|
||||
// Note that this is a workaround for a compiler bug and should be removed when the compiler
|
||||
// bug is fixed.
|
||||
#[doc(hidden)]
|
||||
pub trait HeaderProvider {
|
||||
/// Header type.
|
||||
type HeaderT: Header;
|
||||
}
|
||||
|
||||
/// Something which fulfills the abstract idea of a Substrate block. It has types for
|
||||
/// `Extrinsic` pieces of information as well as a `Header`.
|
||||
///
|
||||
/// You can get an iterator over each of the `extrinsics` and retrieve the `header`.
|
||||
pub trait Block: Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + 'static {
|
||||
pub trait Block:
|
||||
HeaderProvider<HeaderT = <Self as Block>::Header>
|
||||
+ Clone
|
||||
+ Send
|
||||
+ Sync
|
||||
+ Codec
|
||||
+ Eq
|
||||
+ MaybeSerialize
|
||||
+ Debug
|
||||
+ 'static
|
||||
{
|
||||
/// Type for extrinsics.
|
||||
type Extrinsic: Member + Codec + Extrinsic + MaybeSerialize;
|
||||
/// Header type.
|
||||
type Header: Header<Hash = Self::Hash>;
|
||||
type Header: Header<Hash = Self::Hash> + MaybeSerializeDeserialize;
|
||||
/// Block hash type.
|
||||
type Hash: HashOutput;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user