Signed outputs
Every paid operation in Surfil produces a server-signed output - an Ed25519 signature over the measured result. The signature is the product: it is what gets metered, and it is what makes every claim checkable by someone who doesn't trust us.
Why it exists
Two problems, one mechanism. First, honesty: a savings number is marketing until someone outside your account can verify it. Second, anti-bypass: metering that lives in client code can be patched out. Signing on the server solves both - the thing of value is the signature, it can only come from the edge, and anyone can check it afterward.
The lifecycle: consume → sign → verify
- Consume - a Credit is atomically, idempotently decremented for the operation (see Credits).
- Sign - the edge signs the measured output with Ed25519.
- Verify - anyone checks the signature against the payload, offline, with the public key. No account, no server round-trip.
$ surfil verify <receipt-id>
✓ VALID (offline · public key · no account)What it means for you
- A savings receipt or policy decision stays checkable even if Surfil's edge is unreachable - or gone.
- You can hand a receipt to an auditor, a manager, or a skeptic;
surfil verifyworks on their machine without your credentials. - There is no client-side licensing shortcut for anyone to exploit, including us - execution is unmetered, so nothing on your device ever gates your work.
Verification failing is a feature working: a receipt whose payload was altered - even by one byte - reports invalid. If
surfil verify rejects a receipt, treat the receipt as untrusted, not the verifier as broken.Related
- Verify a receipt offline - the step-by-step guide.
- Credits - what one signed output costs.
- Weave - the same signing model applied to knowledge.