THE LOOP - ONE WINDOW - 1 HOUR

Hold $GACHA.
Win the slabs.

Buy $GACHA on Jupiter (or any Solana aggregator) and you are automatically entered in every draw. Every hour one holder wins every PSA / CGC / BGS slab opened in that window - then has 72h to claim them to their wallet or instant-sell for USDC. No signup, no KYC.

ANIMATED LOOP - 5 STAGES
  1. Fee accrues
  2. Swap to USDC
  3. Buy graded pack
  4. Roll - pick holder
  5. Winner claims slabs
TL;DR
STEP 01 FEE

You trade $GACHA. The bonding curve sweeps a small creator fee.

100% fair launch on the Meteora DBC bonding curve - no team supply, no presale, no rug surface. Every swap pays a small fee to the creator wallet. That wallet's only job is to forward those fees into the prize loop.

creatorFee = small % of every swap > fee collector wallet
STEP 02 SWAP

A worker claims the fees and swaps SOL > USDC via Jupiter.

A cron worker hits the Meteora DBC claim instruction every ~30 seconds. When claimed SOL crosses a threshold it routes through Jupiter v6 to USDC at the best public route. No private RPC, no protected mempool - the route hash is on chain.

claim > Jupiter v6 > USDC (route hash published per sweep)
STEP 03 PACK

USDC buys a $50–$1000 graded booster pack on Collector Crypt.

When the USDC balance crosses one pack price, the pack-buyer hits the Collector Crypt API and queues a graded booster ($50 floor up to $1000 tier). PSA / CGC / BGS slabs only - no raw packs, no shipping roulette, no condition risk.

balance >= packPrice > CC.buyPack() > queue
STEP 04 OPEN

Packs auto-open. Every slab piles into the current vault.

The pack-opener pulls from the queue, opens each pack through Collector Crypt's API, and ingests every card into the vault for the current window. Whatever opens in the next hour - one card or fifty - is what the next winner takes.

while queue: open() > vault[currentDraw].push(card)
STEP 05 ROLL

At the close slot, one holder wins the whole vault.

Snapshot every eligible $GACHA holder at the close-slot. HMAC-SHA-256 a server seed we committed to before the window opened with the slot hash and the draw id. Walk the weighted prefix sum with the roll. First holder whose slice covers the offset wins every card opened in the window - then has 72h to claim the slabs or instant-sell them for USDC.

winner = walk(weights, HMAC(seed, slotHash | drawId))
BUILT SO NOBODY - INCLUDING US - CAN RIG IT

Don’t trust us. Verify it.

The seed hash binds us before we know who’s in the snapshot. The slot hash is picked by Solana validators, not us. The verifier runs in your browser - no server in the loop.