This Deterministic Sortition procedure is used in the Succint Attestation consensus to select the block generator and the committee members. In particular, it is used in the Reduction and Agreement phases.
The deterministic procedure requires the set of active stakes , ordered in ascending order from oldest to newest, the latest global seed , current consensus round , and current consensus step .
The set of active stakes consists of tuples , where is the amount staked and is the BLS public key corresponding to the stake.
During each consensus step requiring deterministic sortition, a node is required to map the contents of the set of active stakes following the procedure outlined in the example below:
Given , the stake mapping set will be .
Given the counter (instantiated at 1), the committee size , and the total amount staked , the extraction proceeds in following steps while :
|Note: the public key can be extracted multiple times per committee.|