Compare your view of a log¶
A hub can show different, internally consistent histories to different audiences: a split view. No one can see it from their own view alone. You find it by comparing the log state a hub showed you with the one it showed an independent monitor.
What you compare¶
A hub's log state is a checkpoint: the log's size and Merkle root, signed by the hub. Get one from the hub:
Get the monitor's from its mirror of the same log:
The hub signs both. Two checkpoints that cannot belong to one log prove a split view.
- Same size: the roots must be equal. Different roots, both with a valid hub signature, are a split view.
- Different sizes: check consistency, as below.
Check consistency¶
A log only grows, so a smaller checkpoint must be a prefix of a larger one. An RFC 6962 consistency proof shows this with the two roots and a few hashes.
The monitor computes a consistency proof from your earlier size to the size it accepted:
{
"type": "IsccLogConsistencyProof",
"firstSize": 1,
"secondSize": 220,
"consistencyProof": ["6EXyB1geohg7S5JLntu1k2itax1HegKkRjZQ1gxUsAg=", "..."]
}
Verify it with the root of your checkpoint at firstSize and the root of the monitor's at secondSize. Use an
RFC 6962 library such as Go's transparency-dev/merkle
(proof.VerifyConsistency). If the proof fails, the two checkpoints cannot both be states of one log.
from can be any size up to the monitor's accepted size, even one the monitor never saw a checkpoint for. If your
checkpoint is larger than the monitor's, the endpoint returns 400: the monitor has not seen that state yet. Wait
for its next poll, by default within five minutes.
Any tlog-tiles client can also compute the consistency proof from the hub's own log tiles, without the monitor.
What the monitor checks on its own¶
The monitor compares each checkpoint it fetches with the earlier ones. If a hub's log shrinks, changes its root at the same size, or fails a consistency proof, the monitor freezes the hub and keeps both checkpoints as evidence. See How it works.
The monitor cannot see on its own that a hub shows a different history to someone else. That is why your comparison matters, and why more than one independent monitor helps.
Coverage¶
The monitor vouches only for what it observed from its coverage start onward. Each hub's page and the certificate's Comparison Anchor show the coverage start. A split view that ended before then is out of the monitor's reach.