* mark template and utils as non-publish * switch to development version for testing * activate unleash check * maybe if I disable all rules... * Fix isolated compilation of `max-encoded-len-derive` with `syn` error[E0369]: binary operation `==` cannot be applied to type `syn::Path` --> src/lib.rs:88:29 | 88 | .filter(|attr| attr.path == parse_quote!(max_encoded_len_crate)) | --------- ^^ ----------------------------------- _ | | | syn::Path error: aborting due to previous error For more information about this error, try `rustc --explain E0369`. Error: could not compile `max-encoded-len-derive` * WIP: bump changes crates since v3 tag to next breaking cargo unleash version bump-breaking --changed-since v3.0.0 cargo unleash version set-pre dev --changed-since v3.0.0 FIXME: Don't modify crates that are not yet released, e.g. `max-encoded-len-derive` * Update lockfile * WIP: Bump sp-transaction-pool as well * WIP: Bump sp-offchain as well * WIP: Bump frame-system-rpc-runtime-api as well * WIP: Bump sp-authority-discovery as well * Manually deactivate dev-deps before `cargo unleash check` Otherwise we run into `Cycle detected` error. * Bump sp-consensus-slots * Add missing Cargo.lock change * Bump sp-consensus-vrf as well * Bump sp-keyring as well * Bump sp-consensus-pow as well * Try to speed up the `unleash-check` job Previously, the job took 106 minutes - let's see if explicitly specifying a `CARGO_TARGET_DIR` will help * fixup: Ensure the temp target dir exists for unleash check * Bump pallet-transaction-payment-rpc-runtime-api as well Needed for Polkadot * Bump pallet-transaction-payment-rpc as well Needed for Polkadot * Try updating crates after patching in the Polkadot CI job * Use another approach to update patched Substrate crates * Try to update all sp-core versions in Polkadot CI job * Simplify sp-core version checking * Apply another shellcheck lint * Just do the simplest thing I guess * Welp don't do --offline then * Clean up `unleash-check` job triggers Co-authored-by: Denis Pisarev <denis.pisarev@parity.io> * Fix a note in unleash-check cache step * Add a note about temporary optimization in cargo-unleash * Pin a newer version of cargo-unleash Co-authored-by: Igor Matuszewski <xanewok@gmail.com> Co-authored-by: Denis Pisarev <denis.pisarev@parity.io>
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 intoMembers.
Usage
use frame_support::{decl_module, dispatch};
use frame_system::ensure_signed;
use pallet_scored_pool::{self as scored_pool};
pub trait Config: scored_pool::Config {}
decl_module! {
pub struct Module<T: Config> 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