Use WEIGHT_WIDTH to index full weight range in RNG #94
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
RNG
was using thePOSITION_BITS
to determine how many total bits can be used in a pool index. This limited the RNG's range to the total number of positions in the pool, rather than the total weight the pool could manage. In previous usage, this was sufficient for total weight as well, but since the system has since moved to handling ETH fully backed pools and denominate KEEP stakes by individual tokens instead of minstakes, the ~2M position limit is no longer sufficient to represent the magnitude of total weights that need to be handled.In addition to this fix, we are adding two tests for
BondedSortitionPool
and two tests forFullyBackedSortitionPool
covering the distribution ofselectSetGroup
results.For
BondedSortitionPool
we are making sure thatselectSetGroup
result distribution:For
FullyBackedSortitionPool
we are making sure thatselectSetGroup
result distribution:Here are example stats from 2500 selection and 100 operators in a
BondedSortitionPool
, where: