Help · Users

Traffic Checkpoints and TLSNotary

Every 30 minutes each connected node signs its own traffic counter and sends it to ProofKit, most through a TLSNotary session with ProofKit's notary. A checkpoint is a tamper-evident record of what a node reported, not proof that the number is right.

example
Every 30 min:  ProofKit sends a one-time nonce
Node signs:    counter 262.4 GB + nonce + time
Sent through:  ProofKit's TLSNotary notary → notarized
               or plain HTTPS               → self-signed

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

  1. Every 30 minutes ProofKit sends each connected node a one-time nonce.
  2. 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.
  3. 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.