OpenChainGraph · Evidence estate Loop step: Anchor

An artifact becomes a hash. The hash becomes evidence a stranger can check alone

This page walks the evidence estate end to end: how a receipt, an export, or a signed document is reduced to one SHA-256 digest; how that digest is pinned to third-party time on four independent rails; how one of those rails, Sigsum, turns a submission into a witnessed, append-only log entry; how the resulting proof bundle checks itself with the network unplugged; and how a digest resolves to content at a fixed address. Four rails, one estate, nothing here asks you to take anyone's word for it.

Anchoring proves a digest existed at a point in time. It never proves that what the digest points to is accurate. Keep that distinction in view through every panel below; the closing panel restates it and three more like it, on purpose, as the first thing worth reading rather than the last.
1
Step 1 · The digest

Hash first

Before anything else happens, the artifact under evidence, a receipt, an export, a signed document, is reduced to one SHA-256 digest. Every stage that follows binds to that digest. The file itself is never sent anywhere and is never touched again.

artifact SHA-256 sha256:9f2c...e41a everything downstream binds to the digest, never the file

Two files with identical bytes hash identically. One changed byte hashes differently. Every panel that follows depends on nothing more exotic than that.

2
Step 2 · Four rails

Anchors pin the digest to third-party time

An anchor is a third party's signed or logged statement that it observed a given digest at a given moment. The same digest is anchored across four independent rails, each carrying a different, plainly stated guarantee.

digest RFC 3161 TSA Sigstore OpenTimestamps Sigsum four independent statements about the same one digest

RFC 3161 TSA

A timestamp authority signs the digest together with a timestamp. The guarantee is that one signature, checkable against the authority's published certificate.

Sigstore

A public timestamping service logs the request as it happens. The guarantee rests on that service continuing to operate and to keep the log intact.

OpenTimestamps

The digest is folded into a Merkle tree that is later committed into the Bitcoin blockchain. The guarantee is whatever secures that chain of blocks rather than any single operator.

Sigsum

A transparency log that a fixed set of independent witnesses cosign, so the log cannot be silently rewritten. The guarantee is append-only publication, witnessed by parties the log operator does not control.

Anchoring proves existence at a time. It never proves the content is correct. An anchored digest of an inaccurate report is still an inaccurate report, now carrying a timestamp.
3
Step 3 · Sigsum, in depth

Submit once. Check again. Never resubmit

Sigsum is the newest of the four rails, and its two-phase design is the one most easily mistaken for a stall. Submitting a digest as a leaf does not wait for the log to finish sequencing it. What comes back immediately is a durable pending binding: the signed, dated leaf material, proof the submission happened before the log has merged it into a tree.

Checking again later asks the log a plain question at no cost against the submission budget. If the leaf has since been sequenced, the pending binding upgrades in place into a complete one, an inclusion proof plus a cosigned tree head. Nothing about the artifact or its digest changes between the two states; only the evidence sitting around it gets more complete.

submit leaf pending durable binding log merges included + cosigned head re-check inclusion (free) · never resubmit
Re-checking a pending binding costs nothing against the submission budget. Resubmitting the same digest spends that budget again for no reason. The distinction is deliberate: a submission budget shared across every domain suffix stays meaningful only if a slow merge is never mistaken for a failure and retried.

Twelve witnesses, counted independently

A cosigned tree head is only trustworthy if more than the log operator agrees it is correct. Every head Sigsum returns carries signatures from twelve independent witnesses: Glasklar's and Mullvad's own witness services, a Tillitis hardware witness, and nine ArmoredWitness devices, each held by a separate custodian.

Verification is k-of-n. A bundle is checked against whichever of the twelve cosigned that particular head, and a cosigner the verifier does not recognise, or one that is simply absent, is skipped rather than treated as a failure. One witness rotating out, or a new one joining, never breaks a proof that was already valid.

glasklar mullvad tillitis nine ArmoredWitness devices, separate custodians k-of-n over the twelve · unknown or absent cosigners are skipped, never failed
seasalp tlog · anchor-suite public/lib/sigsum.mjs · 12 pinned cosigners
4
Step 4 · Offline verification

The proof bundle checks itself with the network unplugged

Every check a verifier runs against an anchor bundle runs against bytes already inside that bundle. None of them require asking a server anything. Disconnect first, and the same checks pass or fail exactly the same way.

offline checksum leaf signature Merkle inclusion log signature witness cosignatures verified, offline

Every one of those five checks is arithmetic and signature verification a verifier runs in its own browser tab. This is the estate's differentiator against a design that asks you to trust a server: nothing here is a phone call to anyone.

5
Step 5 · Ledger resolution

One address, one answer

A digest that has been anchored can be dereferenced at ledger.ainumbers.co/<hash>. The contract behind that address follows RFC 6920: a request for a given digest returns content whose recomputed digest equals the address exactly, or it returns nothing at all. The address is never allowed to resolve to a different value than the one it names.

sha256:9f2c... ledger.ainumbers.co recompute & compare match, serve content mismatch, 404

That is a narrower promise than it sounds. State is derivable from the log; the log stays canonical. A deployment that serves no Ledger endpoint at all is still fully conformant with the estate; one that does serve one has to honor the same rule every time, without exception.

Where a named human, rather than a system, needs to answer for an artifact, Anchorproof adds a passkey signature over an envelope that references the digest: a WebAuthn assertion tying one named signer to one hash, checkable the same way as everything else on this page, entirely offline.
6
What is NOT claimed

Four boundaries this estate holds on purpose

The five panels above describe real, shipped mechanisms. None of them add up to more than what follows, and this panel is deliberately as prominent as the others rather than a footnote at the bottom of the page.

Anchors prove time, not truth

A signed timestamp says a digest existed at a moment. It says nothing about whether what the digest points to is accurate, honest, or complete.

Pending is not included

A durable pending binding proves a submission happened. It is not an inclusion proof, and it does not become one until the log has sequenced the leaf and a cosigned head confirms it.

A log proves append-only, not endorsement

Twelve witnesses agreeing a log was not secretly rewritten says nothing about who submitted an entry, or why they submitted it.

No certified, guaranteed, or audited language

None of those words belong on this page or on the tools it describes. What is checkable is stated plainly instead, so a reader can verify the claim rather than trust the adjective.

All content on this page is static and processed locally in your browser. No data is transmitted. Do not enter real personal data into any OpenChainGraph tool. Use synthetic or anonymised inputs only.