diff --git a/substrate/srml/system/src/lib.rs b/substrate/srml/system/src/lib.rs index 0a1955a2a8..ad8957c349 100644 --- a/substrate/srml/system/src/lib.rs +++ b/substrate/srml/system/src/lib.rs @@ -40,7 +40,7 @@ extern crate sr_primitives as primitives; extern crate safe_mix; use rstd::prelude::*; -use primitives::traits::{self, CheckEqual, SimpleArithmetic, SimpleBitOps, Zero, One, Bounded, +use primitives::traits::{self, CheckEqual, SimpleArithmetic, SimpleBitOps, Zero, One, Bounded, Lookup, Hash, Member, MaybeDisplay, EnsureOrigin, Digest as DigestT, As, CurrentHeight, BlockNumberToHash}; use substrate_primitives::storage::well_known_keys; use runtime_support::{storage, StorageValue, StorageMap, Parameter}; @@ -397,14 +397,29 @@ impl Module { } } -impl CurrentHeight for Module { +pub struct ChainContext(::rstd::marker::PhantomData); +impl Default for ChainContext { + fn default() -> Self { + ChainContext(::rstd::marker::PhantomData) + } +} + +impl Lookup for ChainContext { + type Source = T::AccountId; + type Target = T::AccountId; + fn lookup(&self, s: Self::Source) -> rstd::result::Result { + Ok(s) + } +} + +impl CurrentHeight for ChainContext { type BlockNumber = T::BlockNumber; fn current_height(&self) -> Self::BlockNumber { >::block_number() } } -impl BlockNumberToHash for Module { +impl BlockNumberToHash for ChainContext { type BlockNumber = T::BlockNumber; type Hash = T::Hash; fn block_number_to_hash(&self, n: Self::BlockNumber) -> Option {