How Audifact stamps each snapshot’s ledger_hash
via OTS calendars and Bitcoin — and how anyone can check that proof.
What Audifact stamps
Periodically Audifact writes a ledger snapshot.
Each snapshot has a 64-character hex ledger_hash that commits to
the ledger state at that sequence (and chains to the previous snapshot).
The OpenTimestamps (OTS) process stamps that hex hash as 32 raw bytes
(not a JSON file, not every event individually). The proof file is named by snapshot sequence, e.g.
000000000006.ots for snapshot 6.
Calendar anchored — OTS calendars have attested the stamp (fast).
Bitcoin confirmed — the stamp is upgraded into a Bitcoin attestation (slower; includes a block height).
You will not find the string “Audifact” or the full hex hash
by browsing a mempool.space block. OTS embeds a Merkle commitment in a transaction (often OP_RETURN).
The .ots file is the path from your hash to that commitment.
1. Get the snapshot ledger_hash
Public API (no login):
# Use HTTPS (same host as the site; avoid bare http without -L)
# Latest snapshot
curl -sS https://audifact.io/ledger/snapshot/latest | jq .
# Specific sequence (example: 6)
curl -sS https://audifact.io/ledger/snapshot/6 | jq .
# Extract only the hash
curl -sS https://audifact.io/ledger/snapshot/6 | jq -r .ledger_hash
Example response fields: snapshot_seq,
ledger_hash, prev_snapshot_hash,
snapshot_signature, snapshot_signing_key_id.
Write the hash as raw bytes for OTS (32 bytes from hex):
When a snapshot is calendar- or Bitcoin-anchored, Audifact stores a detached OTS proof next to the public ledger exports:
public_ledger/ots/000000000006.ots # snapshot_seq zero-padded to 12 digits
Download via API when the proof exists:
# Prefer HTTPS (HTTP may 301; curl without -L saves the HTML redirect body as a junk file)
# Explicit filename — path ends in /ots, so bare -O would name the file "ots"
curl -sS -f -o 000000000006.ots https://audifact.io/ledger/snapshot/6/ots
# If you must use HTTP, follow redirects:
# curl -sS -f -L -o 000000000006.ots http://audifact.io/ledger/snapshot/6/ots
file 000000000006.ots
# expect: OpenTimestamps Proof
# 404 if this snapshot is not anchored yet
Anchor status in the product UI: Calendar anchored means an OTS file should exist;
Bitcoin confirmed means the same file has been upgraded with a BTC attestation
(Explorer may link a block explorer when height is known).
3. Verify with the OpenTimestamps CLI
Install the official tools (opentimestamps.org),
then verify the binary hash against the proof:
# Debian/Ubuntu example — use your OS’s recommended install
# pipx install opentimestamps-client
# or: apt install opentimestamps-client
# Upgrade proof toward Bitcoin if still calendar-only (needs network)
ots upgrade 000000000006.ots
# Verify: proof must match the 32-byte file of the ledger_hash
ots verify --timestamp 000000000006.ots ledger_hash_6.bin
A successful verify means: this 32-byte digest existed
no later than the attested calendar/Bitcoin time. Combined with Audifact’s signed snapshot
metadata, that timestamps the ledger commitment.
Operators can also run internal checks (verify_anchors) that assert
the OTS digest equals the DB ledger_hash and that Bitcoin height matches the proof.
4. Bitcoin block links (what they mean)
When status is Bitcoin-confirmed, Audifact may show a link such as mempool.space to the including block.
That page is the public timestamp environment, not a search UI for the hex hash.
Independent check remains: ledger_hash bytes + .ots +
ots verify. Optional geek path: find the OTS commitment transaction in the block;
without the Merkle path in the .ots file you cannot identify your hash from the block alone.
Common questions
Is every event on Bitcoin?
No. Events are hash-chained in the ledger. Snapshots commit state; OTS stamps the snapshot ledger_hash.
Calendar vs Bitcoin?
Calendar is faster external attestation. Bitcoin is stronger, slower finality once the proof is upgraded.
Where is event-level proof?
Per-event pages at /e/{event_hash}, Explorer, and the verify API. Snapshot OTS is the calendar/BTC timestamp layer on top of signed snapshots.