mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 09:21:05 +00:00
Rework inherent data client side (#8526)
* Lol * Yeah * Moare * adaasda * Convert AURA to new pallet macro * AURA: Switch to `CurrentSlot` instead of `LastTimestamp` This switches AURA to use `CurrentSlot` instead of `LastTimestamp`. * Add missing file * Update frame/aura/src/migrations.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> * Remove the runtime side provide inherent code * Use correct weight * Add TODO * Remove the Inherent from AURA * 🤦 * Remove unused stuff * Update primitives authorship * Fix babe inherent data provider * Fix consensus-uncles * Fix BABE * Do some further changes to authorship primitives... :D * More work * Make it compile the happy path * Make it async! * Take hash * More stuff * Hacks * Revert "Hacks" This reverts commit cfffad88668cfdebf632a59c4fbfada001ef8251. * Fix * Make `execute_block` return the final block header * Move Aura digest stuff * Make it possible to disable equivocation checking * Fix fix fix * Some refactorings * Comment * Fixes fixes fixes * More cleanups * Some love * Better love * Make slot duration being exposed as `Duration` to the outside * Some slot info love * Add `build_aura_worker` utility function * Copy copy copy * Some stuff * Start fixing pow * Fix pow * Remove some bounds * More work * Make grandpa work * Make slots use `async_trait` * Introduce `SharedData` * Add test and fix bugs * Switch to `SharedData` * Make grandpa tests working * More Babe work * Make grandpa work * Introduce `SharedData` * Add test and fix bugs * Switch to `SharedData` * Make grandpa tests working * More Babe work * Make it async * Fix fix * Use `async_trait` in sc-consensus-slots This makes the code a little bit easier to read and also expresses that there can always only be one call at a time to `on_slot`. * Make grandpa tests compile * More Babe tests work * Fix network test * Start fixing service test * Finish service-test * Fix sc-consensus-aura * Fix fix fix * More fixes * Make everything compile *yeah* * Make manual-seal compile * More fixes * Start fixing Aura * Fix Aura tests * Fix Babe tests * Make everything compile * Move code around and switch to async_trait * Fix Babe * Docs docs docs * Move to FRAME * Fix fix fix * Make everything compile * Last cleanups * Fix integration test * Change slot usage of the timestamp * We really need to switch to `impl-trait-for-tuples` * Update primitives/inherents/src/lib.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> * Update primitives/inherents/src/lib.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> * Update primitives/inherents/src/lib.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> * Some extra logging * Remove dbg! * Update primitives/consensus/common/src/import_queue/basic_queue.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
This commit is contained in:
@@ -96,14 +96,8 @@ mod benchmarking;
|
||||
pub mod weights;
|
||||
|
||||
use sp_std::{result, cmp};
|
||||
use sp_inherents::InherentData;
|
||||
use frame_support::traits::{Time, UnixTime, OnTimestampSet};
|
||||
use sp_runtime::{
|
||||
RuntimeString,
|
||||
traits::{
|
||||
AtLeast32Bit, Zero, SaturatedConversion, Scale,
|
||||
}
|
||||
};
|
||||
use sp_runtime::traits::{AtLeast32Bit, Zero, SaturatedConversion, Scale};
|
||||
use sp_timestamp::{
|
||||
InherentError, INHERENT_IDENTIFIER, InherentType,
|
||||
};
|
||||
@@ -213,8 +207,9 @@ pub mod pallet {
|
||||
const INHERENT_IDENTIFIER: InherentIdentifier = INHERENT_IDENTIFIER;
|
||||
|
||||
fn create_inherent(data: &InherentData) -> Option<Self::Call> {
|
||||
let inherent_data = extract_inherent_data(data)
|
||||
.expect("Gets and decodes timestamp inherent data");
|
||||
let inherent_data = data.get_data::<InherentType>(&INHERENT_IDENTIFIER)
|
||||
.expect("Timestamp inherent data not correctly encoded")
|
||||
.expect("Timestamp inherent data must be provided");
|
||||
let data = (*inherent_data).saturated_into::<T::Moment>();
|
||||
|
||||
let next_time = cmp::max(data, Self::now() + T::MinimumPeriod::get());
|
||||
@@ -230,11 +225,13 @@ pub mod pallet {
|
||||
_ => return Ok(()),
|
||||
};
|
||||
|
||||
let data = extract_inherent_data(data).map_err(|e| InherentError::Other(e))?;
|
||||
let data = data.get_data::<InherentType>(&INHERENT_IDENTIFIER)
|
||||
.expect("Timestamp inherent data not correctly encoded")
|
||||
.expect("Timestamp inherent data must be provided");
|
||||
|
||||
let minimum = (Self::now() + T::MinimumPeriod::get()).saturated_into::<u64>();
|
||||
if t > *(data + MAX_TIMESTAMP_DRIFT_MILLIS) {
|
||||
Err(InherentError::Other("Timestamp too far in future to accept".into()))
|
||||
Err(InherentError::TooFarInFuture)
|
||||
} else if t < minimum {
|
||||
Err(InherentError::ValidAtTimestamp(minimum.into()))
|
||||
} else {
|
||||
@@ -264,12 +261,6 @@ impl<T: Config> Pallet<T> {
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_inherent_data(data: &InherentData) -> Result<InherentType, RuntimeString> {
|
||||
data.get_data::<InherentType>(&INHERENT_IDENTIFIER)
|
||||
.map_err(|_| RuntimeString::from("Invalid timestamp inherent data encoding."))?
|
||||
.ok_or_else(|| "Timestamp inherent data is not provided.".into())
|
||||
}
|
||||
|
||||
impl<T: Config> Time for Pallet<T> {
|
||||
type Moment = T::Moment;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user