Verify a receipt offline
Every signed output - a savings receipt from an audit, a benchmark result - can be verified offline, with the public key, by anyone. No account, no API call, no trust in us. This is the check to hand to your auditor, your manager, or your own skepticism.
Prerequisite: a receipt to check. The verifier needs no account and no network - any machine with the surfil CLI can run it.
When to use this
- Someone questions a savings number and you want to answer with a proof, not a screenshot.
- You're auditing outputs from an exported
.surfilpkg, possibly long after the fact. - You want to confirm a receipt wasn't altered in transit or storage.
Where the receipt comes from
- Consume - a Credit is atomically decremented for the measured output.
- Sign - the edge signs the result with Ed25519.
- Verify - you check that signature against the receipt's payload, offline.
Run the check
$ surfil verify <receipt-file>
✓ VALID (offline · public key · no account)Verification recomputes the check locally against the Ed25519 public key. Disconnect from the network first if you want to prove to yourself that no server is consulted - the result is identical.
surfil verify are still being finalized - this page documents the verified core behavior rather than guessing at options, and will be updated when the CLI surface is locked.What the results mean
- VALID - the payload is exactly what the edge signed. The measured numbers in it are the measured numbers.
- Invalid - the payload no longer matches its signature. Even a one-byte change fails. Treat the receipt as untrusted; re-fetch the original and verify again.
Why offline matters
A signature you can check without the server means a receipt stays trustworthy even if Surfil's edge is unreachable - or if you stopped being a customer years ago. Exported receipts inside a .surfilpkg keep verifying forever.
Related
- Signed outputs - the model behind the receipt.
- Cut costs with Cap - producing the receipt this guide verifies.
- Public API - the
/v1/verifyendpoint, if you'd rather check server-side.