57个版本 (35次重大变更)
新 37.1.0 | 2024年8月14日 |
---|---|
37.0.0 | 2024年7月18日 |
36.1.0 | 2024年8月16日 |
36.0.0 | 2024年7月12日 |
2.0.0-alpha.5 | 2020年3月24日 |
#12 in 魔法豆
每月下载量16,379
用于410个crate(318个直接使用)
2.5MB
44K SLoC
系统模块
System模块提供了对核心类型和跨切面实用工具的低级访问。它作为其他模块与Substrate框架组件交互的基础层。
概述
System模块定义了Substrate运行时中使用的核心数据类型。它还提供了几个实用函数(见Pallet
),用于其他FRAME模块。
此外,它还管理着支持当前区块执行的外部数据存储项、索引、事件记录和摘要项等。
它还处理低级任务,例如记录存储、临时存储条目的基本设置和拆除,以及访问先前块的哈希。
界面
可调用的函数
系统模块不实现任何可调用的函数。
公共函数
有关公开可用函数的详细信息,请参阅Pallet
结构。
签名扩展
系统模块定义以下扩展
CheckWeight
:检查区块的权重和长度,并确保它不超过限制。CheckNonce
:检查交易的nonce。包含一个类型为T::Nonce
的单个有效载荷。CheckEra
:检查交易的时期。包含一个类型为Era
的单个有效载荷。CheckGenesis
:检查交易提供的创世哈希。必须是交易签名有效载荷的一部分。CheckSpecVersion
:检查运行时版本与用于签署交易的版本是否相同。CheckTxVersion
:检查交易版本与用于签署交易的版本是否相同。
查找运行时聚合器文件(例如node/runtime
),以查看链中包含的所有签名扩展的完整列表。
使用方法
先决条件
导入系统模块,并从系统特质派生您模块的配置特质。
示例 - 获取当前块的代码外数和父哈希
#[frame_support::pallet]
pub mod pallet {
use super::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
#[pallet::config]
pub trait Config: frame_system::Config {}
#[pallet::pallet]
pub struct Pallet<T>(_);
#[pallet::call]
impl<T: Config> Pallet<T> {
#[pallet::weight(0)]
pub fn system_module_example(origin: OriginFor<T>) -> DispatchResult {
let _sender = ensure_signed(origin)?;
let _extrinsic_count = <system::Pallet<T>>::extrinsic_count();
let _parent_hash = <system::Pallet<T>>::parent_hash();
Ok(())
}
}
}
许可证:Apache-2.0
依赖项
~17–32MB
~541K SLoC