Validator Elections

  1. If there is a tie between two or more validator groups during the validator elections, how does the D’hondt formula resolve this?

  2. How is the minimum threshold calculated?

  3. “Then, at each step, the process considers the highest-ranked candidate that has not yet been selected from each group, and elects the one that would maximize the average votes received over its group’s selected validators.” Is this the same thing as saying a candidate in the validator election will be ranked according to: (Total cGLD Voting for their Validator Group / (Total Elected Nodes from their Validator Group +1))?

  1. If there’s an exact tie it’s actually a bit arbitrary based on ordering but given that votes happen at the wei (10^-18) level it’s unlikely that this is very common in mainnet

  2. Not sure I understood the question, which threshold are you referring to?

  3. The protocol uses the Highest Averages Method

1 Like
  1. Got it.
  2. The Medium post titled Celo’s Proof of Stake mechanism says “At the end of every epoch, the validator election is run to determine the validator set that can sign blocks in the following epoch. Validators are selected according to the D’Hondt method, a form of proportional representation.First, groups that do not receive a minimum threshold of the total vote are excluded.
  3. Got it. Thank you.

Hi Patrick – the minimum threshold is measured as a fixed % of the total votes, i.e the voting Celo Gold. It’s called electabilityThreshold in the code. It’s set at https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/migrationsConfig.js#L28 to be 1/1000 but (like all parameter settings) this value may change before mainnet (and is also governable through the on-chain governance process). See https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/Election.sol#L728

1 Like