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§
- Epoch
Boundary Verifier - Verifies the last checkpoint of each listed epoch against the committee of that epoch.