Skip to main content

TimeoutCertificateForms

Trait TimeoutCertificateForms 

Source
pub trait TimeoutCertificateForms:
    TimeoutVoteConditions
    + RoundsWithoutTimeout
    + CorrectValidatorsFormQuorum
    + CorrectValidatorAvailability
    + EventualSynchrony
    + ClockAccuracy { }
Expand description

Lemma (A timeout certificate forms). Suppose that after GST every correct validator is in the same round r at the chain’s pending height, that r has a configured timeout (RoundsWithoutTimeout), and that the timeout has elapsed on every correct validator’s clock. Then a correct driver’s ChainClient::request_leader_timeout returns a valid TimeoutCertificate for round r within plus local processing.

Proof. ChainClient::request_leader_timeout issues CommunicateAction::RequestTimeout { chain_id, height, round } with round read from its local ChainManagerInfo::current_round and height from ChainInfo::next_block_height, through Client::communicate_chain_action. Each recipient runs ChainWorkerState::vote_for_leader_timeout, which checks the height against ChainTipState::next_block_height and calls ChainManager::create_timeout_vote. By TimeoutVoteConditions its four conditions hold under the hypotheses, so every correct validator signs; by CorrectValidatorAvailability and EventualSynchrony every such vote arrives within Δ of the request.

The votes aggregate: communicate_with_quorum groups by the full signed payload (value_hash, round, unlocking_round, first_round, justification_commitment), and every timeout vote for this height carries the same Timeout::new(chain_id, height, epoch) value — identical by ClockAccuracy-independent construction, since the epoch is the chain’s — with unlocking_round: None, first_round: false and no justification commitment. So all correct votes land in one group, which by CorrectValidatorsFormQuorum reaches quorum_threshold, and communicate_with_quorum returns it. ∎

The hypothesis “every correct validator is in round r” is not free — see RoundAdvancement, which is what establishes it for the next round.

Implementors§