These emotes are currently available:
close
Sign in to chat!

How can you provide a provably fair system?

The website is using a public commitment scheme.

Commitment scheme:
This protocol requires every participating party to provide a commitment which will - together with all other users commitments - form the random value.
This scheme isn't depending on the availability of a third party and can be easily verified by all participants.
If you want to know how I implemented this system, keep on reading.

How does the system work?
The commitment scheme the website is using requires a commitment from all participating parties (this is every user placing a bet) which will form the seed for a repeatable cryptographically secure pseudo-random number generator (CSPRNG). This might sound a bit complicated, so I will try to explain it with an example.

Imagine you and 4 friends want to agree on a random result with two outcomes but don't want to use any random source you all need to agree on.
You could use the following system:
Everyone thinks of a number and writes it on a small piece of paper. After you are done, you reveal it to everyone. A possible way to determinate the result would be to sum up all the numbers of all 5 participants and look if it is a even or a odd number.
This system is really easy and everybody can prove that the result is truly random and not manipulated.

But this system has one weakness:
The last participant to think of a number can see all the commitments of the other participants and can change the outcome to his favour, because he can simply sum up all the numbers of the other 4 participants and can decide what he wants to write on his paper.
To counter this weakness, you can use a simple trick:
Everybody uses two bits of paper, one he writes his number on and one he writes another number on.
The first paper will be revealed to all participants, the other one will get folded together and kept hidden.
Once every party has contributed their two papers, they will reveal the second number and add it to the first number, making it impossible for the last contributor to guess the resulting numbers of all participants before he/she himself has contributed his number.
This eliminates the problem and makes this protocol a strong and secure way to provide a random result for a number of participants.

The way I implemented the system doesn't force you to contribute a random value to the system, the server will provide you with one at the start of each match.
You can see the current values at the bottom of the page, click on "Provably fair" and it will show you this:

Server salt:
This data will be provided by the server to encrypt your commitment.
Your commitment:
This is the data you will provide as a part of the seed that will determinate the winner of the match.
You can write everything you want, but you are limited to a maximum of 128 characters and a minimum of 32 characters.
You can also only use upper- or lowercase characters from A-Z and digits from 0-9.
Resulting hash:
This is a SHA256-hash of the two values above (Server salt + commitment).
The SHA256 hash function will convert your input and the server salt into a string with a fixed length.
Any little change will completely change the outcome, you can test this by changing your commitment value - the hash will update automatically.

When you place your bet, all three values will be submitted to the server, but only the hash will be shown to the other users, making it impossible for them to guess your original commitment value. After the bets are closed, all values will be revealed and every user can see the commitment of the other users. The outcome of the match will get determined by using all of the user commitments joined together as a seed for the random number generator.
The used random number generator by David Bau can be found here.
The range of the ticket is 0-100, below you will see the outcomes depending on the ticket number:

You can watch the whole process for the current match below.

To show a specifc match, enter the match id below and click the button!

Current match! - expand_less
User Server salt Commitment Hash
Match #11817expand_less
Pleasant Gaming (8) vs. Pressure Clan (16) - Map: Cobblestone - Timestamp: 21-January-2017 14:04:31

Random seed (joined user commitments):

Winner ticket: (Team 2 won)
ID User Server salt Commitment Hash
33214 Kaneki [CSGO-Coins.com] c25248c762ea0f16 32436e4fd081627b55d678f6823c1c9bc8e22083199ca128342ee2f9c5f9afe4 0b8989fa50c4030043a09813cbe3c6ecb4aa39e556cb3234a8a644f283cd88ac
33215 Gamesby csgojoe.com 9350b9fd4133a564 6b6eb9211b4917cba0787f954f6aec46ab2ee54912c819c5e0138d6ca3e02e39 85496700fbd89c6cee6062af3794862c76d07100a7e541d182688d884d61ab10
Match #11816expand_more
Match #11815expand_more
Match #11814expand_more
Match #11813expand_more
Match #11812expand_more
Match #11811expand_more
Match #11810expand_more
Match #11809expand_more
Match #11808expand_more