Skip to content
Sakshiसाक्षी

Nº 04 · Method

How a traceis kept.

I

Witnesses record what a URL served

A witness is a small command-line program (scripts/witness.ts) that anyone can run with their own wallet. It fetches each notice PDF, computes its SHA-256, compares it with its own latest record, and writes one Arkiv transaction per run: a seen, changed or gone observation for anything new, a run summary, and a Lifetime Extension for records it saw again.

II

You check a file without uploading it

Your browser fingerprints the PDF locally, asks Arkiv for observations with that exact doc_sha256, keeps only records created by witness wallets you trust (the immutable $creator), and reads each witness's timeline for that URL.

III

Verify without this website

git clone https://github.com/bhavya-jpg/sakshi && cd sakshi && npm i
npx tsx scripts/verify.ts path/to/notice.pdf

This reads the public Tiramisu RPC directly. No key, no Sakshi server.

What a record proves

That witness wallet W committed, no later than the block it landed in, that URL U returned bytes with SHA-256 H.

What it does not prove

  • That W fetched honestly. There is no TLS proof yet.
  • That the official site was not itself compromised.
  • Anything about a missing record: absence is never evidence that a document is fake.
  • Independence, in this hackathon build: every witness here is operated by the Sakshi team. Anyone can run another.

All records use project = "sakshi-v1". The full data contract is in /arkiv/schema.md.