Skip to main content

ConflictingBlocks

Trait ConflictingBlocks 

Source
pub trait ConflictingBlocks { }
Expand description

Definition (Conflicting blocks). Two Blocks conflict when they have the same chain_id and height but different hashes. Certificates certify ConfirmedBlock and ValidatedBlock values, each of which wraps a Block and hashes to that block’s hash, so “certificates for conflicting blocks” is well defined.

Note that a Block is a ProposedBlock together with its BlockExecutionOutcome. Two blocks with the same proposal but different outcomes therefore conflict. This is deliberate: they lead to different chain states, so agreement must exclude them, and the exclusion is discharged by DeterministicExecution.

Ancestry needs no separate definition here: ChainTipState::verify_block_chaining requires a proposal’s height to equal the tip’s next height and its previous_block_hash to equal the tip’s block hash, so the committed blocks of a chain form a hash-linked list, one per height.

Implementors§