Pack Rush Logo
Packs
Pack Rush Logo
X
Packs
RewardsFairness
Privacy PolicyTerms of Service

© 2025 PackRush. All rights reserved.

0 Online

Loading chat...

Account Settings

Fairness Overview

Every player on PackRush should have complete confidence that every result is 100% fair and tamper-proof. To guarantee this, all of our games use a provably fair system that allows anyone to verify that every outcome is random, unbiased, and not manipulated by PackRush or any other party.

This ensures the integrity of every game, guaranteeing that the outcome of every pack open and battle is entirely unpredictable and transparent.

PackRush uses SHA-512 cryptographic hashing combined with a commitment scheme for pack openings. For battles, we add an additional layer of security by incorporating future EOS blockchain block hashes, ensuring outcomes cannot be predicted or manipulated.

Server Seed (Secret)

Generated by PackRush and kept hidden until your game ends. A hashed version is shown before play to prove it can't be changed later.

Client Seed (Public)

Chosen or generated on your device, ensuring you directly contribute to each random result. You can check and change your client seed below.

Nonce

An auto-incrementing counter that makes every result unique (1st pack = nonce 1, 2nd = nonce 2, etc.).

Step (Battles)

An incrementing counter for each pack opened in a battle (1st pack = step 1, 2nd = step 2, etc.). This ensures each pack in a battle has a unique, verifiable result.

Together, these values are combined as clientSeed:serverSeed:nonce, hashed with SHA-512, and converted to a ticket number between 1 and 1,000,000. This ticket number determines which prize you receive.

For battles, we use the same ticket number generation but combine your seeds with the hash of a future EOS blockchain block. For user players, the format is clientSeed:eosBlockHash:serverSeed:nonce:step. For bot players, we use a deterministic seed constructed from all user seeds in the battle (in the format clientSeed_serverSeed for each user), prefixed with the bot identifier, combined with the EOS block hash and step. The format is BOT_1_clientSeed_serverSeed:eosBlockHash:step. This ensures that battle outcomes are not known until the block is mined and that no player (or bot) can manipulate the result.

Once your game is complete, PackRush reveals the unhashed server seed, allowing anyone to verify that the result matches the pre-commitment and was not altered.

Client Seed

You can change your client seed at any time.

Server seed hash

The server seed is first provided in its hashed form. This seed, when combined with the client seed and a nonce, is used to generate random numbers. After each purchase, the unhashed server seed is revealed in your purchase history, allowing you to independently verify the fairness of the results. To ensure continued integrity, the server seed is refreshed after every purchase.

Verify Pack Randomness

For full transparency, we also provide verification functions you can use to confirm the fairness of your outcomes. The server seed, client seed, and nonce used in all games are recorded and can be reviewed in your game history.

Server Seed

Client Seed

Nonce

Verification code example:

import crypto from 'crypto'

export const sha512 = (value: string) =>
  crypto.createHash('sha512').update(value).digest('hex')

export const combineSeeds = (
  clientSeed: string,
  serverSeed: string,
  nonce: number
) => sha512(`${clientSeed}:${serverSeed}:${nonce}`)

export const getTicketNumber = (
  hash: string,
  maxNumber = 1_000_000
) => {
  const hashInt = BigInt('0x' + hash)
  const maxInt = BigInt(maxNumber)
  return Number((hashInt % maxInt) + BigInt(1))
}
Verify Battle Randomness

Battles use EOS blockchain block hashes for provably fair randomness. When a battle is created, a future EOS block number is selected. Once that block is mined, its hash is combined with player seeds to determine outcomes.

Each pack in a battle uses an incrementing step number (1, 2, 3, etc.) to ensure every pack opening has a unique, verifiable result. Use the player type dropdown to verify what the bots received in your battle - their outcomes are deterministic and can be independently verified.

Player Type

Client Seed

Server Seed

Nonce

EOS Block Hash

Step (Pack Number)

Battle verification code example:

import crypto from "crypto"

export const sha512 = (value: string) =>
  crypto.createHash("sha512").update(value).digest("hex")

export const getTicketNumber = (
  hash: string,
  maxNumber = 1_000_000
) => {
  const hashInt = BigInt("0x" + hash)
  const maxInt = BigInt(maxNumber)
  return Number((hashInt % maxInt) + BigInt(1))
}

// For USER players:
const userCombined = `${clientSeed}:${eosBlockHash}:${serverSeed}:${nonce}:${step}`
const userHash = sha512(userCombined)
const userTicket = getTicketNumber(userHash)

// For BOT players:
// The "Server Seed" from the battle modal is already the full combined string
// Format: BOT_1_{clientSeed}_{serverSeed}:{eosBlockHash}:{step}
const botHash = sha512(serverSeedFromModal)
const botTicket = getTicketNumber(botHash)
Profile
Fairness
Pack History
Battle History
Deposits
Withdrawals
Rewards
Rollover
Referral
Fairness Overview

