logo bgaming
Contacts
Whether you are an iGaming operator, a platform provider or a reseller, leave us a message if you would like to integrate our top-quality game content.

Provably fair

Bgaming is the first major iGaming provider to introduce the "provable fairness" feature. Provably fair in online gambling can be described as an algorithm which is used to analyze and verify fair play.

Bgaming algorithm is based on a cryptographic method that ensures that the outcome of the round is unaffected by player’s bet and that player cannot know the outcome before the actual gameplay.

Here is the workflow:

  • Before the game starts we calculate the game outcome called Result. For each round we generate random string called Secret just because we cannot simply show Result to user. Afterwards the data is hashed using the SHA-256 algorithm and the Hash (Result + Secret) is passed to player.
  • Before the actual bet player can place the Client seed to special input. There are two options for player: using a number randomly chosen by the system or pick own number.
  • Actual game play is happening. At this point we take the the Client Seed and apply it to Result. Applying Client Seed to Result is different considering the type of game you are playing. You can find the description of each method below.
  • Once the round is completed we pass the Result + Secret and Final Result to player.

In simple words we calculate the outcome of each round before actual bet is placed and everything else happening afterwards is simply for the player to assure themselves of the game to be fair and unaffected by their bets.

Here is how it looks like if real life for Roulette

Player opens the game and Provably Fair widget.

Before any bet placed we already calculated the outcome of the spin for player's next round. This is Next game block of the Provably Fair widget - Hash (Result + Secret).

Here in this same block player can place the Seed. Below the example of a player picking their own number. The number selected by the system can be from 0 to 36 (or 37 for American roulette).

Player is placing the bet and making the spin. Once the outcome is displayed for a player there is another block become available in Provably Fair widget - Last Game.

From the workflow we already know what player should receive: Result + Secret, Client Seed, Hash and Final Result.

Now let's use all the info received.

Take the Result + Secret. This looks like a string: {"server":2,"game":"AmericanRoulette","secret":"290fb3c9fbfc2afa5339bf27e5c25cbb"}

Server in Roulette means the spin. This was the actual Result we calculated before the bet placed.

Game is the id of the game you are playing. This id is also participating in Hash configuration. Apart from that no specific meaning is standing behind the Game here.

Secret is randomly generated string. As you already know we cannot just show the Result to player thus we use the Secret.

Having this Result + Secret you can actually verify if the Hash player received is the same with the one that any hash generator can create.

Now let's compare the Hash our online tool generated to the one player received in the game - Hash (result + secret) f88e5c0943740b0269b21347fa26c59b1717ee200584ac40e1c56edd49ad82b8. As you can see they completely match.

Following the workflow the only thing left is to apply the Client Seed to our Result. We know the Client Seed amounted at 5. So we take the Seed and apply to the Result - remember, the one that is "server":2. In the end we receive our Final Result which is 7, exactly the one player received as his outcome of the spin.

That is the whole story about Roulette.

Here is how it looks like if real life for Card games

Player opens the game and Provably Fair widget.

Before any bet placed we already calculated the outcome of the round. This is Next game block of the Provably Fair widget - Hash (Result + Secret).

Here in this same block player can place the Seed. Below the example of a number randomly chosen by the system - the selection is from 0 to 311 (might vary depending on the game).

Player is placing the bet and clicking Deal button thus participating in the round. Once the outcome is displayed for a player there is another block become available in Provably Fair widget - Last Game.

From the workflow we already know what player should receive there: Result + Secret, Client Seed, Hash and Final Result.

Now let's use all the info received.

Take the Result + Secret. This looks like a string: {"deck":"JH:8H:2H:JC:9S:TS:AC:KC:AH:KD:4S:QC:8C:6S:3S:5D:6D:JS:8D:2D:2C:TH:JS:JD:AC:QH:JD:AC:QC:9S:7S:TH:TD:3C:7C:3C:TS:7H:9C:QS:2H:9D:9C:4D:7C:QC:7S:5H:5D:5D:3C:4C:4C:4C:8C:QH:6D:6H:AD:8S:8S:9C:3H:QC:6D:KC:AC:KS:5H:AH:8H:TS:2C:3S:6S:6C:8D:2S:KH:TS:4S:KD:JC:7C:AS:5S:6H:AH:2D:8C:JH:7S:8S:8D:6D:5C:4S:9H:KH:7D:TH:JH:6S:AS:QH:4C:4H:KC:3S:9H:AS:TD:7C:6H:KS:4C:5C:7D:QD:4H:6C:3C:JD:9H:JC:QH:7C:5C:QC:5D:4H:6S:3H:QS:8H:AS:TH:5S:TD:2D:2S:JC:KS:9S:JS:QH:8D:6H:KH:3D:7D:8D:5H:JD:KC:2S:AS:QD:7D:5D:8C:AD:KD:KH:4D:7D:KH:KD:5C:6D:2C:4H:TC:2S:KD:3S:2H:2D:AH:5S:AH:TC:TS:2H:4S:9D:5S:8H:2S:8D:JC:AH:JD:TC:QS:AD:9S:2S:6C:3H:4D:9H:3H:QD:8C:8S:6C:JS:9D:3D:7H:3D:4H:5S:9D:7S:JH:2H:4D:QD:9C:2C:3H:7H:3H:9D:KS:7H:QC:JC:7H:KC:2C:2D:2H:TS:2C:TC:TH:JS:JD:3S:QH:TD:7S:JS:8H:KS:6C:QS:8H:4H:AD:KC:7C:5H:AD:6S:9C:8S:TC:TD:9H:KD:7S:4D:5C:3C:5C:2D:JH:JH:9H:KH:AC:9S:3D:AC:9S:5S:6C:3D:QS:3D:QD:3C:4S:QD:6H:TC:7H:AS:4S:7D:AD:QS:4D:6S:8S:5H:TD:4C:5D:8C:6H:9C:3S:5H:TH:6D:9D:KS","game":"MultihandBlackjack","secret":"3ede863f6999e69d06ebcdee2e225029"}

