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.52020 年 3 月 24 日

1036神奇豆子

Download history 132/week @ 2024-04-26 16/week @ 2024-05-03 128/week @ 2024-05-17 35/week @ 2024-05-24 1/week @ 2024-05-31 2/week @ 2024-06-07 144/week @ 2024-06-21 1/week @ 2024-06-28 8/week @ 2024-07-05 167/week @ 2024-07-12 47/week @ 2024-07-19 2/week @ 2024-07-26

216 每月下载
polkadot-sdk 中使用

Apache-2.0

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