Skip to main content

CertifiedBlockIsAvailable

Trait CertifiedBlockIsAvailable 

Source
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_certificates fetches from the validator set up to a target height, and receive_certificate_with_checked_signatures re-verifies before applying, so retrieval requires trusting no individual source.
  • Blobs. Client::update_local_node_with_blobs_from fetches by BlobId across 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 on BlobRetention.
  • Events. Read across chains as OracleResponse::Event, so they are recorded in the block itself; a validator missing the publishing chain’s state answers EventsNotFound, 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.

Implementors§