Verify
Check a receipt in your browser.
Paste a receipt from the referee, or use the sample. Your browser recomputes the receipt id, checks the Ed25519 signature against the referee's key, checks the time-lock round and the Merkle path to the hourly anchor. Nothing you paste is sent anywhere.
Where receipts come from. A source gets one in the answer to every submission, and any receipt can be fetched again from
GET /netz/quittung/<rid>, together with its anchor path once the hourly anchor is written. Paste either form here.Result
not checked yet- Load the sample or paste a receipt, then press Verify.
What your browser checks
- Receipt id: SHA-256 over the canonical receipt without
rid,keyIdandsig. - Key id: the first 16 hex characters of SHA-256 of the raw public key.
- Signature: Ed25519 over the canonical receipt without
sig. - Time-lock round: the round and its opening time agree with the public drand schedule, and the seal was not open when it arrived.
- Anchor path: the receipt is a leaf of the hourly Merkle tree whose root went to Bitcoin.
- Fingerprint, if you paste what was sent.
What needs the command line
Opening a seal needs the drand beacon of its round, and checking an anchor against Bitcoin needs a block header. Both come from public networks, not from us; the open verifier fetches them. It also checks market proofs, closing lines and results for a whole bundle, and that published totals belong to exactly those bets.
# Node 18 or newer · the only dependency is tlock-js (drand) npm install node manometer-verify.js all nordic-models.bundle.json # or one part at a time node manometer-verify.js receipts nordic-models.bundle.json # signatures, fingerprints, hourly anchors, Bitcoin header node manometer-verify.js seals nordic-models.bundle.json # every seal opens at its drand round, to the published proposal node manometer-verify.js prices nordic-models.bundle.json # market at receipt, closing line, CLV recomputed node manometer-verify.js results nordic-models.bundle.json # results from the final score, paper P&L recomputed # exit code 0 = everything checked out · 1 = at least one mismatch · 2 = unreadable input