Files
pezkuwi-subxt/substrate/frame/scored-pool
Oliver Tale-Yazdi 8b9455465b Format and Sort features in Cargo.toml files (#14803)
* CI: Add feature sorting check

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Sort all features

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add some mistakes

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Revert "Add some mistakes"

This reverts commit b2b1099f979f6decb22d09b46689c1554bb72e81.

* CI job naming

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add oneliner formatting

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Explain tool

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Use latest version

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Better erorr message

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Format after master merge

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Use --check option

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Messed up the merge commit...

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
2023-08-23 14:21:52 +00:00
..
2022-09-20 22:13:09 +00:00

Scored Pool Module

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.

Interface

Public Functions

  • 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.

Usage

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(())
        }
    }
}

Dependencies

This module depends on the System module.

License: Apache-2.0