OPDUEL

Fairness

OPDuel Originals

Limbo

Plinko

Keno

Roulette

Mines

Blackjack

Roll

Dice

Provably Fair Plinko

Drop a ball through a field of pegs and watch it bounce left or right at each row. The final bucket determines your multiplier. Choose between 8-16 rows and three risk levels (Low, Medium, High) to control the payout spread.

Verify Game Fairness

The Algorithm

// Step 1: Generate one float per row
const floats = [];
let round = 0;
let byteIndex = 0;
let hash = [];

while (floats.length < rows) {
    if (byteIndex === 0 || byteIndex >= 32) {
        const message = `${clientSeed}:${nonce}:${round}`;
        hash = HMAC_SHA256(serverSeed, message);
        byteIndex = 0;
        round++;
    }

    const bytes = hash.slice(byteIndex, byteIndex + 4);
    let float = 0;
    for (let i = 0; i < 4; i++) {
        float += bytes[i] / Math.pow(256, i + 1);
    }
    floats.push(float);
    byteIndex += 4;
}

// Step 2: Generate path (0 = left, 1 = right)
const path = floats.map(f => Math.floor(f * 2));

// Step 3: Calculate bucket (sum of rights)
const bucketIndex = path.reduce((sum, dir) => sum + dir, 0);

// Step 4: Look up multiplier
const multiplier = MULTIPLIERS[rows][risk][bucketIndex];

How It Works

  1. Generate floats - Create one random float per row. Each float uses 4 bytes. Games with more than 8 rows require multiple hash rounds.
  2. Determine directions - Each float is multiplied by 2 and floored:
    • Result 0 = ball goes Left
    • Result 1 = ball goes Right
  3. Calculate bucket - The final bucket is simply the count of right moves. With 8 rows, there are 9 possible buckets (0-8). Bucket 0 means all lefts, bucket 8 means all rights.
  4. Look up multiplier - Each row count and risk level has a fixed multiplier table. Edge buckets (0 and max) are rarest and have the highest multipliers.

Multiplier Tables

8 Rows
BucketLowMediumHigh
0, 85.6x13x35x
1, 72.1x3x3.2x
2, 61.1x1.3x1.4x
3, 51x0.7x0.3x
40.4x0.3x0.2x
16 Rows
BucketLowMediumHigh
0, 1616x110x1000x
1, 1510x41x130x
2, 142x10x26x
3, 131.4x4x9x
4, 121.4x2x4x
5, 111.2x1.1x2x
6, 101.1x1x0.7x
7, 91x0.5x0.4x
80.4x0.2x0.2x

Higher risk = bigger edge multipliers but lower center payouts.

Example

Given these inputs:

  • Server Seed: c5e7146c5863d7d647c93ffe7d4ec13fffbb7311108fab0c067d97bcc2b32d55
  • Client Seed: LuckyClientSeed777
  • Nonce: 32
  • Rows: 16
  • Risk: HIGH

16 rows needs 64 bytes (2 hash rounds). The path is determined row by row:

RowFloat× 2Direction
10.5022181.00 → 1Right
20.5379291.08 → 1Right
30.8422741.68 → 1Right
40.0094870.02 → 0Left
50.7392721.48 → 1Right
60.8222821.64 → 1Right
70.5748631.15 → 1Right
80.5022821.00 → 1Right
90.1861130.37 → 0Left
100.9412591.88 → 1Right
110.5522081.10 → 1Right
120.6998411.40 → 1Right
130.9437471.89 → 1Right
140.5116691.02 → 1Right
150.8156511.63 → 1Right
160.8638961.73 → 1Right

Path: R R R L R R R R L R R R R R R R → 14 rights → Bucket 14. With HIGH risk on 16 rows, bucket 14 pays 26x.

Verify your bets by selecting the "My Bets" tab at the bottom of the page while playing, then click on the bet you want to verify. For older bets, find them in your Bet History.

    CashierHomeGamesChat





    OPDUEL