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 :