Arcaeon Receipt Verifier
Paste or drop a receipt JSON file below. Everything runs in this page --
the body digest is recomputed with your browser's own SHA-256, nothing
is uploaded anywhere. This checks what the receipt itself claims; it does
not re-walk the issuer's ledger file (it does not have it) and it does
not run ots verify for you (see the anchor section).
Receipt
.json receipt — or a whole class of them,
up to 20 at once — anywhere on this page
Batch (0 receipts)
Three verdicts, never two. PASS means the seven body fields hash to the digest on the receipt. FAIL means they do not. UNDETERMINED means this page could not reach a verdict at all — the file would not open, would not parse, or carries a number outside what json-c14n v1 can canonicalize. An undetermined receipt is never counted as either of the other two.
As with a single receipt, this page was not given anybody's ledger file,
so the sequence claim on each receipt is out of scope here. To check that
too, run arcaeon-receipt verify --batch <directory>
where the ledger lives.
Body digest
Scope
This receipt proves
This receipt does not prove
Checks
Subject
Ledger
Sequence relative to the issuer's other receipts. This page cannot re-walk the ledger file itself (it was not given one) -- it only shows what the receipt claims about its row.
Witness
Anchor (OpenTimestamps)
What this page can and cannot canonicalize
Supported, exactly: JSON integers of any size (the literal digit
text is preserved and reproduced byte for byte, matching Python's
arbitrary-precision int) and any finite JSON floating
point number that fits an IEEE-754 double, reformatted to match
Python's repr() exactly (fixed notation for
10-4 ≤ |x| < 1016-ish
magnitudes such as 1.0, 0.5,
-2.25; scientific notation with a zero-padded,
signed exponent outside that range, such as 1e+16 and
1e-07).
Refused loudly, never silently mismatched: a float literal whose
magnitude overflows a double to Infinity (Python's own encoder
refuses these the same way, via allow_nan=False), and
any malformed JSON. A refusal shows up as a FAIL with the reason
stated plainly -- it is never reported as a pass.