Use
Proof format
A finished draw yields a proof that stands alone. Everything needed to re-run it is inside.
{
"v": 1,
"chain": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",
"round": 33091500,
"signature": "a2960ced8cbf...", // 48 bytes, hex, as published by drand
"listHash": "0x...", // sha256("cricket.list.v1\n" + entries joined by \n)
"entries": ["ada", "grace", "..."],
"winners": 2,
"seed": "0x...", // sha256("cricket.v1" || randomness || listHash)
"result": [3, 0] // indexes into entries, in drawing order
}
How it is checked
- The chain hash is quicknet's.
- The list hash is recomputed from
entriesand must match. - The signature is verified for
roundagainst the network key. - The randomness is
sha256(signature), the seed is recomputed and must match. - The winners are recomputed from the seed and must equal
result.
The "Check a proof" box on the draw page runs exactly these steps. The same function (checkProof) is what the page uses on its own results.
What a proof does not show
That the round was chosen in advance. The proof contains the round, not the date you decided on it. That is why the commitment must be published separately before the round, or made on chain.