我正在使用 Substrate 的最新稳定版pre-v2.0-3e65111
,我想在处理外部数据时从 Substrate 运行时访问链 ID 或创世哈希(我正在接受签名的有效负载并试图确保有效负载针对正确的链)。是否可以访问它们?(我知道我可以用 polkadot-js 做到这一点)我看到了 traitCheckGenesis
但不知道如何使用它来生成哈希?(new
导致空向量)。
问问题
238 次
1 回答
2
你可以在这里找到实现CheckGenesis
:https ://github.com/paritytech/substrate/blob/master/frame/system/src/lib.rs#L1417
impl<T: Trait + Send + Sync> SignedExtension for CheckGenesis<T> {
type AccountId = T::AccountId;
type Call = <T as Trait>::Call;
type AdditionalSigned = T::Hash;
type DispatchInfo = DispatchInfo;
type Pre = ();
const IDENTIFIER: &'static str = "CheckGenesis";
fn additional_signed(&self) -> Result<Self::AdditionalSigned, TransactionValidityError> {
Ok(<Module<T>>::block_hash(T::BlockNumber::zero()))
}
}
从这里,您应该能够看到您可以通过调用以下方法访问创世哈希:
frame_system::Module::<T>::block_hash(T::BlockNumber::zero());
让我知道这是否有帮助!
于 2020-03-13T16:04:06.073 回答