We want to create a simple game where a Player can bet on the outcome of a random draw, whose result can always be ”0” or ”1”.
In this game, only two participants are involved, a Player and an Organizer.
We want this game to be fair:
- The result must be influenced by the two participants but we don’t want any of them to have more importance than the other;
- Of course, we don’t want anybody to be able to predict the outcome of the game before it is played (otherwise, it won’t be fun);
- And we certainly don’t want anybody to be able to change the outcome after the random draw (that would be definitely not fair).
To achieve this, we put in place a simple process:
- The Organizer goes alone in a room where there is a box full of balls. About half the balls are black, and the others are white. The Organizer picks up a ball, puts it in a standard tin can, then closes the lid and seals the can.
- There can be only one ball in the can and, since it’s hermetically closed, nobody can see the ball inside.
- Now the Player enters the room as well. The Organizer gives him the can and asks him to pick up a ball.
Once the player took a ball, the game is ready: we have two balls, one chosen by the Organizer and the other by the Player, one ball that we can see and the other hidden inside a can.
The principles of the game are simple: if the two balls are of the same colors (”black and black”, or ”white and white”), the outcome will be ”0”. If the balls have a different color (”black and white”), then the result will be ”1”.
Now the game can start: the player makes a bet, by choosing ”0” or ”1”. Let’s say that he decides to bet on ”0” (his ball is white and he thinks that the Organizer also chose a white ball).
Unfortunately, the Organizer then tells to the Player: ”You lost!”.
The Player feels unlucky, but he’s not sure that he can trust the Organizer on the outcome. How can he be sure that the Organizer is telling the truth? Easy. The Organizer lends him a can opener.
The Player opens the tin can, looks at the ball and can verify by himself that this ball was indeed black – a different color than his.
We have achieved our goal:
- We got a game based on a random result;
- Nobody, and especially neither the Player or the Organizer, could have predicted the exact outcome, yet they both participated equally to this outcome;
- The Organizer, once he gave the tin can, had no way to alter the outcome after the Player picked his own ball or after he placed his bet.
- It was a fair game!
With all this, we have devised a system that is “provably fair”: once the game is over, we can retroactively confirm that the result was fair and, even better, directly and equally influenced by both participants. No possible contestation.
Now, this system may sound a bit basic (and it is), but based on similar principles and using sophisticated technologies (cryptography and blockchains), we can design much more advanced provably fair systems, allowing all kinds of draws or lotteries whose outcomes cannot be tampered, directed or predicted by anybody. In these provably fair games, the balls are called seeds (the components from which the final outcome will be derived) and the tin can is a cryptographic hash (a way to publicly present any data, while hiding its value).
Most importantly, these systems are utterly different from the ones used before. In the past, all online games, without any exception, were relying on the same and unique principle: (presumably) random numbers generated by the Organizer alone. And the only option left to the Player was to trust the Organizer, by believing that these numbers were indeed random, without any way to prove it, or to be sure of it.
In provably fair games, not only can the player be involved in the outcome (without being able to predict it), but everybody can verify afterwards that this outcome was indeed random. How cool is that?