🛡️ 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;
}