Verify any signed inference receipt.
Yours, or someone else's. Five cryptographic checks against the receipt, the model output, and the on-chain payment. Hosted at verify.vdmnexus.com, or self-hosted with @vdm-nexus/x402.
What the verifier proves.
A receipt is only as good as the verifier behind it. These are the five things every check answers — same set whether you use the hosted UI, the npm package, or roll your own from the spec.
Prompt hash
Recomputes sha256 over the prompt you provide and compares against the receipt's prompt_hash. Catches tampered or substituted prompts.
Response hash
Recomputes sha256 over the response and compares against response_hash. Catches edited model output.
Operator signature
Verifies the Ed25519 nexus_signature against the operator's published pubkey (fetched live, or pinned). Catches forged receipts.
On-chain settlement
Fetches the Solana or Base transaction by signature, confirms USDC moved in the right direction and amount. Catches receipts without payment.
Payer + recipient match
Confirms the transaction's first signer matches agent_pubkey and the funds landed at the receipt's pay_to. Catches payment-spoofing attempts.
Verify the way that fits your code.
Hosted
Paste a receipt JSON at verify.vdmnexus.com. Get a green / red verdict with each of the 5 checks broken out. No install, no keys, no account.
Open verify.vdmnexus.comSelf-hosted
Call verifyReceipt() from @vdm-nexus/x402 in any TypeScript / Node app. Same five checks, runs in your process, no network round-trip to our service.
View on npmSpec-compliant
The SIR v2 spec is public and MIT-licensed. Any verifier — ours, yours, or someone else's — can check the same receipts. The protocol is the product, not the library.
Read the specFive-line verification in your own code.
import { verifyReceipt } from "@vdm-nexus/x402";
const result = await verifyReceipt({
receipt, // the receipt JSON
prompt: "what's the weather in Tokyo?",
response: "Tokyo is 12C and clear.",
endpoint: "https://nexus.vdmnexus.com",
});
if (result.ok) {
console.log("verified", result.checks);
// {
// prompt_hash_ok: true,
// response_hash_ok: true,
// nexus_signature_ok: true,
// payment_on_chain_ok: true,
// payer_matches: true
// }
} else {
console.error("verification failed", result.checks);
}Returns a boolean for each of the five checks plus an overall ok. Run it in CI, in a webhook, in a middleware — wherever you'd accept the receipt.
Verify a receipt that's already public.
The receipt feed at /receipts is real — pick any row, open its permalink, hit verify. Nothing is mocked.