Provably Fair Shuffling for Table Games

Tim
MonsterByte
Published in
2 min readFeb 22, 2020
Provably Fair Shuffling for Deck Games

On of the most common complaints in online gambling is the feeling that the deck is stacked against you when you’re running cold, it’s tough to just blindly trust the Random Number Generator (RNG) was truly random!

At Monster Byte, we tackled this challenge by ensuring every casino game we support is built using a “provably fair” shuffling paradigm.

If a casino is “provably fair”, it means that the player can know for sure, with the power of mathematics, that nobody is being cheated. The most common implementation of Provably Fair is with Dice variants; however, at Monster Byte we support provably fair shuffling for our table games which include Blackjack, Roulette, Baccarat, Hi-Lo, and Video Poker!

How do we do this? What’s under the covers in laymen's terms?

At a high level, the technique we have built essentially allows our users to reshuffle the deck before it is dealt.

1 — First, we shuffle the deck server side, and then present the user with a hash of the shuffled deck before any wagers are made.

2 — Then, whenever the user places a wager, they provide a client_seed to us (which is generated randomly in your browser, or optionally by the user by hand).

3 — We then use the client_seed to reshuffle the deck in a deterministic way leveraging the Fisher-yates shuffle algorithm.

At the end of the wager we reveal the initial shuffle, which allows you to verify that we presented you with a valid hash, and also reshuffled the deck in the correct way. Since we didn’t know the value of the client_seed until the moment the hand was dealt, there is no way for us to manipulate the outcome of the shuffle of the deck.

Client Side Provably Fair Validation

If you want to try it out yourself, you can play a play-money hand at any of our partner casino sites, including AlteCarlo.com.

If you are looking to create your own Casino leveraging provably shuffling, feel free to contact us for API access or a white-label quote!

--

--