pub trait CertifiedBlockIsAvailable:
BlockOutputsArePersisted
+ CorrectValidatorAvailability
+ EventualSynchrony
+ BlobRetention { }Expand description
Lemma (A certified block and its dependencies are retrievable). Once a block is a
CommittedBlock, any node that can reach a quorum can obtain the certificate, the ancestors
it needs, and every blob and event the block requires, and can then execute it.
This is what a uniform agreement statement needs beyond agreement itself: not merely that correct validators do not disagree, but that a node which took no part in the decision — one that was crashed throughout, or joined afterwards — reaches the same state.
Proof. The dependencies are of three kinds, each retrievable from any validator holding the block.
- The certificate and its ancestors.
Client::download_certificatesfetches from the validator set up to a target height, andreceive_certificate_with_checked_signaturesre-verifies before applying, so retrieval requires trusting no individual source. - Blobs.
Client::update_local_node_with_blobs_fromfetches byBlobIdacross validators, hedged. Content addressing supplies integrity for free — a wrong blob is detectable by hashing, so one honest source suffices — but says nothing about availability, which is the property actually needed here and which rests onBlobRetention. - Events. Read across chains as
OracleResponse::Event, so they are recorded in the block itself; a validator missing the publishing chain’s state answersEventsNotFound, and the updater’s response is to push the admin chain (update_admin_chain) or the publishing chain’s certificates.
Each is served by every validator that has processed the block, and a quorum has by definition
voted for it, so under CorrectValidatorAvailability and EventualSynchrony a reachable
quorum yields all three. ∎
What this does not bound. That the dependencies are retrievable does not say how long
retrieval takes; see BoundedCatchUp.