mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 18:57:57 +00:00
Define HeaderIdProvider trait
Define HeaderIdProvider trait Signed-off-by: Serban Iorga <serban@parity.io>
This commit is contained in:
committed by
Bastian Köcher
parent
2b03f4e9e9
commit
dc38e3d079
@@ -26,7 +26,7 @@ use frame_system::RawOrigin;
|
||||
use scale_info::TypeInfo;
|
||||
use sp_core::{hash::H256, storage::StorageKey};
|
||||
use sp_io::hashing::blake2_256;
|
||||
use sp_runtime::traits::BadOrigin;
|
||||
use sp_runtime::traits::{BadOrigin, Header as HeaderT};
|
||||
use sp_std::{convert::TryFrom, fmt::Debug, vec, vec::Vec};
|
||||
|
||||
pub use chain::{
|
||||
@@ -34,6 +34,7 @@ pub use chain::{
|
||||
HasherOf, HeaderOf, IndexOf, SignatureOf, TransactionEraOf,
|
||||
};
|
||||
pub use frame_support::storage::storage_prefix as storage_value_final_key;
|
||||
use num_traits::{CheckedSub, One};
|
||||
pub use storage_proof::{
|
||||
Error as StorageProofError, ProofSize as StorageProofSize, StorageProofChecker,
|
||||
};
|
||||
@@ -83,6 +84,27 @@ pub const ROOT_ACCOUNT_DERIVATION_PREFIX: &[u8] = b"pallet-bridge/account-deriva
|
||||
#[derive(RuntimeDebug, Default, Clone, Copy, Eq, Hash, PartialEq)]
|
||||
pub struct HeaderId<Hash, Number>(pub Number, pub Hash);
|
||||
|
||||
/// Generic header id provider.
|
||||
pub trait HeaderIdProvider<Header: HeaderT> {
|
||||
// Get the header id.
|
||||
fn id(&self) -> HeaderId<Header::Hash, Header::Number>;
|
||||
|
||||
// Get the header id for the parent block.
|
||||
fn parent_id(&self) -> Option<HeaderId<Header::Hash, Header::Number>>;
|
||||
}
|
||||
|
||||
impl<Header: HeaderT> HeaderIdProvider<Header> for Header {
|
||||
fn id(&self) -> HeaderId<Header::Hash, Header::Number> {
|
||||
HeaderId(*self.number(), self.hash())
|
||||
}
|
||||
|
||||
fn parent_id(&self) -> Option<HeaderId<Header::Hash, Header::Number>> {
|
||||
self.number()
|
||||
.checked_sub(&One::one())
|
||||
.map(|parent_number| HeaderId(parent_number, *self.parent_hash()))
|
||||
}
|
||||
}
|
||||
|
||||
/// Unique identifier of the chain.
|
||||
///
|
||||
/// In addition to its main function (identifying the chain), this type may also be used to
|
||||
|
||||
Reference in New Issue
Block a user