Live integrity check
Watch the register check itself
Every record in this register is hashed, chained to the one before it and signed. Below you can see exactly what that check does — and the result of running it, right now, on the real data.
What the check does
Six records, checked one by one — the numbers are from this register. Afterwards, point at a record (or click it) to bring its step back.
of 385 records checked kB re-hashed
- 1
Read the record
Every record is read in order, starting at #1 — the genesis record written when this register was created.
- 2
Re-hash its content
The SHA-256 fingerprint of the stored content is recomputed and compared with the fingerprint sealed in the record. One changed byte gives a different fingerprint.
- 3
Rebuild the record fingerprint
Sequence number, timestamp, actor, action, entity and the content fingerprint are hashed together with the fingerprint of the record before it.
- 4
Check the link backwards
That previous fingerprint must match the record before it, all the way back to the genesis record. Change anything in the past and every link after it breaks.
- 5
Verify the signature
Each record fingerprint carries an Ed25519 signature made with this register's private key. The public key below verifies it — a forged record would fail here.
- 6
Cross-check the passports
Finally every stored passport version is compared with its sealed ledger record: same content, same fingerprint. A passport edited in the database would show up here.
- Point at a record above — or click it — to read that step again.
Checked on this request
The newest records are re-verified while this page is being built — nothing cached, nothing claimed.
| Records re-checked live | 385 (#1 – #385) |
|---|---|
| Took | 61.3 ms |
| Result | ✔ hashes, links and signatures all valid |
Full chain, every record
The complete pass over all 385 records — hash chain, signatures and every sealed passport version. It runs on a schedule rather than on every visit, and takes 67 ms.
| Records in ledger | 385 |
|---|---|
| Result | ✔ all records validate |
| Last full verification | just now (2026-10-25T03:12:01.473080Z) |
| Chain head | #385 — d84d8566905ae67872ba14acf826c7a570df7e2db1a86196b53ef33dcc627ead |
| Head recorded at | 2026-10-24T20:32:26.984720Z |
| Register public key (Ed25519) | 4bb9aaf85b26ecb217bf76b71c6af73db6fbf961af307dceabf6aab48e0cab92 |
Keep your own evidence, and check it later
Download the signed checkpoint and store it outside this system — e-mail it to yourself, print it, put it in your document management. It names one record (head_seq) and its fingerprint (head_hash), signed with the register's key.
The record number is in the file — and in its filename, so you can read it without opening anything. Months or years later, type that number in below and this register shows what it holds for that record today. Then you compare, with your own file in front of you.
Why we never ask for your fingerprint: a register that is handed your value could simply hand it back, and you would have learned nothing. So it only answers with what it holds, and the comparison stays yours.
Prefer to do this from a script?
curl "https://www.origopass.eu/api/ledger/385.json"
Returns the seals of that one record and nothing else, so your script does the comparing. There is also /api/checkpoint/check?seq=&hash=, which answers unchanged or mismatch — convenient for alerting, but it is the weaker check for exactly the reason above.
- One passport, one fingerprint. /api/p/{uuid}.json returns the fingerprint and record number of every version of that passport. Write one down, and check it later here or with /api/ledger/{seq}.json.
- Poll it yourself. Fetch /api/verify.json from your own monitoring on your own schedule.
- Recompute it yourself.
record_hash = SHA256("BPLEDGERv1|seq|ts|actor|action|entity|payload_hash|prev_hash"), wherepayload_hash = SHA256(payload)andprev_hashis the previous record'srecord_hash. Signatures are Ed25519 over the hexrecord_hash, verified against the public key above.
Safe by construction: this page exposes only cryptographic digests, sequence numbers and the register's public key — no personal data, no restricted passport fields, no credentials. Transparency here adds zero attack surface.