Docs · Proof
The 8 proofs
Every drop moves through eight steps. Each step is backed by evidence that comes from the source, not from LOOTBOX.
| Step | Proven by | Public | Hidden |
|---|---|---|---|
| 1. Funded | Fee transactions into the treasury on Solana | Amounts, transactions | Nothing |
| 2. Drawn | The ticket list's fingerprint on Solana, plus the ORAO VRF result | Ticket list, randomness, winning ticket | Nothing |
| 3. Claimed | The winning wallet's signature, plus the address fingerprint | Wallet, fingerprint | The address |
| 4. Paid | USDC transfer from the treasury to the purchasing account on Solana | Amount, transaction | Nothing |
| 5. Ordered | A zkTLS proof of the order service's own response | Products, quantities, prices, retailer order number, status | Name, address, phone, API keys |
| 6. Shipped | A zkTLS proof of the tracking service's response | Carrier, status, time | Tracking number, locations |
| 7. Delivered | Same as above, at delivery | Carrier, "Delivered", time | Tracking number, locations, who signed |
| 8. Received | A message signed by the winning wallet | The message, the signature | Nothing private |
zkTLS, in one paragraph
When a server sends data over HTTPS, the connection is encrypted and authenticated, but normally only you can see that it happened. zkTLS (LOOTBOX uses Reclaim Protocol's zkFetch) adds an independent witness to the connection and produces a proof that this exact response came from that server. Selected parts can be blacked out without breaking the proof. So instead of a screenshot of an order, you get the order service's real response with the address removed, and anyone can verify it wasn't edited.
The chain
Each step's evidence is wrapped in a proof package, and every package includes the fingerprint of the one before it:
- Editing a package changes its fingerprint, which breaks the link from the next one.
- Removing or reordering packages breaks the chain.
- Each package's fingerprint is posted on Solana when it's published, so even the newest package can't be changed later.
Here's a real package, built by the same code that will publish them. It's the order step, chained to a payment step before it:
{
"version": 1,
"dropId": "DROP-001",
"type": "order",
"createdAt": "2026-11-20T15:12:00Z",
"revealed": {
"status": "request_processed",
"amazonOrderId": "112-…",
"items": [
{
"productId": "B0…",
"quantity": 1
}
],
"totalUsd": 1749.97
},
"attestation": {
"reclaim": "<zkTLS proof>"
},
"seq": 1,
"prevHash": "24f0fb2c0d94b20fd318472006136aa274f5c671475bb0ed108bf34c115201ef"
}fd7a80b45385ddf22ee27a049f49afb4e278afeeed0dcde04efe53a693c5f6e0
Where to see them
Every drop has a proof page that lists its packages and re-checks them in your browser. Try the demo proof page, including Try tampering, to watch a check fail. To check things by hand, see Verify it yourself.