provably fair

Fairness

No black box. Every draw is auditable on-chain, end to end.

Randomness
Chainlink VRF v2.5

Cryptographically verifiable randomness. The VRF proof and fulfillment tx are public on Basescan.

Snapshot
Pinned to closing block

$RIPPR balances are read at the exact block the draw closes — no after-the-fact ticket inflation.

Pack VRF
ECVRF SECP256K1

Each pack rip uses Collector Crypt's on-chain VRF — verifiable via /api/vrf/verify.

How a draw works, step by step
  1. 01
    Draw opens
    A new draw is created on-chain. While it's open, the worker buys & opens packs — each rip's NFT goes into the vault.
  2. 02
    Window closes
    After 30 minutes, closeDraw() snapshots the eligible holder balances at the current block and requests randomness from Chainlink VRF.
  3. 03
    VRF reveals
    Chainlink VRF returns a verifiable random seed in a follow-up tx (typically within a block or two).
  4. 04
    Winner is picked
    The seed is used to pick one holder via weighted selection over the snapshot. Higher balance → higher probability, proportionally.
  5. 05
    Winner claims
    The winner has 7 days to call claimUsdc() or claimSlabs(). Both emit on-chain events with all the relevant tx info.
Verify a draw yourself

Any draw on the History page exposes 4 things you can inspect on-chain:

  • commitTx (Base)The tx that closed the draw and recorded the snapshot block + VRF request.
  • fulfillTx (Base)The VRF callback that delivered the random seed and selected the winner.
  • claimTx (Base)The winner's USDC withdrawal OR the claimSlabs() call that recorded their Solana address.
  • airdropTx (Solana)If slabs were claimed, the SPL transfer of every card in the vault to the winner's Solana address.
Always excluded from draws

These addresses can hold $RIPPR but never win:

  • · LP / Uniswap pair
  • · Burn address (0x…dEaD)
  • · Protocol treasury
  • · PrizePool contract
  • · Bankr fee wallet (until swept)
Open source

Contracts are open source. Read the code, fork it, build on it.