PotflarePotflare

Overview

Implementation

Games

Verify

PROVABLY FAIR

Games

Case Battles

Each player gets a ticket from 0 to 99,999 for each round. The item whose ticket range contains that number is awarded. The committed case configuration and locked player roster are included in the calculation.

// battle-hmac-sha256-v1 · roundIndex and slot start at 0
const message = JSON.stringify([
  'battle-hmac-sha256-v1', battleId, configHash,
  rosterHash, clientSeed, 'item', roundIndex, slot,
  cursor, 0 // final value is the digest block index
]);
// HMAC-SHA256(serverSeed, message), with rejection sampling
const ticket = acceptedDigestValue % 100000n;

Standard battles compare team item values; Crazy uses the lowest value, and Terminal counts only the final round. Ties use a separate seeded draw. Jackpot uses a weighted seeded draw; Crazy Jackpot reverses the weights. Shared modes divide the pool between players.

Paste a completed battle’s ID or link into the verifier to check every player’s ticket and item in every round. The saved seeds and battle details are loaded automatically. Final winner selection and payouts are not checked by this verifier.

Case Opening

Your server seed, client seed and play nonce generate a ticket from 0 to 99,999. The ticket selects the item from the case’s saved, inclusive ticket ranges. Use the case snapshot from that opening, since a case’s contents can change later.

// case-hmac-sha256-v1
const message = `case-v1:${clientSeed}:${nonce}:${cursor}`;
// First 4 digest bytes, interpreted as an unsigned big-endian integer.
// Reject values >= 4294900000 and retry with the next cursor.
const ticket = acceptedValue % 100000;

Upgrader

Upgrader generates a roll from 0.00000000 to 99.99999999. You win if it falls within your selected range. The start is included and the end is excluded; a range can wrap past 100 back to zero.

// upgrader-hmac-sha256-v1
const message = JSON.stringify([
  'upgrader-hmac-sha256-v1', clientSeed, nonce, cursor
]);
// Use the full HMAC-SHA256 digest, with rejection sampling.
const ticket = acceptedDigestValue % 10000000000n;
// Display ticket / 100000000 with exactly 8 decimal places.
const won = (ticket - rangeStartTicks + 10000000000n)
  % 10000000000n < winTicks;

Your wager, target value and the game configuration set the winning range’s width. Compare the reproduced roll with the winning range saved in your bet.

21 — Coming soon

The fairness explanation and verifier for 21 will be available when the game launches.

Verify a game result

Potflare

Potflare is an independent entertainment platform. Play responsibly and only with funds you can afford to spend.

Support:

support@potflare.com

Secure play with transparent rewards

Games

© 2026 Potflare. All rights reserved.

18+ only

Play responsibly

Powered by Solana