Skip to main content

Receipts

A receipt is a small, immutable record that summarizes what happened during an execution. It does not contain raw data or results. Instead, it contains hashes that uniquely identify them. A receipt includes:
  • which runtime was used (HTTP, JS, Python)
  • a hash of the execution specification
  • a hash of the input
  • a hash of the output
  • for HTTP, which nodes reported results and their hashes
Think of a receipt like a tamper-proof index:
  • if anything changes, the hashes won’t match
  • anyone can check it later

What a receipt proves

With a receipt alone, you can prove:
  • something happened at a specific time
  • which runtime and parameters were used
  • which nodes (for HTTP) claimed to observe a result

What a receipt does NOT prove

A receipt by itself does not tell you:
  • what the actual HTTP response was
  • whether the data was correct
  • whether different nodes agreed
For that, you need disclosures.

Disclosures (HTTP only)

Disclosures contain the actual data returned by HTTP executions. They include:
  • the full HTTP request
  • the full HTTP response
  • timestamps of when each node observed it
Disclosures are plain data. They are not trusted on their own.

How receipts and disclosures work together

When you verify an HTTP execution:
  1. You hash each disclosure locally
  2. You compare those hashes with the hashes stored in the receipt
  3. If they match, you know the data was not modified
This proves that:
  • the data you are inspecting is exactly what the nodes reported
  • Prado did not alter or rewrite the results

Why they are separate

Receipts and disclosures are kept separate on purpose:
  • receipts stay small and easy to store or share
  • raw data does not have to be published unless needed
  • verification does not rely on trusting Prado’s servers
A receipt without disclosures proves who reported something. Without disclosures, an HTTP receipt does not prove the content of what happened. It only proves that some parties committed to a claim at a point in time. Together, they let you verify what was reported and who reported it.