mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-15 03:21:06 +00:00
Remove As (#2602)
* Start to remove the `As` bound on `SimpleArtithmetic` This just introduces standard numeric bounds, assuming a minimum of `u32`. Also included is a saturating from/into trait allowing ergonomic infallible conversion when you don't care if it saturates. * Remove As from Balances trait * Remove As from Aura module * Remove As from Babe module * Expunge `As` from contract * Council module * Democracy * Finality tracker * Grandpa * First bit of indices * indices * Line lengths * session * system * Staking * Square up all other uses of As. * RHD update * Fix build/test * Remove As trait * line widths * Remove final As ref * Update srml/staking/src/lib.rs Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> * Update core/client/src/cht.rs Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> * Update core/client/db/src/light.rs Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> * Apply suggestions from code review Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> * whitespace * Apply suggestions from code review Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> Co-Authored-By: André Silva <andre.beat@gmail.com> * Bring back u32 check for number on CLI
This commit is contained in:
@@ -53,7 +53,7 @@ pub use timestamp;
|
||||
use rstd::{result, prelude::*};
|
||||
use srml_support::storage::StorageValue;
|
||||
use srml_support::{decl_storage, decl_module};
|
||||
use primitives::traits::{As, Zero};
|
||||
use primitives::traits::{SaturatedConversion, Saturating, Zero, One};
|
||||
use timestamp::OnTimestampSet;
|
||||
#[cfg(feature = "std")]
|
||||
use timestamp::TimestampInherentData;
|
||||
@@ -154,7 +154,7 @@ pub trait Trait: timestamp::Trait {
|
||||
decl_storage! {
|
||||
trait Store for Module<T: Trait> as Aura {
|
||||
/// The last timestamp.
|
||||
LastTimestamp get(last) build(|_| T::Moment::sa(0)): T::Moment;
|
||||
LastTimestamp get(last) build(|_| 0.into()): T::Moment;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,43 +192,41 @@ impl AuraReport {
|
||||
|
||||
impl<T: Trait> Module<T> {
|
||||
/// Determine the Aura slot-duration based on the Timestamp module configuration.
|
||||
pub fn slot_duration() -> u64 {
|
||||
pub fn slot_duration() -> T::Moment {
|
||||
// we double the minimum block-period so each author can always propose within
|
||||
// the majority of its slot.
|
||||
<timestamp::Module<T>>::minimum_period().as_().saturating_mul(2)
|
||||
<timestamp::Module<T>>::minimum_period().saturating_mul(2.into())
|
||||
}
|
||||
|
||||
fn on_timestamp_set<H: HandleReport>(now: T::Moment, slot_duration: T::Moment) {
|
||||
let last = Self::last();
|
||||
<Self as Store>::LastTimestamp::put(now.clone());
|
||||
|
||||
if last == T::Moment::zero() {
|
||||
if last.is_zero() {
|
||||
return;
|
||||
}
|
||||
|
||||
assert!(slot_duration > T::Moment::zero(), "Aura slot duration cannot be zero.");
|
||||
assert!(!slot_duration.is_zero(), "Aura slot duration cannot be zero.");
|
||||
|
||||
let last_slot = last / slot_duration.clone();
|
||||
let first_skipped = last_slot.clone() + T::Moment::sa(1);
|
||||
let first_skipped = last_slot.clone() + One::one();
|
||||
let cur_slot = now / slot_duration;
|
||||
|
||||
assert!(last_slot < cur_slot, "Only one block may be authored per slot.");
|
||||
if cur_slot == first_skipped { return }
|
||||
|
||||
let slot_to_usize = |slot: T::Moment| { slot.as_() as usize };
|
||||
|
||||
let skipped_slots = cur_slot - last_slot - T::Moment::sa(1);
|
||||
let skipped_slots = cur_slot - last_slot - One::one();
|
||||
|
||||
H::handle_report(AuraReport {
|
||||
start_slot: slot_to_usize(first_skipped),
|
||||
skipped: slot_to_usize(skipped_slots),
|
||||
start_slot: first_skipped.saturated_into::<usize>(),
|
||||
skipped: skipped_slots.saturated_into::<usize>(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Trait> OnTimestampSet<T::Moment> for Module<T> {
|
||||
fn on_timestamp_set(moment: T::Moment) {
|
||||
Self::on_timestamp_set::<T::HandleReport>(moment, T::Moment::sa(Self::slot_duration()))
|
||||
Self::on_timestamp_set::<T::HandleReport>(moment, Self::slot_duration())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,9 +263,9 @@ impl<T: Trait> ProvideInherent for Module<T> {
|
||||
_ => return Ok(()),
|
||||
};
|
||||
|
||||
let timestamp_based_slot = timestamp.as_() / Self::slot_duration();
|
||||
let timestamp_based_slot = timestamp / Self::slot_duration();
|
||||
|
||||
let seal_slot = data.aura_inherent_data()?;
|
||||
let seal_slot = data.aura_inherent_data()?.saturated_into();
|
||||
|
||||
if timestamp_based_slot == seal_slot {
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user