Files
pezkuwi-subxt/substrate/frame/scored-pool
Wei Tang 9fdd4672b0 Use tracing-based subscriber logging (#6825)
* init_logger: switch from log-based to tracing-based and add compatibility layer

* Move tracing profiling subscriber related config realization

* sp-tracing: change profiling to be a layer instead of a subscriber

* Enable profiling layer in cli

* Change all test env_logger init to sp_tracing::try_init_simple

* Remove all local env_logger dependency

* Add missing tracing-subscriber dependency

* frame-sudo: fix tests

* frame-support: fix tests

* Fix frame/pallet and executor tests

* Fix the remaining tests

* Use subscriber's try_init as recommended by @davidbarsky

* Be explict that the tracing-log feature is needed

* Set subscriber writer to stderr

* Shorter line width

* Update cargo lock tracing version

* Fix sc_tracing crate compile

* Fix sc_authority_discovery crate test

* unremove default-features

* Leave enabled to default true

* Warn if global default cannot be set

* Fix unused import

* Remove unused PROXY_TARGET

* Change all reference from rc5 to rc6

* Change all reference of rc2 to rc6

* Fix styling

* Fix typo

* make logger init error'ing

* re-fixing the test issue

Co-authored-by: Benjamin Kampmann <ben@parity.io>
2020-09-17 11:04:43 +02:00
..
2020-08-20 17:04:42 +02:00
2020-08-20 17:04:42 +02: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 frame_support::{decl_module, dispatch};
use frame_system::ensure_signed;
use pallet_scored_pool::{self as scored_pool};

pub trait Trait: scored_pool::Trait {}

decl_module! {
	pub struct Module<T: Trait> for enum Call where origin: T::Origin {
		#[weight = 0]
		pub fn candidate(origin) -> dispatch::DispatchResult {
			let who = ensure_signed(origin)?;

			let _ = <scored_pool::Module<T>>::submit_candidacy(
				T::Origin::from(Some(who.clone()).into())
			);
			Ok(())
		}
	}
}

Dependencies

This module depends on the System module.

License: Apache-2.0