Crates.io | pallet-scored-pool |
lib.rs | pallet-scored-pool |
version | 38.0.0 |
source | src |
created_at | 2020-02-28 05:51:09.58777 |
updated_at | 2024-09-26 06:03:44.742073 |
description | FRAME pallet for scored pools |
homepage | https://paritytech.github.io/polkadot-sdk/ |
repository | https://github.com/paritytech/polkadot-sdk.git |
max_upload_size | |
id | 213446 |
size | 37,718 |
The module maintains a scored membership pool. Each entity in the
pool can be attributed a Score
. From this pool a set Members
is constructed. This set contains the MemberCount
highest
scoring entities. Unscored entities are never part of Members
.
If an entity wants to be part of the pool a deposit is required. The deposit is returned when the entity withdraws or when it is removed by an entity with the appropriate authority.
Every Period
blocks the set of Members
is refreshed from the
highest scoring members in the pool and, no matter if changes
occurred, T::MembershipChanged::set_members_sorted
is invoked.
On first load T::MembershipInitialized::initialize_members
is
invoked with the initial Members
set.
It is possible to withdraw candidacy/resign your membership at any
time. If an entity is currently a member, this results in removal
from the Pool
and Members
; the entity is immediately replaced
by the next highest scoring candidate in the pool, if available.
submit_candidacy
- Submit candidacy to become a member. Requires a deposit.withdraw_candidacy
- Withdraw candidacy. Deposit is returned.score
- Attribute a quantitative score to an entity.kick
- Remove an entity from the pool and members. Deposit is returned.change_member_count
- Changes the amount of candidates taken into Members
.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(())
}
}
}
This module depends on the System module.
License: Apache-2.0
Polkadot SDK stable2409