Skip to content
Snippets Groups Projects
Commit 075b9bee authored by Xiliang Chen's avatar Xiliang Chen Committed by GitHub
Browse files

add RelaychainBlockNumberProvider (#515)

* add RelaychainBlockNumberProvider

* add docs
parent 5f96d5ee
No related merge requests found
...@@ -51,6 +51,7 @@ use sp_runtime::{ ...@@ -51,6 +51,7 @@ use sp_runtime::{
InvalidTransaction, TransactionLongevity, TransactionSource, TransactionValidity, InvalidTransaction, TransactionLongevity, TransactionSource, TransactionValidity,
ValidTransaction, ValidTransaction,
}, },
offchain::storage_lock::BlockNumberProvider,
}; };
use sp_std::{cmp, collections::btree_map::BTreeMap, prelude::*}; use sp_std::{cmp, collections::btree_map::BTreeMap, prelude::*};
...@@ -1038,3 +1039,18 @@ pub trait CheckInherents<Block: BlockT> { ...@@ -1038,3 +1039,18 @@ pub trait CheckInherents<Block: BlockT> {
validation_data: &RelayChainStateProof, validation_data: &RelayChainStateProof,
) -> frame_support::inherent::CheckInherentsResult; ) -> frame_support::inherent::CheckInherentsResult;
} }
/// Implements [`BlockNumberProvider`] that returns relaychain block number fetched from
/// validation data.
/// NTOE: When validation data is not available (e.g. within on_initialize), 0 will be returned.
pub struct RelaychainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);
impl<T: Config> BlockNumberProvider for RelaychainBlockNumberProvider<T> {
type BlockNumber = relay_chain::BlockNumber;
fn current_block_number() -> relay_chain::BlockNumber {
Pallet::<T>::validation_data()
.map(|d| d.relay_parent_number)
.unwrap_or_default()
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment