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.
Witness wallets
- Sakshi witness A0xCB16Ca347dc560FdCA8891FB66077BD18a4e3bFa
- Sakshi witness B0x077436BD0DF0A9050e8f6be74ee9dEF58A8E7AdA
All records use project = "sakshi-v1". The full data contract is in /arkiv/schema.md.