Assay

The arithmetic, in the open

The price of a draw is fixed by a formula, not by us. The purse a draw opens is fixed by a seed we committed to before the round opened. Both are worked below on real numbers, and the last section is a script you can run against them.

The current commitment

No round is open right now. A commitment is published before the next draw is possible.

What a draw costs today

0 purses open

No purses are open, so there is no price to work. Seal one and this arithmetic fills in.

How the purse is chosen

Weight is inverse to size, in exact integers: with unit = lcm(x₁…xₙ), purse i carries weight unit/xᵢ, so weightᵢ × xᵢ is the same number for every purse on the floor. The set is written down in ascending purse-id order as id:amount|id:amount|… and hashed; that hash is recorded on the draw, so the set cannot be restated afterwards.

The selection number is HMAC-SHA256 of round:nonce:purse set hash keyed by the committed seed, read as a 256-bit integer. It is scaled into the table — pick = number × total ÷ 2²⁵⁶ — rather than reduced modulo the total weight, because a floor of unrelated amounts has a total weight far past 2²⁵⁶ and a modulus would leave most of the table unreachable forever. The purse taken is the first whose cumulative weight exceeds the pick.

Revealed rounds

0 listed

No round has closed yet. Seeds are published only when a round fills, so this table is empty until the first 256 draws are done.

A draw, checked end to end

Nothing has been drawn and no round is open, so there is nothing to check yet.

Check it yourself

The script is filled in with a real draw's values once a round has been revealed.