53 个版本 (35 个主要版本更新)
37.0.0 | 2024 年 7 月 18 日 |
---|---|
36.0.0 | 2024 年 7 月 12 日 |
35.0.0 | 2024 年 6 月 21 日 |
34.0.0 | 2024 年 5 月 23 日 |
2.0.0-alpha.5 | 2020 年 3 月 24 日 |
1036 在 神奇豆子
216 每月下载
在 polkadot-sdk 中使用
2MB
37K SLoC
评分池模块
该模块维护一个评分成员池。池中的每个实体都可以分配一个 Score
。从这个池中构建一个集合 Members
。这个集合包含评分最高的 MemberCount
个实体。未评分的实体永远不会是 Members
的一部分。
如果一个实体想要成为池的一部分,则需要缴纳保证金。当实体撤资或被有权力的实体移除时,保证金将被退还。
每个周期
,将根据得分最高的成员刷新成员
集合,无论是否发生变化,都会调用T::MembershipChanged::set_members_sorted
。在首次加载时,将使用初始的成员
集合调用T::MembershipInitialized::initialize_members
。
您可以在任何时候撤回候选人资格/辞职。如果一个实体当前是成员,这将导致其从池
和成员
中移除;如果池中存在的话,实体将被下一个得分最高的候选人立即替换。
接口
公共函数
submit_candidacy
- 提交候选人资格以成为成员。需要存款。withdraw_candidacy
- 撤回候选人资格。将退还存款。score
- 给实体分配一个定量分数。kick
- 从池和成员中移除实体。将退还存款。change_member_count
- 改变进入成员
的候选人数量。
用法
use pallet_scored_pool::{self as scored_pool};
#[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 + scored_pool::Config {}
#[pallet::call]
impl<T: Config> Pallet<T> {
#[pallet::weight(0)]
pub fn candidate(origin: OriginFor<T>) -> DispatchResult {
let who = ensure_signed(origin)?;
let _ = <scored_pool::Pallet<T>>::submit_candidacy(
T::RuntimeOrigin::from(Some(who.clone()).into())
);
Ok(())
}
}
}
依赖项
此模块依赖于系统模块。
许可:Apache-2.0
依赖项
~18–33MB
~550K SLoC