mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 07:01:05 +00:00
feat: add super trait for block number (#2334)
And also related to a subxt PR https://github.com/paritytech/subxt/pull/1265
This commit is contained in:
@@ -446,7 +446,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let rotations_since_session_start: BlockNumberFor<T> =
|
let rotations_since_session_start: BlockNumberFor<T> =
|
||||||
(at - session_start_block) / config.group_rotation_frequency.into();
|
(at - session_start_block) / config.group_rotation_frequency;
|
||||||
|
|
||||||
let rotations_since_session_start =
|
let rotations_since_session_start =
|
||||||
<BlockNumberFor<T> as TryInto<u32>>::try_into(rotations_since_session_start)
|
<BlockNumberFor<T> as TryInto<u32>>::try_into(rotations_since_session_start)
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ impl<B: Block> VoterOracle<B> {
|
|||||||
// Accept any vote for a GRANDPA finalized block in a better round.
|
// Accept any vote for a GRANDPA finalized block in a better round.
|
||||||
Ok((
|
Ok((
|
||||||
rounds.session_start().max(self.best_beefy_block),
|
rounds.session_start().max(self.best_beefy_block),
|
||||||
(*self.best_grandpa_block_header.number()).into(),
|
(*self.best_grandpa_block_header.number()),
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
// Current session has mandatory not done.
|
// Current session has mandatory not done.
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ where
|
|||||||
let finalized_num = self.client.info().finalized_number;
|
let finalized_num = self.client.info().finalized_number;
|
||||||
|
|
||||||
if finalized_num >= height {
|
if finalized_num >= height {
|
||||||
let Ok(Some(hash)) = self.client.block_hash(height.into()) else { return Ok(vec![]) };
|
let Ok(Some(hash)) = self.client.block_hash(height) else { return Ok(vec![]) };
|
||||||
return Ok(vec![hex_string(&hash.as_ref())])
|
return Ok(vec![hex_string(&hash.as_ref())])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,16 +21,11 @@ use crate::{
|
|||||||
codec::{Codec, Decode, Encode},
|
codec::{Codec, Decode, Encode},
|
||||||
generic::Digest,
|
generic::Digest,
|
||||||
scale_info::TypeInfo,
|
scale_info::TypeInfo,
|
||||||
traits::{
|
traits::{self, AtLeast32BitUnsigned, BlockNumber, Hash as HashT, MaybeDisplay, Member},
|
||||||
self, AtLeast32BitUnsigned, Hash as HashT, MaybeDisplay, MaybeFromStr,
|
|
||||||
MaybeSerializeDeserialize, Member,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
use codec::{FullCodec, MaxEncodedLen};
|
|
||||||
#[cfg(feature = "serde")]
|
#[cfg(feature = "serde")]
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use sp_core::U256;
|
use sp_core::U256;
|
||||||
use sp_std::fmt::Debug;
|
|
||||||
|
|
||||||
/// Abstraction over a block header for a substrate chain.
|
/// Abstraction over a block header for a substrate chain.
|
||||||
#[derive(Encode, Decode, PartialEq, Eq, Clone, sp_core::RuntimeDebug, TypeInfo)]
|
#[derive(Encode, Decode, PartialEq, Eq, Clone, sp_core::RuntimeDebug, TypeInfo)]
|
||||||
@@ -79,20 +74,7 @@ where
|
|||||||
|
|
||||||
impl<Number, Hash> traits::Header for Header<Number, Hash>
|
impl<Number, Hash> traits::Header for Header<Number, Hash>
|
||||||
where
|
where
|
||||||
Number: Member
|
Number: BlockNumber,
|
||||||
+ MaybeSerializeDeserialize
|
|
||||||
+ MaybeFromStr
|
|
||||||
+ Debug
|
|
||||||
+ Default
|
|
||||||
+ sp_std::hash::Hash
|
|
||||||
+ MaybeDisplay
|
|
||||||
+ AtLeast32BitUnsigned
|
|
||||||
+ FullCodec
|
|
||||||
+ Copy
|
|
||||||
+ MaxEncodedLen
|
|
||||||
+ Into<U256>
|
|
||||||
+ TryFrom<U256>
|
|
||||||
+ TypeInfo,
|
|
||||||
Hash: HashT,
|
Hash: HashT,
|
||||||
{
|
{
|
||||||
type Number = Number;
|
type Number = Number;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ pub use sp_arithmetic::traits::{
|
|||||||
EnsureOp, EnsureOpAssign, EnsureSub, EnsureSubAssign, IntegerSquareRoot, One,
|
EnsureOp, EnsureOpAssign, EnsureSub, EnsureSubAssign, IntegerSquareRoot, One,
|
||||||
SaturatedConversion, Saturating, UniqueSaturatedFrom, UniqueSaturatedInto, Zero,
|
SaturatedConversion, Saturating, UniqueSaturatedFrom, UniqueSaturatedInto, Zero,
|
||||||
};
|
};
|
||||||
use sp_core::{self, storage::StateVersion, Hasher, RuntimeDebug, TypeId};
|
use sp_core::{self, storage::StateVersion, Hasher, RuntimeDebug, TypeId, U256};
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub use sp_core::{
|
pub use sp_core::{
|
||||||
parameter_types, ConstBool, ConstI128, ConstI16, ConstI32, ConstI64, ConstI8, ConstU128,
|
parameter_types, ConstBool, ConstI128, ConstI16, ConstI32, ConstI64, ConstI8, ConstU128,
|
||||||
@@ -1149,6 +1149,44 @@ pub trait IsMember<MemberId> {
|
|||||||
fn is_member(member_id: &MemberId) -> bool;
|
fn is_member(member_id: &MemberId) -> bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Super trait with all the attributes for a block number.
|
||||||
|
pub trait BlockNumber:
|
||||||
|
Member
|
||||||
|
+ MaybeSerializeDeserialize
|
||||||
|
+ MaybeFromStr
|
||||||
|
+ Debug
|
||||||
|
+ sp_std::hash::Hash
|
||||||
|
+ Copy
|
||||||
|
+ MaybeDisplay
|
||||||
|
+ AtLeast32BitUnsigned
|
||||||
|
+ Into<U256>
|
||||||
|
+ TryFrom<U256>
|
||||||
|
+ Default
|
||||||
|
+ TypeInfo
|
||||||
|
+ MaxEncodedLen
|
||||||
|
+ FullCodec
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<
|
||||||
|
T: Member
|
||||||
|
+ MaybeSerializeDeserialize
|
||||||
|
+ MaybeFromStr
|
||||||
|
+ Debug
|
||||||
|
+ sp_std::hash::Hash
|
||||||
|
+ Copy
|
||||||
|
+ MaybeDisplay
|
||||||
|
+ AtLeast32BitUnsigned
|
||||||
|
+ Into<U256>
|
||||||
|
+ TryFrom<U256>
|
||||||
|
+ Default
|
||||||
|
+ TypeInfo
|
||||||
|
+ MaxEncodedLen
|
||||||
|
+ FullCodec,
|
||||||
|
> BlockNumber for T
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/// Something which fulfills the abstract idea of a Substrate header. It has types for a `Number`,
|
/// Something which fulfills the abstract idea of a Substrate header. It has types for a `Number`,
|
||||||
/// a `Hash` and a `Hashing`. It provides access to an `extrinsics_root`, `state_root` and
|
/// a `Hash` and a `Hashing`. It provides access to an `extrinsics_root`, `state_root` and
|
||||||
/// `parent_hash`, as well as a `digest` and a block `number`.
|
/// `parent_hash`, as well as a `digest` and a block `number`.
|
||||||
@@ -1158,18 +1196,7 @@ pub trait Header:
|
|||||||
Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + TypeInfo + 'static
|
Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + TypeInfo + 'static
|
||||||
{
|
{
|
||||||
/// Header number.
|
/// Header number.
|
||||||
type Number: Member
|
type Number: BlockNumber;
|
||||||
+ MaybeSerializeDeserialize
|
|
||||||
+ MaybeFromStr
|
|
||||||
+ Debug
|
|
||||||
+ sp_std::hash::Hash
|
|
||||||
+ Copy
|
|
||||||
+ MaybeDisplay
|
|
||||||
+ AtLeast32BitUnsigned
|
|
||||||
+ Default
|
|
||||||
+ TypeInfo
|
|
||||||
+ MaxEncodedLen
|
|
||||||
+ FullCodec;
|
|
||||||
/// Header hash type
|
/// Header hash type
|
||||||
type Hash: HashOutput;
|
type Hash: HashOutput;
|
||||||
/// Hashing algorithm
|
/// Hashing algorithm
|
||||||
|
|||||||
Reference in New Issue
Block a user