Verify Bet – Verify your bets to ensure transparency

Verify Bet

Magnifying Glass

Below you can authenticate the outcomes of any bet placed on our site. Please provide the information for the specific bet you wish to verify.

How we get the winning numbers

This has been updated as of 2025-06-17. Any bets placed before this date will show different numbers generated by the hash. The server seed & hash will still validate.

Below is the function used to get the winning numbers from the hash:
function getWinningNumbers(
    string $clientSeed,
    int    $nonce,
    string $serverSeed,
    int    $min,
    int    $max,
    int    $count,
    bool   $unique = false,
    bool   $pad    = false
): array {
    $rangeSize = $max - $min + 1;

        // Fast path: non-unique draws in small range → single HMAC + byte-based rejection sampling
    if (!$unique && $rangeSize <= 200) {
        $results   = [];
        $ctr       = 0;
        // generate initial raw HMAC buffer
        $buffer    = hash_hmac('sha512', "{$clientSeed}-{$nonce}", $serverSeed, true);
        $bufLen    = strlen($buffer);
        $pos       = 0;
        // rejection threshold to avoid modulo bias
        $threshold = (int)floor(256 / $rangeSize) * $rangeSize;
        while (count($results) < $count) {
            // refill buffer if exhausted
            if ($pos >= $bufLen) {
                $ctr++;
                $buffer = hash_hmac('sha512', "{$clientSeed}-{$nonce}:{$ctr}", $serverSeed, true);
                $bufLen = strlen($buffer);
                $pos    = 0;
            }
            $b = ord($buffer[$pos++]);
            // reject values outside threshold for uniformity
            if ($b >= $threshold) {
                continue;
            }
            $val = $b % $rangeSize;
            $num = $min + $val;
            $results[] = $pad ? sprintf('%02d', $num) : $num;
        }
        return $results;
    }

    // Secure bit-extraction path for unique draws or larger ranges
    // 1) initial HMAC buffer (binary)
    $buffer = hash_hmac('sha512', "{$clientSeed}-{$nonce}", $serverSeed, true);
    $bytePos = 0;
    $bitPos  = 0;
    $bufLen  = strlen($buffer);
    $reseedCt = 0;

    // reseed helper: append 512-bit blocks
    $ensureBits = function(int $needed) use (&$buffer, &$bufLen, &$bytePos, &$bitPos, $clientSeed, $nonce, $serverSeed, &$reseedCt) {
        while ((($bufLen - $bytePos) * 8 - $bitPos) < $needed) {
            $extra = hash_hmac('sha512', "{$clientSeed}-{$nonce}:{$reseedCt}", $serverSeed, true);
            $buffer .= $extra;
            $bufLen  = strlen($buffer);
            $reseedCt++;
        }
    };

    // get n bits, return int
    $getBits = function(int $n) use (&$buffer, &$bytePos, &$bitPos, $ensureBits) {
        $result = 0;
        $taken = 0;
        while ($taken < $n) {
            $ensureBits($n - $taken);
            $current = ord($buffer[$bytePos]);
            $avail = 8 - $bitPos;
            $toTake = min($avail, $n - $taken);
            $shift = $avail - $toTake;
            $mask = (1 << $toTake) - 1;
            $result = ($result << $toTake) | (($current >> $shift) & $mask);
            $bitPos += $toTake;
            $taken += $toTake;
            if ($bitPos === 8) {
                $bitPos = 0;
                $bytePos++;
            }
        }
        return $result;
    };

    // precompute bit lengths
    if ($unique) {
        $bitLens = array_map(
            fn($i) => (int)ceil(log($rangeSize - $i, 2)),
            range(0, $count - 1)
        );
    } else {
        $commonLen = (int)ceil(log($rangeSize, 2));
    }

    $results = [];

    if ($unique) {
        // unique draws via partial Fisher-Yates
        $pool = range($min, $max);
        for ($i = 0; $i < $count; $i++) {
            $needed = $bitLens[$i];
            $limit = $rangeSize - $i;
            do {
                $val = $getBits($needed);
            } while ($val >= $limit);
            $num = $pool[$val];
            $results[] = $pad ? sprintf('%02d', $num) : $num;
            $last = $limit - 1;
            [$pool[$val], $pool[$last]] = [$pool[$last], $pool[$val]];
        }
    } else {
        // replacement draws via bit extraction
        for ($i = 0; $i < $count; $i++) {
            do {
                $val = $getBits($commonLen);
            } while ($val >= $rangeSize);
            $num = $min + $val;
            $results[] = $pad ? sprintf('%02d', $num) : $num;
        }
    }

    return $results;
}

You can get the winning numbers for each game by using the following:

Quick Pick: $winning_array=getDraws($cseed, $nonce, $sseed, 0, 49, 4, false, true);
Line Bingo: $winning_array=getDraws($cseed, $nonce, $sseed, 0, 9, 6, false, false);
High-Low: $winning_array=getDraws($cseed, $nonce, $sseed, 0, 99, 5, false, true);
Lucky 7s: $winning_array=getDraws($cseed, $nonce, $sseed, 0, 9, 15, false, false);
Pick Six: $winning_array=getDraws($cseed, $nonce, $sseed, 0, 9, 6, false, false);
Mini Keno: $winning_array=getDraws($cseed, $nonce, $sseed, 0, 39, 10, true, true);

Verify Bet

Valid Bet

Server Seed & Hash: [MATCH]

Verify Bet

Log in

Enter your email to receive a verification link to access your account.

Don't have an account?

Email sent!

Enter the verification code we emailed you below to access your account.

Didn't receive our email?

Resend

Try different method

Sign up

Enter your email to receive a verification code to create your account.

Already have an account?

Email sent!

Enter the verification code we emailed you below to confirm your account.

Didn't receive our email?

Resend

Set up your account

Step 1/4: Pick your name

1

2

3

Let’s set up your account. Pick a cool name!

Set your nickname:

All settings can be updated later on your profile page.

A bonus to get you started!

Pick 1 card and win money to play right away!

1

2

3

Bonus Gif

YOU WON!

Money Icon

$0.05

Money Icon

+0.00000010

Bonus Gif

YOU WON!

Money Icon

+$0.05

Money Icon

+0.00000010

Bonus Gif

YOU WON!

Money Icon

+$0.05

Money Icon

+0.00000010

Pick your first game!