0

我正在使用 Substrate 的最新稳定版pre-v2.0-3e65111 ,我想在处理外部数据时从 Substrate 运行时访问链 ID 或创世哈希(我正在接受签名的有效负载并试图确保有效负载针对正确的链)。是否可以访问它们?(我知道我可以用 polkadot-js 做到这一点)我看到了 traitCheckGenesis但不知道如何使用它来生成哈希?(new导致空向量)。

4

1 回答 1

2

你可以在这里找到实现CheckGenesishttps ://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 回答