Witness · verifier
Verify our records without trusting us
Verify without trusting us
The verifiers below take an exported bundle and recompute everything locally: entry and leaf hashes, Merkle roots, block hashes and the issuer's Ed25519 signatures, chain linkage, witness cosignatures, witness affiliation from the raw records, and the finality rule (Bitcoin-confirmed plus enough confirmed-unaffiliated witnesses). They never ask Rightshold whether its own record is good. MIT licensed, zero dependencies.
Download (pin the SHA-256 before running)
- https://www.rightshold.com/verifier/rightshold_verify.py · sha256 6cab0a729e24acefd0731202e8a917f0639858341fc677ed80ccb9515a4b8de1
- https://www.rightshold.com/verifier/rightshold-verify.js · sha256 49eb43d7202841dad8a5e656ef0bcc286a6adb0b24b24e6660d3ddfa8436a95a
- https://www.rightshold.com/verifier/cli.js · sha256 3b6014115a2c0d4a0f46a14a4137a581c7880d5081f786d13afcb07bd27e1fe7
- https://www.rightshold.com/verifier/rightshold-verify.ts · sha256 3b5a1b560e54bb61f794e9a4f8c3c318230e0f3ebddff53f274762f2d73062ff
- https://www.rightshold.com/verifier/LICENSE · sha256 c1e44a0c0e88203cb6ca7fbe48eab96f3a29b996bc1dbac8dc160a6ea1a02e87
- https://www.rightshold.com/verifier/README.md · sha256 0cc5b847fab48c7b7b7f0a5b67a5f57a481bed00d21225e397df8e67c0bfb8c5
- https://www.rightshold.com/verifier/sample-bundle.json · sha256 656404eeae7301cd9805d0522ce6176115378b481252dc4544d8d4ee74cb1cbb
Run it
- Python: python3 rightshold_verify.py bundle.json <seq> (needs the openssl CLI for Ed25519)
- Node 18+: node cli.js bundle.json <seq> (with rightshold-verify.js beside it)
- Get a bundle: GET https://www.rightshold.com/v1/ledger/snapshot, or the receipt bundle for your record.
- Whole-ledger check: https://www.rightshold.com/cli/verify-ledger.py and https://www.rightshold.com/cli/ledger-witness.mjs. Bitcoin anchors: https://www.rightshold.com/anchors (each block's .ots proof verifies with the standard OpenTimestamps client).
- Response signatures: node ledger-witness.mjs verify-response --url <URL> --keys rightshold-keys.json
