14 major breaking releases
|18.0.0||Mar 5, 2023|
|17.0.0||Feb 26, 2023|
|16.0.0||Feb 19, 2023|
|15.0.0||Feb 12, 2023|
#514 in Magic Beans
181 downloads per month
Used in 2 crates
Auto-generated README.md for publishing to crates.io
A semi-sorted list, where items hold an
AccountId based on some
id for short) might be synonym to a
nominator in some context, and
Score signifies the chance of each id being included in the final
It implements [
frame_election_provider_support::SortedListProvider] to provide a semi-sorted
list of accounts to another pallet. It needs some other pallet to give it some information about
the weights of accounts via [
This pallet is not configurable at genesis. Whoever uses it should call appropriate functions of
unsafe_regenerate) at their genesis.
The data structure exposed by this pallet aims to be optimized for:
- insertions and removals.
- iteration over the top* N items by score, where the precise ordering of items doesn't particularly matter.
- items are kept in bags, which are delineated by their range of score (See
- for iteration, bags are chained together from highest to lowest and elements within the bag are iterated from head to tail.
- items within a bag are iterated in order of insertion. Thus removing an item and re-inserting it will worsen its position in list iteration; this reduces incentives for some types of spam that involve consistently removing and inserting for better position. Further, ordering granularity is thus dictated by range between each bag threshold.
- if an item's score changes to a value no longer within the range of its current bag the item's position will need to be updated by an external actor with rebag (update), or removal and insertion.