StonkDrop
Robinhood Chain

Fairness

Why nobody — StonkDrop included — can pick or peek at a drop.

The commit

A drop starts with one transaction: you pay $10.00 in USDG per spin, and the contract records what you bought under the configuration that is live — the odds, the value bands and the catalog — together with the exact future round of the randomness beacon the drop is bound to. That round is 3 drand rounds ahead of the timestamp of the block your commit lands in, 7–9 seconds, so it does not exist yet when you pay. The contract also sets aside $250.00 in USDG for every spin, the most a spin can pay, before it accepts the commit.

Nothing in the commit can be changed afterwards: not the round, not the odds, not the count. A commit the contract cannot cover is refused, and nothing is paid.

The beacon

drand is a public randomness beacon run by a network of independent operators. Every few seconds the network publishes a new round, a value that no single operator can predict or steer and that anyone can verify afterwards against the network's public key. StonkDrop reads the Quicknet beacon, which publishes a round every 3 seconds.

Because the committed round is published only after your commit is on-chain, nobody — not StonkDrop, not a relayer, not you — can know the outcome before it is paid for. And because the round is fixed by the commit, nobody can reroll it after: a round that is late delays settlement, it is never replaced by another.

The draw

A spin's rarity, its exact prize value and its stock are a pure function of four things: the beacon for the committed round, the commit's own id, the spin's index within the commit, and the gacha configuration it was bought under. The contract derives them at settlement; the app derives the same result the moment the round is published, which is why the reveal starts about 9 seconds after a commit without waiting for anyone. The reveal is computed, not reported.

  1. Rarity. One draw against the published odds decides the tier, and with it the value band.
  2. Value. A second draw picks the exact amount inside that band; every step in the band is equally likely.
  3. Stock. A third draw picks the ticker, uniformly, so every stock in the catalog is as likely as the next on every spin.

Settlement

Once the round is published, anyone can settle the drop: a relayer usually does, and the app lets you do it yourself if one is slow. Whoever settles, the prize goes to the wallet that paid, priced as of the commit. It is paid as the stock token, or, if the stock cannot be delivered safely at that moment, as its exact value in USDG out of the reserve set aside at the commit. How a prize is paid is the only thing settlement decides; what it is was decided by the beacon.

Check a drop

  1. Find the commit. Open the StonkDrop contract on the explorer ↗ and look up the commit transaction. Its SpinsCommitted event names the drand round the drop is bound to.
  2. Fetch the round. Ask any drand mirror for that round, for example https://api.drand.sh/v2/beacons/quicknet/rounds/<round>. Its timestamp is later than the commit's.
  3. Read the result. The settlement transaction's SpinSettled event carries the rarity, the exact prize value, the stock and the amount actually paid.
  4. Compare the whole history. Stats recomputes every settled drop from those events: rarity share against the published odds, ticker share, realized payout rate, and a transaction link for each drop.

The odds on the Docs page are the ones you play.

Drop stonks