Prove when something existedβwithout trusting any single party, and without the bottlenecks of a blockchain.
Proof of existence matters. Journalists need to verify when documents surfaced. Researchers need to establish priority. Human rights organizations need tamper-evident records. Artists need to prove original creation dates.
Current solutions all have the same flaw: single points of trust.
Trusted timestamping authorities? They're businesses. They get acquired, shut down, or compromised. Your proof dies with them.
Blockchain? Ethereum costs money. Bitcoin takes an hour. Both are permanent public recordsβfine for some things, disastrous for others. And good luck explaining gas fees to a journalist on deadline.
What we need is something fast, free, private, and trust-minimized. Something that can survive the death of any single organization.
Witness is a federated threshold-signed timestamping service. Instead of trusting one authority or waiting for blockchain consensus, you get signatures from multiple independent witnesses.
The math is simple: if 3-of-5 independent witnesses sign your timestamp, all three would have to collude to forge one. Run witnesses in different jurisdictions, operated by different organizations, and collusion becomes coordination across borders and institutions.
This gives you:
Blockchains can still be usedβas an optional settlement layer. Batch merkle roots hourly or daily to Ethereum, the Internet Archive, or Certificate Transparency logs. But the primary system works without them.
ββββββββββββββ
β Client β Submits: SHA-256 hash + optional metadata
βββββββ¬βββββββ
β
βΌ
ββββββββββββββ
β Gateway β Routes to witnesses, aggregates signatures
βββββββ¬βββββββ
β
ββββββββββββββββ¬βββββββββββββββ
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββββ
βWitness 1 β βWitness 2 β βWitness 3 β
βFrankfurt β βNuremberg β β Helsinki β
ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ
β β β
βββββββββββββββ΄ββββββββββββββ
β
βΌ
βββββββββββββββββ
β Attestation β Threshold signatures + timestamp
βββββββββ¬ββββββββ
β
βΌ
βββββββββββββββββ
βExternal Anchorβ Optional: Internet Archive,
β (batch) β Trillian, DNS TXT, Ethereum
βββββββββββββββββ
Each witness independently signs an attestation containing the hash, timestamp, and network metadata. The gateway aggregates signatures until threshold is met, then returns the signed attestation.
Verification requires only the attestation and the network's public keysβno need to query any server.
| Method | Speed | Cost | Trust Model |
|---|---|---|---|
| Trusted Authority | ~100ms | $$ | Single point of failure |
| Bitcoin | ~60 min | $$$ | Decentralized |
| Ethereum | ~15 sec | $$ | Decentralized |
| Witness | ~100ms | Free | Threshold trust |
Timestamp leaked documents, interview recordings, and research data. Establish provenance without revealing content. Create chains of custody that survive organizational changes.
Create tamper-evident records of evidence. Prove when documentation was collected. Maintain archives that can be verified independently decades later.
Establish proof of original creation without publication. Protect drafts, demos, and works-in-progress. No registration fees, no bureaucracy.
Timestamped audit trails for regulated industries. Evidence preservation that doesn't depend on proprietary vendors. Verifiable without specialized software.
Timestamp releases and security advisories. Prove when patches were published. Build transparency logs without blockchain overhead.
Establish research priority before peer review. Timestamp preprints, datasets, and negative results. Create verifiable records of discovery timelines.
With BLS12-381, multiple signatures aggregate into a single 96-byte proofβregardless of how many witnesses signed. This makes verification bandwidth-efficient for high-threshold deployments.
Batch merkle roots can be periodically anchored to external services for additional security layers:
# Start the network (gateway + 3 witnesses)
docker compose up --build
# Timestamp a file
docker compose exec gateway witness-cli \
--gateway http://localhost:8080 \
timestamp --file document.pdf
# Verify an attestation
witness-cli verify --attestation attestation.json
Or build from source:
git clone https://github.com/flammafex/witness
cd witness
cargo build --release
./examples/setup.sh
./examples/start.sh
Deploy and operate a free public timestamping service with witnesses distributed across jurisdictions. Target: 3 federated networks, 9+ independent witnesses.
Client libraries for Python, JavaScript, Go, and mobile platforms. Browser extension for one-click timestamping. Integration with journalism and research workflows.
Comprehensive documentation, deployment guides, and educational materials explaining trust models and verification procedures to non-technical users.
Independent security audit of cryptographic implementations and network protocol. Formal verification of threshold signature scheme.
Establish witness operators across press freedom organizations, universities, and civil society groups. Build governance structures for long-term sustainability.
Trust is fragmenting. Institutions that once served as neutral arbitersβcourts, archives, news organizationsβare increasingly contested. The infrastructure for establishing what happened and when is either expensive, centralized, or opaque.
Witness provides a different model: trust through transparency and distribution. Anyone can verify an attestation. Anyone can run a witness. The protocol is open, the code is auditable, and no single organization controls the network.
This isn't about replacing institutions. It's about providing cryptographic bedrock they can build on. A journalist's timestamped document is still journalism. A court's evidence is still evidence. But now there's a verification layer that doesn't depend on any single point of failure.
The best time to timestamp something was before it mattered. The second best time is now.