Fairness
Results come from MagicBlock VRF and settle first in, first out. Everything else is public integer math.
How a pull settles#
- RequestYou escrow your maximum price per capsule plus a 0.0005 SOL randomness fee. The request joins the machine's queue.
- RandomnessMagicBlock's oracle returns 32 random bytes with a proof, verified on-chain.
- SettleRequests settle in queue order. Each capsule is re-priced from the live machine, drawn and recorded. One priced above your maximum is voided and refunded.
- ClaimPrizes and refunds are paid out of escrow. Anyone can trigger the payout.
Rolls#
h = sha256(randomness ‖ i)
Z = Σ count × weight
roll = u128le(h[0..16]) mod Z
c = first collection whose
running Σ count × weight > roll
pick = u64le(h[16..24]) mod count_cEach capsule in an order gets its own sub-seed. The roll picks the collection, in proportion to its NFTs' weights; the pick chooses the NFT within it.
First in, first out#
A randomness provider sees every result before it delivers them. If requests could settle in any order, it could hold results back to steer a legendary to a chosen request. In a fixed queue its only power is to withhold, which expires the request and refunds it.
What's public#
- Every NFT in escrow and its recorded cost
- Each collection's median floor, value, weight and odds
- Every machine's live price and its parts
- The global value mix and parameters every machine prices with
- The queue, every pull, its randomness and its result
Safeguards#
- Odds are integers in parts per million and prices are in lamports. Rounding favours the machine.
- The seed is derived on-chain. Players can't choose it.
- Values follow a 24h median floor, so one listing or a short oracle spoof can't move a price. A collection paused for a price move resumes by itself.
- Every machine prices with the same method. No creator can set their own odds or price.
- Launches are permissionless. Nobody can hold a token back or wave one through.
- If randomness never arrives, anyone can expire the request after about a minute and refund it.
- Pausing stops new pulls only. Settlement, claims and refunds keep working.