在外部执行期间从 Substrate 运行时访问链 ID 和创世哈希
Accessing chain id and genesis hash from the Substrate runtime during extrinsic execution
我正在使用 Substrate 的最新稳定版 pre-v2.0-3e65111
我想在处理外部时从 Substrate 运行时访问链 ID 或创世哈希(我正在接受签名的有效负载并尝试确保有效负载针对正确的链)。是否可以访问它们? (我知道我可以用 polkadot-js 做到这一点)
我看到了 trait CheckGenesis
但不知道如何将它用于创世哈希? (new
导致空向量)。
您可以在此处找到 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());
如果有帮助请告诉我!
我正在使用 Substrate 的最新稳定版 pre-v2.0-3e65111
我想在处理外部时从 Substrate 运行时访问链 ID 或创世哈希(我正在接受签名的有效负载并尝试确保有效负载针对正确的链)。是否可以访问它们? (我知道我可以用 polkadot-js 做到这一点)
我看到了 trait CheckGenesis
但不知道如何将它用于创世哈希? (new
导致空向量)。
您可以在此处找到 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());
如果有帮助请告诉我!