← Back to blog

·

How Does BluffKing Draw Prizes? Does It Favor Certain Players?

How TOTO generates shared random results, animates draws and pays fixed prizes—and where server trust and independent verification differ.

You pick your numbers and watch the balls appear. Does the server avoid your choices? Do new players win more often? Does membership improve the odds?

Here is how TOTO in BluffKing’s lottery center generates numbers, displays a draw and settles prizes. This is a free gold-bean game, not an official lottery. This article describes the code at the time of writing; it is not an independent audit of every live draw.

One server-generated result for everyone in a period

Players choose six numbers from 1–49. The server uses the operating system random source, OsRng, to sample seven distinct numbers. The first six become the winning numbers; the seventh is the additional number. The winning numbers are sorted for display, and the result is stored in the period’s database record.

You and a friend in the same period share that result. Refreshing, changing devices or arriving later reads the saved numbers rather than producing a personalized draw.

Does the server look at my ticket before deciding I lose?

The draw function receives the game type, not player identities or ticket selections. Account, membership, gold-bean balance, selected numbers and past wins or losses are not its inputs. The calling draw path does not search for the cheapest combination to pay out.

Purchase records support charging and settlement. The server generates the period’s result first; settlement then reads tickets and calculates prizes. In this code path, we found no adjustment based on identity, selections or past results, and no new-player boost, membership advantage or losing-streak guarantee.

The balls animate a result that already exists

The server generates and saves the numbers before the client reveals them with ball animations, sound and hit feedback. Screen physics do not decide the numbers.

Skipping the animation reveals the result sooner; it does not redraw it. Device speed, network delay and click timing cannot change the saved result. Halfway through the animation, the full result already exists.

A period every five minutes, closing five seconds before the draw

TOTO currently follows a fixed five-minute schedule. New purchases for a period close five seconds before its draw. The server checks the period, its status and the time, and rejects purchases after the cutoff. This is enforced beyond the disabled button.

A background task processes due periods. Database row locks coordinate multiple backend instances; the normal path does not draw again for a period with a successfully saved result. Scheduled time is not a millisecond guarantee: delays or service failures can postpone the actual draw.

Prizes follow a fixed table

A base stake costs 10 gold beans. These are the payouts for one stake at a 1× multiplier, not cash prizes:

MatchesGold-bean payout
6 winning numbers10,000,000
5 winning numbers + additional1,000,000
5 winning numbers10,000
4 winning numbers + additional3,000
4 winning numbers500
3 winning numbers + additional250
3 winning numbers100

These are fixed payouts, not a pool divided among the period’s winners. The table shows credits at settlement; subtract the purchase cost to calculate net gain.

System entries follow the same rules: seven selected numbers make seven stakes, eight make 28, and nine make 84. The server sums the prizes for the six-number combinations and applies the purchased multiplier.

More distinct combinations cover more possible outcomes. Buying the same selection at a higher multiplier increases its payout if it wins, not the chance of that selection being drawn.

Why are big wins still so rare?

Choosing six numbers from 49 gives 13,983,816 combinations. With uniform random sampling, one stake’s chance of matching all six winning numbers is one in 13,983,816. This is the top-group probability, not the chance of winning any prize.

Randomness does not compensate for your experience. A losing streak does not make the next ticket due to win, and a number’s long absence gives it no extra chance. Hot, cold and overdue statistics describe history; the current draw algorithm does not read them to choose the next result.

No player targeting in the code is not an independent proof of every draw

An operating system random source, shared results and fixed payouts are mechanisms in the current implementation. Whether a player can independently prove that every draw was free from intervention is a separate question.

The reviewed draw implementation does not provide a complete player-facing cryptographic verification flow, such as publishing a seed commitment before a draw and revealing material afterward for independent reconstruction and comparison.

Players can check tickets, results and payouts. Animation and history alone cannot prove that server software or database records were never altered. This system still requires trust that the server executes the stated code.

We found no player targeting, ticket-avoidance or individual win/loss control in the current TOTO draw path. It also does not yet provide a complete proof that lets players independently verify the entire draw process. Players deserve to know both the safeguards that exist and their limits.

Implementation references

We checked sampling and payouts in server/src/lottery/rules.rs, drawing and settlement in draw_loop.rs, schedules in mod.rs, purchase validation in store.rs, and animation in client-game/src/components/games/lottery/useLotteryReveal.ts. Games have different mechanisms; these TOTO findings do not automatically apply to other games.

See the TOTO guide for the full gameplay introduction.