A checkpoint is a node's own running total of the traffic it has carried, signed with the node's key at a moment ProofKit chooses. The Proofs page lists them.
How a checkpoint is made
- Every 30 minutes ProofKit sends each connected node a one-time nonce.
- The node signs its counter, the nonce and the time with its own ed25519 key. Exits count the traffic of their VPN users; entries count their WireGuard tunnel.
- The node sends the checkpoint back through a TLSNotary session with ProofKit's notary at notary.proofkit.org. TLSNotary (MPC-TLS) has the notary take part in the TLS connection and sign a record of that exchange. If that fails, the node sends the checkpoint over plain HTTPS with only its own signature.
Statuses
- Notarized: the checkpoint went through ProofKit's notary; its attestation is stored as the node sent it.
- Self-signed: only the node's signature, checked against the node's registered key. This is what happens when a node cannot reach the notary.
- Pending: the checkpoint is stored and its proof has not arrived yet.
- Failed: the node's signature did not check out.
What a checkpoint does and does not show
- It does show that the node committed to a number at a known time, in a way it cannot quietly rewrite later.
- It does not show that the number is true. The counter comes from the node itself, and so does the live report it is compared with. See Checkpoint diff.
- It is not what you are billed from. Billing uses the per-user traffic reports nodes send about once a minute.
- Whether the numbers are right is tested separately: test downloads through each exit, entry-versus-exit comparisons and anomaly checks. See How nodes are checked.
The notary is run by ProofKit, on ProofKit's own servers, not by a third party. Its public key is published at notary.proofkit.org/info.