Mechanics

How WCUP works.
Exactly.

PHASE 1 · PACK WINDOW

Opening a pack

Send 1 WWCUP token to the pack opener contract. The contract:

  1. 01Burns 0.95 WCUP (950,000 base units) from your wallet — permanently removed from supply
  2. 02Transfers 0.05 WCUP (50,000 base units) to the treasury PDA
  3. 03Creates a PackOpening account on-chain with status = Pending
  4. 04Requests verifiable randomness from Switchboard On-Demand
  5. 05Increments the global packs_opened counter
  6. 06If packs_opened == 48,000: seals the opener atomically (one-way, no override)
Pack opening is irrevocable. The 0.95 WCUP burn happens on submission, not on VRF callback. VRF failures are extremely rare (<0.01%). No refunds are issued.
VRF · RANDOMNESS

Verifiable randomness

Switchboard On-Demand generates a verifiable random value on-chain. The callback instruction is called by the registered VRF oracle — validated by requiring its signature and matching its pubkey against the stored vrf_oracle field in GlobalState.

Country index is derived as: country_index = u64::from_le_bytes(randomness[0..8]) % 32

Bias note: u64::MAX (18,446,744,073,709,551,615) is not exactly divisible by 32. Indices 0–7 have a negligible extra probability of ~5.4×10⁻²⁰. This is accepted.
PHASE 2 · CURVE TRADING

Trading country tokens

Each of the 32 country tokens has its own Meteora Dynamic Bonding Curve (DBC) against SOL. The curves are independent — ESP trading activity doesn't affect FRA prices.

Supply per token
1,000,000 (fixed)
Migration threshold
10 SOL (country), 85 SOL (WCUP)
Creator trading fee
20%
Migration
30% to DAMM v2 at threshold

When a bonding curve reaches its migration threshold, 30% of the token supply and the raised SOL migrate to a DAMM v2 pool (Meteora AMM v2). The remaining 70% stays permanently on the bonding curve.

CONTRACT CONSTANTS

Hardcoded constants

These values are constants in the Anchor program. They cannot be changed after deployment — there is no admin upgrade authority.

MAX_PACKS
48,000
Hard cap on pack openings
BURN_BPS
9,500 (95%)
WCUP burned per pack
TREASURY_BPS
500 (5%)
WCUP sent to treasury per pack
COUNTRY_COUNT
32
Number of country tokens
TOKENS_PER_PACK
1,000,000 base units
Country tokens transferred to user
VRF_TIMEOUT
86,400s (24h)
After which pack can be marked failed
TOKENOMICS

Supply math

WCUP initial supply1,000,000
Max burn (all 48K packs)45,600 WCUP (4.56%)
Max to treasury2,400 WCUP (0.24%)
Final WCUP supply (post all packs)954,400 WCUP
Country tokens total32,000,000 (32 × 1M)
Country tokens held by treasury at launch32,000,000
Country tokens in circulation (per pack)+1 token per pack opened
Open a packBrowse markets