Pricing & the draw
A pack costs the pool's expected value plus a 10% surcharge. Both halves are computed from chain state; neither is set by hand.
The price
packPrice = expectedDrawValue × (1 + surcharge)
Expected value is the probability-weighted average of the backings you might draw, which works out to the pool's harmonic mean:
E[b] = Σ (Pᵢ × bᵢ) = n ÷ Σ(1/bᵢ) where Pᵢ = weightᵢ ÷ totalWeight
Price where the payout is. A pack settles as either the stock or the standing bid, and the bid is a function of backing — 90% × b — so the price is too. The two cancel exactly: the 1/b selection weight against the ×b payout means a bid delivers 90% of expected value whatever mix of backings the pool holds. No depositor can inflate what packs pay without inflating what packs cost.
The oracle still anchors the system — it enforces the 111% deposit floor, so backings can never be fiction — but the pack price follows committed capital, not the tape.
Send slightly more than the quote. The excess is refunded in the same transaction, and the quote can move between the moment your wallet builds the transaction and the moment it is mined.
The surcharge
The surcharge sits at 10%, capped at 30% in the contract so it can be tuned but never turned into a confiscatory rate by a compromised key. A separate 1% protocol cut comes off the top of each pack before anything is split — see Fees.
The surcharge, the bid rate and the settlement windows in force when you bought are all stored on your acquisition, so a parameter change while your pack is in flight cannot re-cut a pack you already paid for.
One draw at a time
Only one pack can be in flight at once. This is a correctness constraint, not a scaling limit.
A pack is priced off the expected value of one draw from the pool as it stands, and settlement removes the listing it drew. Packs bought before any of them settle are therefore draws without replacement, each priced as though it were the only one — and since lightly-backed cards are drawn first, every later draw in the batch is worth strictly more than what was paid for it. Our testing measured that at a 158% risk-free return against a realistic pool.
Serialising makes every pack price the pool it actually draws from. Draws take seconds, so in practice you will rarely notice. Why FWA does not need this.
Randomness
Randomness comes from drand, a public threshold beacon produced on a fixed schedule and verifiable against the network's public key. We cannot produce a word, pick between words, or withhold one to our advantage.
- When you buy, a future round is pinned. It does not exist yet, so nobody — including us — can know the outcome.
- The pool is frozen from that moment until the draw is applied, in both directions.
- If the beacon never arrives,
refundExpiredreturns your payment in full. It is permissionless, so getting your money back never depends on us being online.