如何从 frame_system::Config 访问存储?
How to access Storage from frame_system::Config?
我正在尝试将 Substrate 的 utxo-workshop utxo.rs
转换为 FRAME v2。
这是在 <Number<T>>
处出错的片段(因为 Number 是私有的?)。
#[frame_support::pallet]
pub mod pallet {
#[pallet::pallet]
#[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(PhantomData<T>);
#[pallet::config]
pub trait Config: frame_system::Config {
/// The overarching event type.
type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
}
fn disperse_reward(authorities: &[H256]) {
...
let hash = BlakeTwo256::hash_of(&(
&utxo,
<Number<T>>::get().unwrap().saturated_into::<u64>()
));
...
}
}
下面的行调用block_number(), I believe that's equivalent to the block_number getter of FRAME v2。构建运行时时可以访问它:
frame_support::construct_runtime!(
pub enum Test
{
System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
...
}
);
fn testing() {
let block_number = System::block_number();
}
但是,有没有办法访问frame_system::Config
上的存储值,没有 construct_runtime!
?
一旦构建了运行时,您就可以访问运行时托盘的存储,该过程由宏 construct_runtime!{}
完成。你可以在这里阅读 https://substrate.dev/rustdocs/v3.0.0-monthly-2021-05/frame_support/macro.construct_runtime.html
未出现在该宏中的 pallet 将不会成为您运行时的一部分,因此将无法访问其存储。
我正在尝试将 Substrate 的 utxo-workshop utxo.rs
转换为 FRAME v2。
这是在 <Number<T>>
处出错的片段(因为 Number 是私有的?)。
#[frame_support::pallet]
pub mod pallet {
#[pallet::pallet]
#[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(PhantomData<T>);
#[pallet::config]
pub trait Config: frame_system::Config {
/// The overarching event type.
type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
}
fn disperse_reward(authorities: &[H256]) {
...
let hash = BlakeTwo256::hash_of(&(
&utxo,
<Number<T>>::get().unwrap().saturated_into::<u64>()
));
...
}
}
下面的行调用block_number(), I believe that's equivalent to the block_number getter of FRAME v2。构建运行时时可以访问它:
frame_support::construct_runtime!(
pub enum Test
{
System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
...
}
);
fn testing() {
let block_number = System::block_number();
}
但是,有没有办法访问frame_system::Config
上的存储值,没有 construct_runtime!
?
一旦构建了运行时,您就可以访问运行时托盘的存储,该过程由宏 construct_runtime!{}
完成。你可以在这里阅读 https://substrate.dev/rustdocs/v3.0.0-monthly-2021-05/frame_support/macro.construct_runtime.html
未出现在该宏中的 pallet 将不会成为您运行时的一部分,因此将无法访问其存储。