#pallet #online #heartbeat #frame #session #validation #polkadot

no-std pallet-im-online

FRAME 的我在线托盘(polkadot v1.15.0)

52 个版本 (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.52020 年 3 月 24 日

#1348魔豆

Download history 848/week @ 2024-04-25 934/week @ 2024-05-02 705/week @ 2024-05-09 1046/week @ 2024-05-16 1201/week @ 2024-05-23 1145/week @ 2024-05-30 1271/week @ 2024-06-06 1032/week @ 2024-06-13 1603/week @ 2024-06-20 988/week @ 2024-06-27 579/week @ 2024-07-04 1445/week @ 2024-07-11 1081/week @ 2024-07-18 1101/week @ 2024-07-25 1174/week @ 2024-08-01 1107/week @ 2024-08-08

4,699 每月下载量
用于 15 crate(5 个直接使用)

Apache-2.0

2.5MB
46K SLoC

我在线模块

如果本地节点是验证者(即包含授权密钥),则该模块在每个新会话中发送心跳交易,以此作为节点当前时代在线的简单机制。

对每个时代接收的心跳进行跟踪,并在每个新时代重置。该模块公开了两个公共函数,以查询当前时代或会话中是否已收到心跳。

心跳是一个已签名的交易,使用会话密钥进行签名,并包括本地验证者链的最新最佳区块编号以及 NetworkState。它作为未签名交易通过链外工作者提交。

接口

公共函数

  • is_online - 如果验证者在当前会话中发送了心跳信号,则为 True。

用法

use pallet_im_online::{self as im_online};

#[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 + im_online::Config {}

    #[pallet::call]
    impl<T: Config> Pallet<T> {
        #[pallet::weight(0)]
        pub fn is_online(origin: OriginFor<T>, authority_index: u32) -> DispatchResult {
            let _sender = ensure_signed(origin)?;
            let _is_online = <im_online::Pallet<T>>::is_online(authority_index);
            Ok(())
        }
    }
}

依赖项

本模块依赖于 Session 模块

许可证:Apache-2.0

依赖项

~17–32MB
~531K SLoC