mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 05:11:02 +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:
@@ -37,6 +37,7 @@
|
||||
|
||||
use codec::{self as codec, Decode, Encode};
|
||||
use frame_support::traits::{Get, KeyOwnerProofSystem};
|
||||
use frame_system::pallet_prelude::BlockNumberFor;
|
||||
use log::{error, info};
|
||||
use sp_consensus_grandpa::{AuthorityId, EquivocationProof, RoundNumber, SetId, KEY_TYPE};
|
||||
use sp_runtime::{
|
||||
@@ -118,7 +119,7 @@ pub struct EquivocationReportSystem<T, R, P, L>(sp_std::marker::PhantomData<(T,
|
||||
impl<T, R, P, L>
|
||||
OffenceReportSystem<
|
||||
Option<T::AccountId>,
|
||||
(EquivocationProof<T::Hash, T::BlockNumber>, T::KeyOwnerProof),
|
||||
(EquivocationProof<T::Hash, BlockNumberFor<T>>, T::KeyOwnerProof),
|
||||
> for EquivocationReportSystem<T, R, P, L>
|
||||
where
|
||||
T: Config + pallet_authorship::Config + frame_system::offchain::SendTransactionTypes<Call<T>>,
|
||||
@@ -134,7 +135,7 @@ where
|
||||
type Longevity = L;
|
||||
|
||||
fn publish_evidence(
|
||||
evidence: (EquivocationProof<T::Hash, T::BlockNumber>, T::KeyOwnerProof),
|
||||
evidence: (EquivocationProof<T::Hash, BlockNumberFor<T>>, T::KeyOwnerProof),
|
||||
) -> Result<(), ()> {
|
||||
use frame_system::offchain::SubmitTransaction;
|
||||
let (equivocation_proof, key_owner_proof) = evidence;
|
||||
@@ -152,7 +153,7 @@ where
|
||||
}
|
||||
|
||||
fn check_evidence(
|
||||
evidence: (EquivocationProof<T::Hash, T::BlockNumber>, T::KeyOwnerProof),
|
||||
evidence: (EquivocationProof<T::Hash, BlockNumberFor<T>>, T::KeyOwnerProof),
|
||||
) -> Result<(), TransactionValidityError> {
|
||||
let (equivocation_proof, key_owner_proof) = evidence;
|
||||
|
||||
@@ -172,7 +173,7 @@ where
|
||||
|
||||
fn process_evidence(
|
||||
reporter: Option<T::AccountId>,
|
||||
evidence: (EquivocationProof<T::Hash, T::BlockNumber>, T::KeyOwnerProof),
|
||||
evidence: (EquivocationProof<T::Hash, BlockNumberFor<T>>, T::KeyOwnerProof),
|
||||
) -> Result<(), DispatchError> {
|
||||
let (equivocation_proof, key_owner_proof) = evidence;
|
||||
let reporter = reporter.or_else(|| <pallet_authorship::Pallet<T>>::author());
|
||||
|
||||
@@ -42,6 +42,7 @@ use frame_support::{
|
||||
weights::Weight,
|
||||
WeakBoundedVec,
|
||||
};
|
||||
use frame_system::pallet_prelude::BlockNumberFor;
|
||||
use scale_info::TypeInfo;
|
||||
use sp_consensus_grandpa::{
|
||||
ConsensusLog, EquivocationProof, ScheduledChange, SetId, GRANDPA_AUTHORITIES_KEY,
|
||||
@@ -113,13 +114,13 @@ pub mod pallet {
|
||||
/// (from an offchain context).
|
||||
type EquivocationReportSystem: OffenceReportSystem<
|
||||
Option<Self::AccountId>,
|
||||
(EquivocationProof<Self::Hash, Self::BlockNumber>, Self::KeyOwnerProof),
|
||||
(EquivocationProof<Self::Hash, BlockNumberFor<Self>>, Self::KeyOwnerProof),
|
||||
>;
|
||||
}
|
||||
|
||||
#[pallet::hooks]
|
||||
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
||||
fn on_finalize(block_number: T::BlockNumber) {
|
||||
fn on_finalize(block_number: BlockNumberFor<T>) {
|
||||
// check for scheduled pending authority set changes
|
||||
if let Some(pending_change) = <PendingChange<T>>::get() {
|
||||
// emit signal if we're at the block that scheduled the change
|
||||
@@ -191,7 +192,7 @@ pub mod pallet {
|
||||
#[pallet::weight(T::WeightInfo::report_equivocation(key_owner_proof.validator_count()))]
|
||||
pub fn report_equivocation(
|
||||
origin: OriginFor<T>,
|
||||
equivocation_proof: Box<EquivocationProof<T::Hash, T::BlockNumber>>,
|
||||
equivocation_proof: Box<EquivocationProof<T::Hash, BlockNumberFor<T>>>,
|
||||
key_owner_proof: T::KeyOwnerProof,
|
||||
) -> DispatchResultWithPostInfo {
|
||||
let reporter = ensure_signed(origin)?;
|
||||
@@ -217,7 +218,7 @@ pub mod pallet {
|
||||
#[pallet::weight(T::WeightInfo::report_equivocation(key_owner_proof.validator_count()))]
|
||||
pub fn report_equivocation_unsigned(
|
||||
origin: OriginFor<T>,
|
||||
equivocation_proof: Box<EquivocationProof<T::Hash, T::BlockNumber>>,
|
||||
equivocation_proof: Box<EquivocationProof<T::Hash, BlockNumberFor<T>>>,
|
||||
key_owner_proof: T::KeyOwnerProof,
|
||||
) -> DispatchResultWithPostInfo {
|
||||
ensure_none(origin)?;
|
||||
@@ -245,8 +246,8 @@ pub mod pallet {
|
||||
#[pallet::weight(T::WeightInfo::note_stalled())]
|
||||
pub fn note_stalled(
|
||||
origin: OriginFor<T>,
|
||||
delay: T::BlockNumber,
|
||||
best_finalized_block_number: T::BlockNumber,
|
||||
delay: BlockNumberFor<T>,
|
||||
best_finalized_block_number: BlockNumberFor<T>,
|
||||
) -> DispatchResult {
|
||||
ensure_root(origin)?;
|
||||
|
||||
@@ -287,7 +288,7 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::type_value]
|
||||
pub(super) fn DefaultForState<T: Config>() -> StoredState<T::BlockNumber> {
|
||||
pub(super) fn DefaultForState<T: Config>() -> StoredState<BlockNumberFor<T>> {
|
||||
StoredState::Live
|
||||
}
|
||||
|
||||
@@ -295,23 +296,23 @@ pub mod pallet {
|
||||
#[pallet::storage]
|
||||
#[pallet::getter(fn state)]
|
||||
pub(super) type State<T: Config> =
|
||||
StorageValue<_, StoredState<T::BlockNumber>, ValueQuery, DefaultForState<T>>;
|
||||
StorageValue<_, StoredState<BlockNumberFor<T>>, ValueQuery, DefaultForState<T>>;
|
||||
|
||||
/// Pending change: (signaled at, scheduled change).
|
||||
#[pallet::storage]
|
||||
#[pallet::getter(fn pending_change)]
|
||||
pub(super) type PendingChange<T: Config> =
|
||||
StorageValue<_, StoredPendingChange<T::BlockNumber, T::MaxAuthorities>>;
|
||||
StorageValue<_, StoredPendingChange<BlockNumberFor<T>, T::MaxAuthorities>>;
|
||||
|
||||
/// next block number where we can force a change.
|
||||
#[pallet::storage]
|
||||
#[pallet::getter(fn next_forced)]
|
||||
pub(super) type NextForced<T: Config> = StorageValue<_, T::BlockNumber>;
|
||||
pub(super) type NextForced<T: Config> = StorageValue<_, BlockNumberFor<T>>;
|
||||
|
||||
/// `true` if we are currently stalled.
|
||||
#[pallet::storage]
|
||||
#[pallet::getter(fn stalled)]
|
||||
pub(super) type Stalled<T: Config> = StorageValue<_, (T::BlockNumber, T::BlockNumber)>;
|
||||
pub(super) type Stalled<T: Config> = StorageValue<_, (BlockNumberFor<T>, BlockNumberFor<T>)>;
|
||||
|
||||
/// The number of changes (both in terms of keys and underlying economic responsibilities)
|
||||
/// in the "set" of Grandpa validators from genesis.
|
||||
@@ -429,7 +430,7 @@ impl<T: Config> Pallet<T> {
|
||||
|
||||
/// Schedule GRANDPA to pause starting in the given number of blocks.
|
||||
/// Cannot be done when already paused.
|
||||
pub fn schedule_pause(in_blocks: T::BlockNumber) -> DispatchResult {
|
||||
pub fn schedule_pause(in_blocks: BlockNumberFor<T>) -> DispatchResult {
|
||||
if let StoredState::Live = <State<T>>::get() {
|
||||
let scheduled_at = <frame_system::Pallet<T>>::block_number();
|
||||
<State<T>>::put(StoredState::PendingPause { delay: in_blocks, scheduled_at });
|
||||
@@ -441,7 +442,7 @@ impl<T: Config> Pallet<T> {
|
||||
}
|
||||
|
||||
/// Schedule a resume of GRANDPA after pausing.
|
||||
pub fn schedule_resume(in_blocks: T::BlockNumber) -> DispatchResult {
|
||||
pub fn schedule_resume(in_blocks: BlockNumberFor<T>) -> DispatchResult {
|
||||
if let StoredState::Paused = <State<T>>::get() {
|
||||
let scheduled_at = <frame_system::Pallet<T>>::block_number();
|
||||
<State<T>>::put(StoredState::PendingResume { delay: in_blocks, scheduled_at });
|
||||
@@ -468,8 +469,8 @@ impl<T: Config> Pallet<T> {
|
||||
/// an error if a change is already pending.
|
||||
pub fn schedule_change(
|
||||
next_authorities: AuthorityList,
|
||||
in_blocks: T::BlockNumber,
|
||||
forced: Option<T::BlockNumber>,
|
||||
in_blocks: BlockNumberFor<T>,
|
||||
forced: Option<BlockNumberFor<T>>,
|
||||
) -> DispatchResult {
|
||||
if !<PendingChange<T>>::exists() {
|
||||
let scheduled_at = <frame_system::Pallet<T>>::block_number();
|
||||
@@ -506,7 +507,7 @@ impl<T: Config> Pallet<T> {
|
||||
}
|
||||
|
||||
/// Deposit one of this module's logs.
|
||||
fn deposit_log(log: ConsensusLog<T::BlockNumber>) {
|
||||
fn deposit_log(log: ConsensusLog<BlockNumberFor<T>>) {
|
||||
let log = DigestItem::Consensus(GRANDPA_ENGINE_ID, log.encode());
|
||||
<frame_system::Pallet<T>>::deposit_log(log);
|
||||
}
|
||||
@@ -530,13 +531,13 @@ impl<T: Config> Pallet<T> {
|
||||
/// will push the transaction to the pool. Only useful in an offchain
|
||||
/// context.
|
||||
pub fn submit_unsigned_equivocation_report(
|
||||
equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
|
||||
equivocation_proof: EquivocationProof<T::Hash, BlockNumberFor<T>>,
|
||||
key_owner_proof: T::KeyOwnerProof,
|
||||
) -> Option<()> {
|
||||
T::EquivocationReportSystem::publish_evidence((equivocation_proof, key_owner_proof)).ok()
|
||||
}
|
||||
|
||||
fn on_stalled(further_wait: T::BlockNumber, median: T::BlockNumber) {
|
||||
fn on_stalled(further_wait: BlockNumberFor<T>, median: BlockNumberFor<T>) {
|
||||
// when we record old authority sets we could try to figure out _who_
|
||||
// failed. until then, we can't meaningfully guard against
|
||||
// `next == last` the way that normal session changes do.
|
||||
|
||||
@@ -34,20 +34,16 @@ use sp_keyring::Ed25519Keyring;
|
||||
use sp_runtime::{
|
||||
curve::PiecewiseLinear,
|
||||
impl_opaque_keys,
|
||||
testing::{Header, TestXt, UintAuthorityId},
|
||||
testing::{TestXt, UintAuthorityId},
|
||||
traits::{IdentityLookup, OpaqueKeys},
|
||||
BuildStorage, DigestItem, Perbill,
|
||||
};
|
||||
use sp_staking::{EraIndex, SessionIndex};
|
||||
|
||||
type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
|
||||
type Block = frame_system::mocking::MockBlock<Test>;
|
||||
|
||||
frame_support::construct_runtime!(
|
||||
pub enum Test where
|
||||
Block = Block,
|
||||
NodeBlock = Block,
|
||||
UncheckedExtrinsic = UncheckedExtrinsic,
|
||||
pub enum Test
|
||||
{
|
||||
System: frame_system,
|
||||
Authorship: pallet_authorship,
|
||||
@@ -74,13 +70,12 @@ impl frame_system::Config for Test {
|
||||
type DbWeight = ();
|
||||
type RuntimeOrigin = RuntimeOrigin;
|
||||
type Index = u64;
|
||||
type BlockNumber = u64;
|
||||
type RuntimeCall = RuntimeCall;
|
||||
type Hash = H256;
|
||||
type Hashing = sp_runtime::traits::BlakeTwo256;
|
||||
type AccountId = u64;
|
||||
type Lookup = IdentityLookup<Self::AccountId>;
|
||||
type Header = Header;
|
||||
type Block = Block;
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BlockHashCount = ConstU64<250>;
|
||||
type Version = ();
|
||||
|
||||
Reference in New Issue
Block a user