Verify a receipt

Don't trust us. Re-derive it.

Drop a Compass receipt bundle (JSON) below. Your browser re-runs the same four cryptographic checks the verify-receipt CLI does — no server calls, nothing leaves the page. The same evidence that backs the on-chain audit log.

or drag-drop a .json file

Out-of-band trust anchor. Defaults to Compass' live Phala dstack TDX image. Try sample swaps this to the test-fixture composeHash so the bundled sample verifies cleanly; reset to the default when verifying a real receipt.

What this verifier checks

  1. 01 attestationDigest = sha256(canonicalize(receipt))
  2. 02 ECDSA.recover(attestationDigest, signature) == signerAddress
  3. 03 receipt.quoteCommitment = sha256(perReceiptQuoteHex)
  4. 04 extractReportData(quote)[0:32] = sha256(signer || composeHash || receiptId)

Out of scope: Intel DCAP signature-chain verification on the TDX quote itself (use DStack Verifier or Intel QVL externally), and dstack signature_chain validation on the key derivation. Same posture as the Node CLI at enclave/scripts/verify-receipt.ts.

Watch the 3-min demo →