Provably Fair Policy
Provably Fair: Your Guarantee of Transparency at Spin
At Spin, your trust is everything. That’s why we use a Provably Fair system to prove—mathematically and transparently—that every result in our loot boxes and original games is genuinely random, tamper-proof, and cannot be manipulated by anyone, including us.
Here’s a complete look at how it works, both conceptually and technically, so you can fully understand—and verify—your gameplay outcomes.
The Core of Fairness: Seed Pair & Nonce System
Each game round (e.g., loot box opening) is powered by a unique combination of three elements:
1.Server Seed
A random value generated by Spin.
2.Client Seed
A value generated by your browser (and you can change it at any time).
3.Nonce
A counter that starts at 0 and increments by one with every new game round.
These three values work together to create a combined seed that’s used to generate the game result. This method ensures every game has a distinct, verifiable outcome.
How Each Fair Result Is Generated
To determine each game’s outcome, the system follows a precise, verifiable process:
1. Server Seed Generation
Spin generates a secret random string called the Server Seed. Before gameplay starts, we display its SHA-256 hash to you (called the Hashed Server Seed)—this proves we can’t change it later without being caught.
2. Client Seed Creation
Your browser generates the Client Seed, which is your unique contribution to the randomization process. You’re free to update this seed at any time, giving you control over the inputs used to generate game outcomes.
3. Nonce Counter
For every new game round (like opening a loot box), the Nonce increases by one. It guarantees that each round produces a unique result—even with the same seed pair.
Technical Breakdown: From Seed to Random Result
Here’s how we turn the seed data into a fair and random outcome:
1. Combine Seeds and Nonce
The Server Seed, Client Seed, and Nonce are merged into a single string. This combined seed is unique for every game round.
const combinedSeed = `${clientSeed}:${serverSeed}:${nonce}`;2. Hashing the Combined Seed
We apply the SHA-512 hashing algorithm to the combined seed, creating a long string of seemingly random characters (the hash). This hash is what powers the actual game result.
const hash = sha512(combinedSeed);3. Extracting the Ticket Number
From this hash, we generate a random ticket number—a number between 0 and 99,999,999. This ticket determines the outcome of the round.
Every item or outcome in our loot boxes is assigned to a specific range of ticket numbers. When your ticket lands in a particular range, you receive the corresponding reward.
private getTicketNumber(hash: max = 1e8) {
// Take the first 8 characters of the hash
const subHash = hash.slice(0,8);
// Parse the hex substring to a number
const valueFromHash = parseInt(subHash, 16);
// Calculate a value between 0 and 1 by dividing by 2^32
const e = Math.pow(2,32);
const normalizedValue = valueFromHash / e;
// Using Math.floor ensures we get integers from 0 to max-1
return Math.floor(normalizedValue * max);
}Example Workflow for Each Game Round
1. You open a loot box.
2. The system uses:
- The hidden Server Seed
- Your Client Seed
- The current Nonce
3. These are combined and hashed.
4. A random ticket number is generated from the hash.
5. That ticket number determines your result, based on the defined ranges for each item.
6. Once a Server Seed is retired, it’s publicly revealed so you can verify every outcome.
Verify Past Rounds Yourself
We believe in radical transparency. That’s why we give you the tools to independently verify every past result.
Use our CodePen verification tool to input:
1. The Server Seed (revealed after retirement)
2. The Hashed Server Seed (which you saw before playing)
3. Your Client Seed
4. The Nonce for each game round
With this information, you can reproduce the random ticket number and confirm it matches the result you received.
What Makes This Provably Fair?
1. We commit to a Server Seed in advance (via its hash).
2. You contribute your own Client Seed, which you can change.
3. Nonce ensures uniqueness in every round.
4. SHA-512 hashing makes it impossible for anyone to predict or manipulate results.
5. You can verify every game afterward using public data.
This system makes cheating or bias impossible—whether by us or any third party. What you see is exactly what you get: verifiable randomness.