celo-blockchain
celo-blockchain copied to clipboard
When different validators commit in different rounds, all but one round will have signatures dropped
The istanbul consensus algorithm allows blocks to be committed in different rounds although it enforces that if a block was committed in a previous round, then only the same block can be committed in future rounds.
The BLS seal used to indicate block signers includes the round in its digest, so at most only signatures from one round can be included in the seal.
Some example scenarios:
All validators send commits for for block X in round 0, only one validator receives them and commits in round 0, remaining validators commit the block in round 1. If the validator to commit in round 0 is the next block proposer only their signature will make it into the parent block seals. All other validators will have their signatures dropped and appear as if they were offline even when they were functioning perfectly.
All validators send commits for for block X in round 0, f validators commit the block in round 0, remaining validators commit the block in round 1. If the next block proposer committed the block in round 1 then the validators who committed in round 0 will not have their signatures added to the parent block seals, even though they were arguably more available than the validators who committed in round 1.