54 个版本 (35 个主要版本更新)

37.0.0 2024 年 7 月 18 日
36.0.0 2024 年 7 月 12 日
35.0.0 2024 年 6 月 24 日
34.0.0 2024 年 5 月 23 日
2.0.0-alpha.52020 年 3 月 24 日

#4 in #account-id

Download history 2769/week @ 2024-05-05 2729/week @ 2024-05-12 2936/week @ 2024-05-19 3105/week @ 2024-05-26 3075/week @ 2024-06-02 2139/week @ 2024-06-09 2531/week @ 2024-06-16 3529/week @ 2024-06-23 1395/week @ 2024-06-30 1945/week @ 2024-07-07 3742/week @ 2024-07-14 2521/week @ 2024-07-21 2663/week @ 2024-07-28 2440/week @ 2024-08-04 3526/week @ 2024-08-11 3057/week @ 2024-08-18

每月 11,963 次下载
用于 103 包(46 个直接使用)

Apache-2.0

3MB
57K SLoC

会话模块

会话模块允许验证者管理他们的会话密钥,提供更改会话长度的功能,并处理会话轮换。

概述

术语

  • 会话:会话是一段时间,具有一组固定的验证者。验证者只能在会话更改时加入或退出验证者集。它以区块数量来衡量。结束会话的区块由 ShouldEndSession 特质确定。当会话结束时,可以通过 OnSessionEnding 实现选择新的验证者集。
  • 会话密钥:会话密钥实际上是几个放在一起的密钥,它们提供了网络权威/验证者执行其职责所需的各项签名功能。
  • 验证者 ID:每个账户都有一个关联的验证者 ID。对于一些简单的委托系统,这可能只是账户 ID 的相同。对于使用存档/控制器模型的委托系统,验证者 ID 将是控制器的存档账户 ID。
  • 会话密钥配置过程:会话密钥使用 set_keys 设置,用于下一会话之后的会话。它们存储在 NextKeys 中,这是一个调用者 ValidatorId 与提供的会话密钥之间的映射。 set_keys 允许用户在成为验证者之前设置其会话密钥。由于它使用 ensure_signed,这是一个公开调用,它检查原始来源是否为已签名账户。因此,存储在 NextKeys 中的原始账户 ID 可能不一定与区块作者或验证者相关联。账户的会话密钥在其账户余额为零时将被删除。
  • 会话长度:此组件不假设每个会话的长度。相反,它依赖于 ShouldEndSession 的实现来决定新会话的开始。此组件提供了 PeriodicSessions 结构,用于简单的周期性会话。
  • 会话轮换配置:配置为“正常”(可奖励的会话,其中应用奖励)或“异常”(可惩罚)的会话轮换。
  • 会话轮换过程:在每块的开始,on_initialize 函数查询提供的 ShouldEndSession 实现。如果会话应结束,则从存储中获取新激活的验证者 ID 和会话密钥,并传递给 SessionHandler。由 SessionManager::new_session 提供的验证者集和相应的会话密钥(这些密钥可能在前一阶段通过 set_keys 注册)被写入存储,在那里它们将在下一个会话之前等待,然后传递给 SessionHandler

目标

会话组件旨在实现以下功能

  • 为即将到来的会话设置验证者集的会话密钥。
  • 控制会话的长度。
  • 配置并在正常或异常会话轮换之间切换。

接口

可调用的函数

  • set_keys - 为即将到来的会话设置验证者的会话密钥。

公共函数

  • rotate_session - 切换到下一个会话。注册新的权限集。为下一个会话轮换排队更改。
  • disable_index - 通过索引禁用验证者。
  • disable - 通过验证者 ID 禁用验证者

使用方法

FRAME 的示例

抵押组件使用会话组件来获取验证者集。

use pallet_session as session;

fn validators<T: pallet_session::Config>() -> Vec<<T as pallet_session::Config>::ValidatorId> {
	pallet_session::Validators::<T>::get()
}

许可证:Apache-2.0

依赖

~17–32MB
~539K SLoC