delegate_selection
The selection strategy for delegates (i.e. validators in the committee) at each level and round.
It can be either :
random
#![allow(unused)] fn main() { Random }
This follows what is implemented in the Tezos node. Delegates are chosen at random depending on their stake and a sampling strategy. Use this if you want to be as close as possible to a mainnet Tezos node and if your scenario does not depend on the delegates and the committee.
round_robin
#![allow(unused)] fn main() { Round_robin }
Delegates are chosen in a round robin manner over the list of nodes.
round_robin_over
#![allow(unused)] fn main() { Round_robin_over [ [N "b1"; N "b2"; N "b3"]; [N "b2"]; [N "b3"; N "b1"; N "b2"] ] }
The explicit list of who is in the committee and who is the baker
for each level and round. The last item of the list is iterated over
in a round robin manner for the latter levels. In the example above,
the first level (of the protocol) will have b1
be the proposer for
round 0, b2
be the proposer for round 1, b3
be the proposer for
round 2, b1
be the proposer for round 3, and so on. In the second
level, b2
is the proposer for all the rounds. In subsequent levels,
the proposer is chosen in the list [b3, b1, b2]
by an index i who is
computed (by round robin) by:
or more generally, if the delegate selection strategy is
Round_robin_over l
(and we note by the element of
the list modulo its size):
-
When the level is smaller than :
-
When the level is greater or equal than :