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
- 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
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
How receipts and disclosures work together
When you verify an HTTP execution:- You hash each disclosure locally
- You compare those hashes with the hashes stored in the receipt
- If they match, you know the data was not modified
- 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