Expand description
Progress lemmas: the individual steps a correct driver can force after GST.
Each result here says that one step of the protocol completes, given that the previous ones
did. They are assembled into the liveness theorems in super::liveness.
The driver is ChainClient::process_pending_block, whose body
(process_pending_block_inner) performs, in order: request a timeout if the round has expired
(TimeoutCertificateForms, RoundAdvancement); finalize a locking block already in the
current round; otherwise choose a block — the locking block if there is one
(LockRecovery) — and a round (EventuallyCorrectLeader); submit the proposal
(ProposalAccepted, ValidationQuorumForms); and finalize it
(FinalizationQuorumForms).
Traits§
- Eventually
Correct Leader - Lemma (Eventually a correct owner leads a round that starts after GST). Under
ActiveCorrectDriver,LeaderFairnessandRoundAdvancement, there are infinitely manySingleLeaderrounds after GST whose leader is the correct driver’s owner. - Finalization
Quorum Forms - Lemma (The finalization quorum forms). Given a valid
ValidatedBlockCertificatefor blockBin roundr, and every correct validator in roundrafter GST, the driver obtains a validConfirmedBlockCertificateforBwithin2Δplus local processing — soBbecomes aCommittedBlock. - Lock
Recovery - Lemma (Lock recovery). Under
FullReachability, after a correct driver completesChainClient::synchronize_chain_stateits localChainManagerInfo::requested_lockinghas a round at least as high as theconfirmed_voteround of every correct validator — and, if any correct validator holds a lock at all, is aValidatedBlockCertificatefor the same block that the highest such validator locked. - Proposal
Accepted - Lemma (A recovered proposal is accepted). Let
rbe aSingleLeaderorValidatorround beginning after GST whose leader is the correct driver’s owner (EventuallyCorrectLeader), let every correct validator be in roundr(RoundAdvancement), and let the driver have completed lock recovery (LockRecovery). Then the proposal the driver submits in roundrpassesChainManager::check_proposed_blockat every correct validator. - Round
Advancement - Lemma (Round advancement). After GST, a correct driver can bring every correct validator
into a common round strictly above
r, withinO(Δ), providedrhas a configured timeout. Consequently the common round grows without bound as long as the driver keeps trying. - Timeout
Certificate Forms - Lemma (A timeout certificate forms). Suppose that after GST every correct validator is in
the same round
rat the chain’s pending height, thatrhas a configured timeout (RoundsWithoutTimeout), and that the timeout has elapsed on every correct validator’s clock. Then a correct driver’sChainClient::request_leader_timeoutreturns a validTimeoutCertificatefor roundrwithin2Δplus local processing. - Validation
Quorum Forms - Lemma (The validation quorum forms). Under the hypotheses of
ProposalAccepted, the driver obtains a validValidatedBlockCertificatefor its block in roundrwithin2Δplus local processing.