These emotes are currently available:
close
Enter a bonus code here:
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 #14106expand_less
Guardians Of CSGO (16) vs. Entry (8) - Map: Nuke - Timestamp: 22-February-2017 07:00:25

Random seed (joined user commitments):

Winner ticket: (Team 1 won)
ID User Server salt Commitment Hash
38697 Blazema CSGODUCK.COM 0c29e173ff613040 39a94584e69e9ec304123078553c0b720429545676667f844c021603f0e4b456 3d887043dcb6d2823dc25c16c656b3e0624940522b1dface921930406de710fb
38698 ATLAS CSGO-Coins.com 2c6482c00ccbfd3a 0820aca107e676f3ef5e7792c62c4acf61473668ec11390870ece73702e61679 cd0a515be2929a66595a7cdd10ade8edd870788f955ffeac76eb0d9c20056814
38699 BenTheBoss CSGO-Coins.com ddc76682a32a97fd 71fe5df054d6eebde9418c0d7cee5ccbaef2b1704e03d3930e45eebe58808539 7185756a45f0c35c08a51d3bece4746720f23a55063caabacbbca0f8c7941a2d
Match #14105expand_more
Match #14104expand_more
Match #14103expand_more
Match #14102expand_more
Match #14101expand_more
Match #14100expand_more
Match #14099expand_more
Match #14098expand_more
Match #14097expand_more