How validator sets are elected and managed with the Celo protocol.
Computing Set Differences
The validator set for a given epoch is elected at the end of the last block of the previous epoch. The new validator set is written to the extradata field of the header for this block. As an optimization, the validator set is encoded as the difference between the new and previous validator sets. Nodes that join the network are able to compute the validator set for the current epoch by starting with the initial validator set (encoded in the genesis block) and iteratively applying these diffs.