Skip to content

🙌 Witness

Witness is a content-private, accountless quorum timestamping protocol.

It lets a client prove that a hash existed at or before a certain time without revealing the underlying content and without relying on a single timestamping authority. A federation of independent Witnesses co-signs timestamp attestations, and clients can later verify the resulting proof offline.

Why quorum timestamping

A single timestamping service creates one place to trust, compromise, or lose. Quorum timestamping distributes that responsibility across independent Witness operators. A result is accepted only when the configured threshold signs the same attestation, making collusion or failure by fewer Witnesses visible in the trust model.

Witness is designed for evidence that should remain verifiable without handing the service the underlying material. It records a digest and signed metadata, not a document, message, or file.

How Witness works

  1. A client hashes its material locally with SHA-256.
  2. The gateway accepts the digest and creates a durable attestation job.
  3. Witness nodes independently sign the attestation.
  4. The gateway collects enough valid shares to meet the threshold.
  5. The client receives the signed attestation and can verify it locally.

The gateway can group attestations into Merkle batches. Optional proof bundles, federation cross-anchors, and external anchors provide additional evidence. Optional anonymous rate-limiting is available with Freebird.

What Witness proves

A valid attestation can show that the specified digest was accepted by the configured Witness network and signed by its required threshold, with the timestamp and network metadata contained in the attestation. A valid Merkle or anchor proof can additionally show inclusion in a recorded batch or anchor.

Verification is meaningful only against an authentic network configuration and the policy used to interpret that network. Start with verification and offline verification.

What Witness does not prove

Witness does not prove what produced a digest, who authored or owned the underlying material, that the material was true, or that it was kept secret. It does not provide Byzantine consensus, a universal ordering across networks, or anonymity from service and network operators. Hashes can be guessed or correlated when the possible content is known.

Quick start

Use the quick start to run the standard example network, submit a digest, retrieve its attestation, and verify the result. For a real deployment, read the operator documentation first.

Current status

Witness is pre-1.0 and has not received an external security audit. The project is not advertised as Byzantine-fault-tolerant. Treat keys, network configuration, thresholds, storage, and verification policy as operational security boundaries.

Use cases

  • Timestamping files, messages, and software releases without uploading them.
  • Preserving a verifiable record for journalism and human-rights work.
  • Recording research priorities or publication claims.
  • Adding durable evidence to software distribution workflows.

These uses still require independent judgment about the material and the operators behind the network.

Security notice

Read the threat model before relying on a result. Review the verification guidance and the operator guidance when running or evaluating a network. For context on alternatives and trade-offs, see the prior-art comparison.

Do not treat a timestamp alone as proof of authorship, authenticity, or truth.