Hello everyone
(if you want to skip technical explaination scroll all the way to end of the post)
In this topic I'd like to take a more technical view on the famous website Freebitco.in.
It's been an interesting thing to me what are the
true odds of winning 10000 (a.k.a. $200) on the Free Roll.
Let's review the rules of Freebitco.in system first.
We have a couple of values the system uses:
Server seed - a preset value chosen/randomized by Freebitco.in
Client seed - our personal value for the randomizer, we can change it however we want
Nonce - a predictable number that goes up by 1 with our each Free/Multiply roll.
Freebitco.in also shares a SHA256 hash of Server seed before the next roll, in order to be provably fair. After the roll the true Server seed is revealed, and you can in fact hash the Server seed with SHA256 and it will match with provided hash. This way you can verify that Freebitco.in does a legit job.
Then it creates 2 strings, which as stated are:
STRING1 = "[NONCE]:[SERVER SEED]:[NONCE]"
STRING2 = "[NONCE]:[CLIENT SEED]:[NONCE]"
Which are then being hashed with HMAC-SHA512, making STRING1 as input and STRING2 as key.
SHA512 is a 128 character hash made of characters from 0 to 9 and from A to F which is Hexadecimal.
Freebitco.in then takes the first 8 hexadecimal characters and converts it into a number.
You can do it yourself with any online Hex -> Dec tool.
Then the number is being divided by 429496.7295 and rounded to nearest whole number.
Sounds fairly easy, but now let's actually verify this is in fact working.
My 2 unique strings are:
STRING1 = "10491:1ff83bb6e9d5a739b145ad8d85fcf56c21fe3ee5700dc448c42e4cc57906d3c9:10491"
STRING2 = "10491:Oh4VfRVE1tsg0vLP:10491"
Feel free to use this tool
https://www.freeformatter.com/hmac-generator.html to calculate the hash. Remember to select SHA512. Put the STRING1 into first field, and STRING2 into Secret key field.
You should receive this hash:
05238df833caa5f82ebe2db77225c52538b4a60d471cd864f9c3e6bb18b801c747a153d15e4abf9 756ef039a4c99251bb06f4f91d69781a2240baa979cd1666e
Now let's take the 8 last characters:
05238df8 after conversion to decimal is 86216184.
86216184 divided by 429496.7295 gives 200.737696187742 as a result, which after rounding to the nearest whole number gives 201, which was my rolled number.
So enough explaining, let's get to the main point of the topic
I'll skip the lowest prize, because we already have huge odds of getting that, so not really need to calculate it ^^
Let's examine the 2nd prize, which is $0.02. Following the rules above you need to get at least
9885.5 as a rolled number to get the prize (remember that it rounds the number to nearest whole).
9885.5 multiplied by 429496.7295 gives 4245789919.47225. This is our hexadecimal number we need to get from the HMAC-SHA512 hash. Remember that hexadecimal numbers in this case are not meant to be floating points, so we need to round our number to the above. 4245789920 is the final number we need to at least get from the hash to get $0.02.
So we will calculate the odds of getting that prize!
Since the maximum 4-byte hexadecimal value is FFFFFFFF (4294967295) it will be our maximum range for calculating the odds.
We divide 4245789920 by 4294967295 and multiply by 100 to get percent value.
Final value:
98.855%...
It is too big don't you think...?
Actually it's because we took the range for
NOT getting the 2nd prize (and higher). We need to subtract 4294967295 - 4245789920 and then divide it by the max range.
True final odds for 2nd prize are:
1.1449999%!
Now that's a more reasonable number
That means out of 10000 rolls,
114 of them will be $0.02.
Let's get other's calculated as well!
For the 3rd prize, you need to score at least 9986 from the Free roll to get $0.20.
Again since the final value needs to be rounded to the nearest whole, we need to get 9985.5 after division of the hexadecimal value. So we are going to reverse the algorithm once again:
9985.5 * 429496.7295 = 4288739592.42225, rounded up gives 4288739593. Subtract it from max range and it gives 6227702. Divide it with max range and multiply by 100 to get the final result.
True final odds for 3rd prize are:
0.1449999%!
Noticed how the difference between numbers on Free roll is only 100 (9886 vs 9986) and the percent change is so drastic? That's crazy!
For the 4th prize, you need to score at least 9994 from the Free roll to get $2.00.
We do the exactly same thing as above, we take 9993.5, multiply by 429496.7295, we round it up, subtract the max range - result and divide with max range.
True final odds for 4th prize are:
0.0649999%I'm going to calculate next ones without explaining them as I've already explained the process enough times.
Here are the final results:
Chances for getting $0.002: 98.855%
Out of 10000 rolls ~9885 will be $0.002Chances for getting $0.02: 1.1449999%
Out of 10000 rolls ~114 will be $0.02 and higherChances for getting $0.20: 0.1449999%
Out of 10000 rolls ~14 will be $0.20 and higherChances for getting $2.00: 0.0649999%
Out of 10000 rolls ~6 will be $2.00 and higherChances for getting $20.00: 0.0249999%
Out of 10000 rolls ~2 will be $20.00 and higherChances for getting $200.00: 0.00499999%
Out of 10000 rolls none of them will be $200.00.Actually you need
at least 25000 rolls to get $200 from Freebitco.in (STATISTICALLY of course
)
This means 25000 hours that equals to:
~1042 days of clicking 24 hours a day
~1389 days of clicking 18 hours a day
~2084 days of clicking 12 hours a day
That's a lot of time actually
On the bright side, statistically from 25000 rolls you could earn $392.125
(With USA's minimum wage of 7.25 USD that would be $181250)That's it!
Share your thoughts and if I calculated something wrong feel free to correct me