Skip to main content

Module verifier

Module verifier 

Source
Expand description

Verify the last checkpoint of an epoch against the committee of that epoch.

The committee of an epoch is recorded only in the last checkpoint of the previous epoch, as EndOfEpochData::next_epoch_committee. Verifying the last checkpoint of epoch N therefore requires the committee taken from the last checkpoint of epoch N - 1, which must itself be verified the same way going all the way back to the genesis committee.

EpochBoundaryVerifier runs this verification given a starting committee (the genesis committee) after resolving the epoch boundaries from the remote store. Each checkpoint is fetched into memory from the remote store and dropped once verified. The verified checkpoints are exposed as a [Stream], so callers can consume each epoch’s checkpoint as soon as it is verified.

The most prominent use of this logic is the verification of formal snapshots. This is done by comparing the elliptic-curve multiset hash (ECMH) of the live objects included in the snapshot against the CheckpointCommitment stored in the last checkpoint of the respective epoch.

Structs§

EpochBoundaryVerifier
Verifies the last checkpoint of each listed epoch against the committee of that epoch.