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.

✔ VerifiedChain intact, every signature valid, no gaps, no record altered.

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. 1

    Read the record

    Every record is read in order, starting at #1 — the genesis record written when this register was created.

    385 records in the chain

  2. 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.

    262.275 bytes re-hashed in the live check

  3. 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.

    SHA-256 over 8 sealed fields

  4. 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.

    links #1 → #385

  5. 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.

    Ed25519, public key below

  6. 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.

    every sealed passport version

  7. 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 live385 (#1 – #385)
Took61.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 ledger385
Result✔ all records validate
Last full verificationjust now (2026-10-25T03:12:01.473080Z)
Chain head#385 — d84d8566905ae67872ba14acf826c7a570df7e2db1a86196b53ef33dcc627ead
Head recorded at2026-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.

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.