Skip to content

Commit 2cee874

Browse files
authored
feat: add super trait for block number (#2334)
And also related to a subxt PR paritytech/subxt#1265
1 parent 6dece52 commit 2cee874

File tree

5 files changed

+45
-36
lines changed

5 files changed

+45
-36
lines changed

polkadot/runtime/parachains/src/scheduler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ impl<T: Config> Pallet<T> {
446446
}
447447

448448
let rotations_since_session_start: BlockNumberFor<T> =
449-
(at - session_start_block) / config.group_rotation_frequency.into();
449+
(at - session_start_block) / config.group_rotation_frequency;
450450

451451
let rotations_since_session_start =
452452
<BlockNumberFor<T> as TryInto<u32>>::try_into(rotations_since_session_start)

substrate/client/consensus/beefy/src/worker.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ impl<B: Block> VoterOracle<B> {
212212
// Accept any vote for a GRANDPA finalized block in a better round.
213213
Ok((
214214
rounds.session_start().max(self.best_beefy_block),
215-
(*self.best_grandpa_block_header.number()).into(),
215+
(*self.best_grandpa_block_header.number()),
216216
))
217217
} else {
218218
// Current session has mandatory not done.

substrate/client/rpc-spec-v2/src/archive/archive.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ where
124124
let finalized_num = self.client.info().finalized_number;
125125

126126
if finalized_num >= height {
127-
let Ok(Some(hash)) = self.client.block_hash(height.into()) else { return Ok(vec![]) };
127+
let Ok(Some(hash)) = self.client.block_hash(height) else { return Ok(vec![]) };
128128
return Ok(vec![hex_string(&hash.as_ref())])
129129
}
130130

substrate/primitives/runtime/src/generic/header.rs

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,11 @@ use crate::{
2121
codec::{Codec, Decode, Encode},
2222
generic::Digest,
2323
scale_info::TypeInfo,
24-
traits::{
25-
self, AtLeast32BitUnsigned, Hash as HashT, MaybeDisplay, MaybeFromStr,
26-
MaybeSerializeDeserialize, Member,
27-
},
24+
traits::{self, AtLeast32BitUnsigned, BlockNumber, Hash as HashT, MaybeDisplay, Member},
2825
};
29-
use codec::{FullCodec, MaxEncodedLen};
3026
#[cfg(feature = "serde")]
3127
use serde::{Deserialize, Serialize};
3228
use sp_core::U256;
33-
use sp_std::fmt::Debug;
3429

3530
/// Abstraction over a block header for a substrate chain.
3631
#[derive(Encode, Decode, PartialEq, Eq, Clone, sp_core::RuntimeDebug, TypeInfo)]
@@ -79,20 +74,7 @@ where
7974

8075
impl<Number, Hash> traits::Header for Header<Number, Hash>
8176
where
82-
Number: Member
83-
+ MaybeSerializeDeserialize
84-
+ MaybeFromStr
85-
+ Debug
86-
+ Default
87-
+ sp_std::hash::Hash
88-
+ MaybeDisplay
89-
+ AtLeast32BitUnsigned
90-
+ FullCodec
91-
+ Copy
92-
+ MaxEncodedLen
93-
+ Into<U256>
94-
+ TryFrom<U256>
95-
+ TypeInfo,
77+
Number: BlockNumber,
9678
Hash: HashT,
9779
{
9880
type Number = Number;

substrate/primitives/runtime/src/traits.rs

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub use sp_arithmetic::traits::{
3838
EnsureOp, EnsureOpAssign, EnsureSub, EnsureSubAssign, IntegerSquareRoot, One,
3939
SaturatedConversion, Saturating, UniqueSaturatedFrom, UniqueSaturatedInto, Zero,
4040
};
41-
use sp_core::{self, storage::StateVersion, Hasher, RuntimeDebug, TypeId};
41+
use sp_core::{self, storage::StateVersion, Hasher, RuntimeDebug, TypeId, U256};
4242
#[doc(hidden)]
4343
pub use sp_core::{
4444
parameter_types, ConstBool, ConstI128, ConstI16, ConstI32, ConstI64, ConstI8, ConstU128,
@@ -1149,6 +1149,44 @@ pub trait IsMember<MemberId> {
11491149
fn is_member(member_id: &MemberId) -> bool;
11501150
}
11511151

1152+
/// Super trait with all the attributes for a block number.
1153+
pub trait BlockNumber:
1154+
Member
1155+
+ MaybeSerializeDeserialize
1156+
+ MaybeFromStr
1157+
+ Debug
1158+
+ sp_std::hash::Hash
1159+
+ Copy
1160+
+ MaybeDisplay
1161+
+ AtLeast32BitUnsigned
1162+
+ Into<U256>
1163+
+ TryFrom<U256>
1164+
+ Default
1165+
+ TypeInfo
1166+
+ MaxEncodedLen
1167+
+ FullCodec
1168+
{
1169+
}
1170+
1171+
impl<
1172+
T: Member
1173+
+ MaybeSerializeDeserialize
1174+
+ MaybeFromStr
1175+
+ Debug
1176+
+ sp_std::hash::Hash
1177+
+ Copy
1178+
+ MaybeDisplay
1179+
+ AtLeast32BitUnsigned
1180+
+ Into<U256>
1181+
+ TryFrom<U256>
1182+
+ Default
1183+
+ TypeInfo
1184+
+ MaxEncodedLen
1185+
+ FullCodec,
1186+
> BlockNumber for T
1187+
{
1188+
}
1189+
11521190
/// Something which fulfills the abstract idea of a Substrate header. It has types for a `Number`,
11531191
/// a `Hash` and a `Hashing`. It provides access to an `extrinsics_root`, `state_root` and
11541192
/// `parent_hash`, as well as a `digest` and a block `number`.
@@ -1158,18 +1196,7 @@ pub trait Header:
11581196
Clone + Send + Sync + Codec + Eq + MaybeSerialize + Debug + TypeInfo + 'static
11591197
{
11601198
/// Header number.
1161-
type Number: Member
1162-
+ MaybeSerializeDeserialize
1163-
+ MaybeFromStr
1164-
+ Debug
1165-
+ sp_std::hash::Hash
1166-
+ Copy
1167-
+ MaybeDisplay
1168-
+ AtLeast32BitUnsigned
1169-
+ Default
1170-
+ TypeInfo
1171-
+ MaxEncodedLen
1172-
+ FullCodec;
1199+
type Number: BlockNumber;
11731200
/// Header hash type
11741201
type Hash: HashOutput;
11751202
/// Hashing algorithm

0 commit comments

Comments
 (0)