DOMHUANG
🛡️ Provably Fair RNG

Provably Fair RNG Audit Board

To eliminate manipulation, DomHuang implements 'Factory Pre-generation'. All cards and individual stats inside a Box/Case are pre-generated and cryptographically hashed before sale. The pack opening engine simply fetches the pre-assigned card from the queue - no real-time RNG manipulation.

📦 Live Supply Pool Status

Real-time D1 Database Sync

Total Cases Minted
2,000 Cases
(10,000 Packs in Pool)
Packs Opened
6,540 / 10,000
(65.4% Opened)
Chase Cards (UR/SEC) Remaining in Pool
8 / 10 Cards

The Jackpot Ledger (Recent Live Hits)

Real-time log of verified high-rarity pulls to prove legitimacy.

Time Player ID (Masked) Card Name & Rarity Card UUID Roll Status
2 mins ago DomLover*** URNong A (Swimsuit Edition) 769dcbc9-...-7fa2bd47e44 🔥 God Roll (100% Maxed)
15 mins ago User_888*** SECRealix Dragon (Alt Art) c72e95a0-...-a31b52fb34d Normal Roll
1 hour ago ArtToyCollector*** URVoid Mage Seraph a62726cc-...-824b4d2f6d3 Normal Roll

Circulation & Deflation Tracker

Ecosystem metrics ensuring your card values stay protected against inflation.

📈
Active Cards in Circulation
42,504 Cards
🔥
Cards Burned in The Furnace
18,340 Cards
💰
RXC Tokens Re-distributed
1,834,000 RXC

Developer & Algorithm Proof

Check the mathematical equations driving our RNG and battle engines.

// DomHuang Provably Fair Pack Opening Algorithm (TypeScript)
export async function openPack(packId: string, salt: string) {
  // 1. Fetch pre-generated blind index mapped to the pack
  const blindIndex = crypto.subtle.digest("SHA-256", new TextEncoder().encode(packId + salt));
  
  // 2. Fetch the pre-assigned card list mapped from factory production
  const preGeneratedCards = await db.select()
    .from(schema.cards)
    .where(eq(schema.cards.blindIndex, hex(blindIndex)))
    .all();
    
  return preGeneratedCards; // 100% Immutable and Auditable
}
// DomHuang Arena Clash Battle Simulation (Pure Math)
export function simulateClash(deckA: Card[], deckB: Card[]) {
  let log = [];
  for (let turn = 1; turn <= 20; turn++) {
    // Battle outcomes are computed deterministically using standard formula
    const powerA = deckA.reduce((sum, c) => sum + (c.atk || 0), 0);
    const defenseB = deckB.reduce((sum, c) => sum + (c.def || 0), 0);
    
    const damage = Math.max(1, powerA - Math.floor(defenseB * 0.4));
    deckB[0].hp = Math.max(0, deckB[0].hp - damage);
    
    if (deckB[0].hp === 0) deckB.shift(); // Card defeated
    if (deckB.length === 0) break; // Team defeated
  }
  return log;
}