53 个版本 (34 个重大变更)
36.0.0 | 2024年7月18日 |
---|---|
35.0.0 | 2024年7月12日 |
34.0.0 | 2024年6月24日 |
33.0.0 | 2024年5月23日 |
2.0.0-alpha.5 | 2020年3月24日 |
#19 in #polkadot
12,916 每月下载量
在 140 个crate中使用 (73 直接使用)
2MB
38K SLoC
时间戳模块
时间戳模块提供了获取和设置链上时间的功能。
概述
时间戳模块允许验证者在每个区块中设置和验证时间戳。
它使用固有数据来提供时间戳,这些数据由区块作者提供,并由其他验证者验证/确认。每个区块只能设置一次时间戳,并且必须在每个区块中设置。在设置新的时间戳之前可能存在时间限制。
注意: 时间戳模块是查询链上时间的推荐方式,而不是使用基于区块号的方法。基于区块号的时间测量可能会因为累积计算错误而导致问题,因此应避免使用。
接口
可调用的函数
set
- 设置当前时间。
公共函数
get
- 获取当前区块的时间。如果在此函数设置时间戳之前调用,它将返回上一个区块的时间戳。
配置获取器
MinimumPeriod
- 获取链的区块之间最小(并建议)的周期。
使用
以下示例展示了如何在自定义模块中使用时间戳模块查询当前时间戳。
先决条件
将时间戳模块导入您的自定义模块,并从时间戳特质派生模块配置特质。
获取当前时间戳
use pallet_timestamp::{self as timestamp};
#[frame_support::pallet]
pub mod pallet {
use super::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
#[pallet::pallet]
pub struct Pallet<T>(_);
#[pallet::config]
pub trait Config: frame_system::Config + timestamp::Config {}
#[pallet::call]
impl<T: Config> Pallet<T> {
#[pallet::weight(0)]
pub fn get_time(origin: OriginFor<T>) -> DispatchResult {
let _sender = ensure_signed(origin)?;
let _now = <timestamp::Pallet<T>>::get();
Ok(())
}
}
}
FRAME中的示例
会话模块使用时间戳模块进行会话管理。
相关模块
许可协议:Apache-2.0
依赖项
~18–33MB
~556K SLoC