Deck is the actual cards player is playing with. The position of cards was the actual Result we calculated before the bet placed.

Game is the id of the game you are playing. This id is also participating in Hash configuration. Apart from that no specific meaning is standing behind the Game here.

Secret is randomly generated string. As you already know we cannot just show the Result to player thus we use the Secret.

Having this Result + Secret you can actually verify if the Hash player received is the same with the one that any hash generator can create.

Now let's compare the Hash our online tool generated to the one player received in the game - Hash (result + secret) 93c4fad060abf2f2dae340722e3cbbb1812c58667e3e03ccf2accb0089b4e728. As you can see they completely match.

Following the workflow the only thing left is to apply the Client Seed to our Result. We know the Client Seed amounted at 259. So we take the Seed and apply to the Result - remember, the one with the cards.

Make sure yourself with the example.

That is the whole story about Card games.

Here is how it looks like if real life for Slots

Player opens the game and Provably Fair widget.

Before any bet placed we already calculated the outcome of the round. This is Next game block of the Provably Fair widget - Hash (Result + Secret).

Here in this same block player can place the Seed. In slots the Seed represent five reels, and the selection takes place from 1 till 9 for each separate reel.

Below the example of a player picking their own number.

Player is placing the bet and spinning. Once the outcome is displayed for a player there is another block become available in Provably Fair widget - Last Game.

From the workflow we already know what player should receive there: Result + Secret, Client Seed, Hash and Final Result.

Now let's use all the info received.

Take the Result + Secret. This looks like a string: {"symbols":[["man","j","t","q","t"],["chief","girl","j","a","a"],["j","k","q","t","chief"],["girl","man","face","k","t"],["k","face","t","man","k"],["a","j","a","j","girl"],["q","t","q","t","t"],["k","a","k","k","a"],["t","beast","beast","q","beast"],["q","j","q","a","t"],["a","k","man","t","a"],["face","a","face","q","face"]],"card":"4H","game":"AztecMagic","secret":"b52d25dbfdcc5aefaa6d426028b28bbc"}

Symbols are our reels. Since we can move the reels by 9 positions - remember the Seed selection number is 9 - we amounted at 12 reels displayed in the string.

Game is the id of the game you are playing. This id is also participating in Hash configuration. Apart from that no specific meaning is standing behind the Game here.

Secret is randomly generated string. As you already know we cannot just show the Result to player thus we use the Secret.

Having this Result + Secret you can actually verify if the Hash player received is the same with the one that any hash generator can create.

Now let's compare the Hash our online tool generated to the one player received in the game - Hash (result + secret) f51a2650ccac3416b0dbc9ac10a7f5de0334a2b5d9aa27859e36a9f870f2f88f. As you can see they completely match.

Following the workflow the only thing left is to apply the Client Seed to our Result. We know the Client Seed amounted at 19726. So we take the Seed and apply to the Result - remember, the one with reels positions.

Make sure yourself with the example.

That is the whole story about Slots.

Provably fair

We are the first major iGaming provider to introduce the "provable fairness" feature. With the help of cryptography players can easily verify that all game results are indeed unbiased and random.

Any currencies

Known as pioneers of Bitcoin gambling, we can handle any of the world’s fiat currencies, cryptocurrencies, or virtual currencies used in social casinos.

Trusted provider

We are a certified and licensed iGaming vendor whose games are available in multiple jurisdictions.

Partners

Our games have been featured on the leading industry media.

Reviewed by AskGamblers Reviewed by VegasSlotsOnline Reviewed by Gamblerspick Reviewed by LCB

Game aggregator

Integrate our API and get access to 1000s of casino games from 25 more game providers!