Skip to content
HIKU

Fairness

Results come from MagicBlock VRF and settle first in, first out. Everything else is public integer math.

How a pull settles#

  1. Request
    You escrow your maximum price per capsule plus a 0.0005 SOL randomness fee. The request joins the machine's queue.
  2. Randomness
    MagicBlock's oracle returns 32 random bytes with a proof, verified on-chain.
  3. Settle
    Requests 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.
  4. Claim
    Prizes 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_c

Each 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.