Every player on PackRush should have complete confidence that every result is 100% fair and tamper-proof. To guarantee this, all of our games use a provably fair system that allows anyone to verify that every outcome is random, unbiased, and not manipulated by PackRush or any other party.

This ensures the integrity of every game, guaranteeing that the outcome of every pack open and battle is entirely unpredictable and transparent.

PackRush uses SHA-512 cryptographic hashing combined with a commitment scheme for pack openings. For battles, we add an additional layer of security by incorporating future EOS blockchain block hashes, ensuring outcomes cannot be predicted or manipulated.

Server Seed (Secret)

Generated by PackRush and kept hidden until your game ends. A hashed version is shown before play to prove it can't be changed later.

Client Seed (Public)

Chosen or generated on your device, ensuring you directly contribute to each random result. You can check and change your client seed below.

Nonce

An auto-incrementing counter that makes every result unique (1st pack = nonce 1, 2nd = nonce 2, etc.).

Step (Battles)

An incrementing counter for each pack opened in a battle (1st pack = step 1, 2nd = step 2, etc.). This ensures each pack in a battle has a unique, verifiable result.

Together, these values are combined as clientSeed:serverSeed:nonce, hashed with SHA-512, and converted to a ticket number between 1 and 1,000,000. This ticket number determines which prize you receive.

For battles, we use the same ticket number generation but combine your seeds with the hash of a future EOS blockchain block. For user players, the format is clientSeed:eosBlockHash:serverSeed:nonce:step. For bot players, we use a deterministic seed constructed from all user seeds in the battle (in the format clientSeed_serverSeed for each user), prefixed with the bot identifier, combined with the EOS block hash and step. The format is BOT_1_clientSeed_serverSeed:eosBlockHash:step. This ensures that battle outcomes are not known until the block is mined and that no player (or bot) can manipulate the result.

Once your game is complete, PackRush reveals the unhashed server seed, allowing anyone to verify that the result matches the pre-commitment and was not altered.

Client Seed

You can change your client seed at any time.

Server seed hash

The server seed is first provided in its hashed form. This seed, when combined with the client seed and a nonce, is used to generate random numbers. After each purchase, the unhashed server seed is revealed in your purchase history, allowing you to independently verify the fairness of the results. To ensure continued integrity, the server seed is refreshed after every purchase.

Verify Pack Randomness

For full transparency, we also provide verification functions you can use to confirm the fairness of your outcomes. The server seed, client seed, and nonce used in all games are recorded and can be reviewed in your game history.

Server Seed

Client Seed

Nonce

Verification code example:

import crypto from 'crypto'

export const sha512 = (value: string) =>
  crypto.createHash('sha512').update(value).digest('hex')

export const combineSeeds = (
  clientSeed: string,
  serverSeed: string,
  nonce: number
) => sha512(`${clientSeed}:${serverSeed}:${nonce}`)

export const getTicketNumber = (
  hash: string,
  maxNumber = 1_000_000
) => {
  const hashInt = BigInt('0x' + hash)
  const maxInt = BigInt(maxNumber)
  return Number((hashInt % maxInt) + BigInt(1))
}
Verify Battle Randomness

Battles use EOS blockchain block hashes for provably fair randomness. When a battle is created, a future EOS block number is selected. Once that block is mined, its hash is combined with player seeds to determine outcomes.

Each pack in a battle uses an incrementing step number (1, 2, 3, etc.) to ensure every pack opening has a unique, verifiable result. Use the player type dropdown to verify what the bots received in your battle - their outcomes are deterministic and can be independently verified.

Player Type

Client Seed

Server Seed

Nonce

EOS Block Hash

Step (Pack Number)

Battle verification code example:

import crypto from "crypto"

export const sha512 = (value: string) =>
  crypto.createHash("sha512").update(value).digest("hex")

export const getTicketNumber = (
  hash: string,
  maxNumber = 1_000_000
) => {
  const hashInt = BigInt("0x" + hash)
  const maxInt = BigInt(maxNumber)
  return Number((hashInt % maxInt) + BigInt(1))
}

// For USER players:
const userCombined = `${clientSeed}:${eosBlockHash}:${serverSeed}:${nonce}:${step}`
const userHash = sha512(userCombined)
const userTicket = getTicketNumber(userHash)

// For BOT players:
// The "Server Seed" from the battle modal is already the full combined string
// Format: BOT_1_{clientSeed}_{serverSeed}:{eosBlockHash}:{step}
const botHash = sha512(serverSeedFromModal)
const botTicket = getTicketNumber(botHash)