allinbox (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:19:32 AM |
|
I was looking at some moneypot apps to check, and noticed a major flaw in the BetterBets.io implementation of the MoneyPot Provably Fair System.
This flaw allowed Moneypot to cheat all players who played on BetterBets since the creation of the site. (approximatly 1 year I believe)
The Moneypot algorythm is this one:
(ClientSeed + ServerSeed) / 2^32 resulting in your individual roll outcomes between 0 and 99.99
2^32 = 4,294,967,296
In case the sum of ClientSeed and ServerSeed is higher than this number, the rest is taken and divided by 2^32, resulting in your roll outcome.
Most sites implement this correctly and let the user chose a number between 0 and 4,294,967,296. But BetterBets is limiting the User to a chose a number between 0 and 2,147,483,648.
This allows Moneypot to chose a ServerSeed that will make the Users/Players lose. Because the User can only change the outcome by max 50 %. Sounds complicated, but it isn't. Heres an example:
Let's say Moneypot picks a Serverseed of 0.
Now the User picks his ClienSeed in the given Range between 0 and 2,147,483,648.
Then the roll result will be between 0 and 49.99.
With other words, if the User plays 2x on high, he will lose. And there is no way the User can change this because BetterBets limits the ClientSeed he can chose.
Of course nobody can prove if BetterBets and Moneypot used this to make people lose and fill their own pockets.
But what we know is, that BetterBets.io has NEVER BEEN PROVABLY FAIR.
Just to mention this: That only counts for BetterBets.io, all other Moneypot Sites are provably fair because they let the User pick his Clientseed up to 4,294,967,296. At least the ones I've checked.
Regards !
Btw. no I did'nt play there and got buthurt because I lost. I've done my homeworks, this is a fact...
|
|
|
|
Erza
Legendary
Offline
Activity: 1078
Merit: 1000
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:31:57 AM |
|
Are you joking? Because I ever saw someone hit 99.99 or even 0 to make a big hit and now you said that their client doesnt let us hit that? You should check their big winner tab and then you can post something like this
|
|
|
|
allinbox (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:36:06 AM |
|
Are you joking? Because I ever saw someone hit 99.99 or even 0 to make a big hit and now you said that their client doesnt let us hit that? You should check their big winner tab and then you can post something like this
U understand me wrong. I said that they only allow u to change the outcome by 50 %. So whatever Serverseed they give you, you can maximal add 50 % to it. So if they give u ServerSeed of 2,147,483,648 then your outcome can be in a range between 50 and 99.99, depenedent on the ClientSeed you pick. But with this given ServerSeed it would not be possible to have an outcome below 50. To better understand that I recommend to just try to calculate your outcome for an example. It's really not hard to do. Server can chose a seed between 0 and 2^32 and the client only between 0 and 2^31. The sum of both numbers devided by 2^32 will be your roll result. You will notice that u can only change the outcome to a 50 % range between the possible 0 and 99.99. And which range this is, get's basically defined by the ServerSeed you get provided.
|
|
|
|
RHavar
Legendary
Offline
Activity: 1463
Merit: 1886
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:38:13 AM |
|
Good post, although a bit sensationalist. But BetterBets is limiting the User to a chose a number between 0 and 2,147,483,648.
Assuming that is true (I didn't check) you are correct, it would make betterbets not provably fair. This is almost certainly an oversight on their part, as for them to cheat would require a collaboration between them and moneypot. If they use the same system for rubies (I didn't check) then cheating is a lot more possible. Actually if what you're saying is true, BB needs to fix this ASAP because it means a) they're not provably fair, b) It would allow MP to cheat their customers. I strongly, strongly doubt BB has used this to cheat. But you would be correct, they are not provably fair if you can only pick a seed of half the range. I wrote this a while ago: https://gist.github.com/RHavar/a6511dea4d4c41aeb1eb which is what MP casinos really should be using (client side) for picking client seeds. I'm not sure why anyone would use anything different.
|
Check out gamblingsitefinder.com for a decent list/rankings of crypto casinos. Note: I have no affiliation or interest in it, and don't even agree with all the rankings ... but it's the only uncorrupted review site I'm aware of.
|
|
|
allinbox (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:44:39 AM |
|
Good post, although a bit sensationalist. But BetterBets is limiting the User to a chose a number between 0 and 2,147,483,648.
Assuming that is true (I didn't check) you are correct, it would make betterbets not provably fair. This is almost certainly an oversight on their part, as for them to cheat would require a collaboration between them and moneypot. If they use the same system for rubies (I didn't check) then cheating is a lot more possible. Actually if what you're saying is true, BB needs to fix this ASAP because it means a) they're not provably fair, b) It would allow MP to cheat their customers. I strongly, strongly doubt BB has used this to cheat. But you would be correct, they are not provably fair if you can only pick a seed of half the range. I wrote this a while ago: https://gist.github.com/RHavar/a6511dea4d4c41aeb1eb which is what MP casinos really should be using (client side) for picking client seeds. I'm not sure why anyone would use anything different. Thanks for your confirmation. I did not say they did, I just said it would be possible. Thats exactly the randomizer I'd also recommend. It's integrated in most browsers I believe.
|
|
|
|
RHavar
Legendary
Offline
Activity: 1463
Merit: 1886
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:51:12 AM Last edit: October 03, 2016, 01:01:53 AM by RHavar |
|
Their manual client-seed stuff seems correct: https://dl.dropboxusercontent.com/spa/rmczv2tqcr196vz/0wk_we9v.pngBut looking at how they actually generate it, I found the obfuscated function: function() { var _0x2a5dx16d = parseInt(Math[_0x58ef[589]]() * 2147483647); $(_0x58ef[187])[_0x58ef[14]](_0x2a5dx16d) }
which we can easily deobfsucate as _0x58ef is just a global variable with some constants, and we get this: function regenerateClientSeed() { var x = parseInt(Math.random() * 2147483647); $("#account_client_seed").val(x); }
Which has the problem you pointed out, that it doesn't use the full range and it's also using Math.random() which is also a bad idea. They should be better using the gist I have.
|
Check out gamblingsitefinder.com for a decent list/rankings of crypto casinos. Note: I have no affiliation or interest in it, and don't even agree with all the rankings ... but it's the only uncorrupted review site I'm aware of.
|
|
|
BetterBetsDev
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 01:00:25 AM |
|
Yeah, the guy who stared this thread contacted us and alerted us to this (and caught me in a bad mood after 14 hours of writing code and stuff, my apologies for that). For some reason we changed this ages ago, I honestly don't remember why (it's been more than a year). I just fixed this, you can now enter seeds for the full 2^32 range. For anybody wondering: we have never fudged a single bet and have never even discussed the subject of doing so with Moneypot (and neither have they). We are both stand-up operations who take security and fairness seriously. So your bets are processed correctly but we (as stated above, for some reason I have long since forgotten) limited the client seed range. Nobody ever noticed or brought this to our attention or it would have been fixed ages ago; I've fixed it within 10 minutes after I was alerted of the issue. Our apologies for the oversight.
|
|
|
|
BetterBetsDev
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 01:01:42 AM |
|
Their manual client-seed stuff seems correct: https://dl.dropboxusercontent.com/spa/rmczv2tqcr196vz/0wk_we9v.pngBut looking at how they actually generate it, I found the obfuscated function: function() { var _0x2a5dx16d = parseInt(Math[_0x58ef[589]]() * 2147483647); $(_0x58ef[187])[_0x58ef[14]](_0x2a5dx16d) } which we can easily deobfsucate as _0x58ef is just a global variable with some constants, and we get this: function regenerateClientSeed() { var x = parseInt(Math.random() * 2147483647); $("#account_client_seed").val(x); } Which has the problem you pointed out, that it doesn't use the full range and it's also using Math.random() which is also a bad idea. They should be better using the gist I have. I'll implement your gist tomorrow; thank for pointing it out; I was not aware of it's existence (thanks for making it available). Hopefully this resolves it once and for all. Edit: I just also fixed the 2147483647 range limitation in the auto-generation.
|
|
|
|
RHavar
Legendary
Offline
Activity: 1463
Merit: 1886
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 01:08:36 AM |
|
I'll implement your gist tomorrow; thank for pointing it out; I was not aware of it's existence (thanks for making it available).
Hopefully this resolves it once and for all.
No problems. Also while stepping through the validation of the manual client seeds, I think there's a couple of minor bugs: function(_0x2a5dx7f) { var _0x2a5dx90 = parseInt($(_0x58ef[187])[_0x58ef[14]]()); if (isNaN(_0x2a5dx90)) { _0x2a5dx90 = 0 } else { if (_0x2a5dx90 > 4294967296) { _0x2a5dx90 = 2147483647 } else { if (_0x2a5dx90 < 0) { _0x2a5dx90 = 0 } } } ;$(_0x58ef[187])[_0x58ef[14]](_0x2a5dx90) });
I believe the line "if (_0x2a5dx90 > 4294967296) {" should be >= not >. And if it's over, it should probably be set to 4294967295 not 2147483647, I guess. (i might be wrong, stepping through obsfucated code is a annoying ![Tongue](https://bitcointalk.org/Smileys/default/tongue.gif) )
|
Check out gamblingsitefinder.com for a decent list/rankings of crypto casinos. Note: I have no affiliation or interest in it, and don't even agree with all the rankings ... but it's the only uncorrupted review site I'm aware of.
|
|
|
BetterBetsDev
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 01:11:13 AM |
|
I'll implement your gist tomorrow; thank for pointing it out; I was not aware of it's existence (thanks for making it available).
Hopefully this resolves it once and for all.
No problems. Also while stepping through the validation of the manual client seeds, I think there's a couple of minor bugs: function(_0x2a5dx7f) { var _0x2a5dx90 = parseInt($(_0x58ef[187])[_0x58ef[14]]()); if (isNaN(_0x2a5dx90)) { _0x2a5dx90 = 0 } else { if (_0x2a5dx90 > 4294967296) { _0x2a5dx90 = 2147483647 } else { if (_0x2a5dx90 < 0) { _0x2a5dx90 = 0 } } } ;$(_0x58ef[187])[_0x58ef[14]](_0x2a5dx90) });
I believe the line "if (_0x2a5dx90 > 4294967296) {" should be >= not >. And if it's over, it should probably be set to 4294967295 not 2147483647, I guess. (i might be wrong, stepping through obsfucated code is a annoying ![Tongue](https://bitcointalk.org/Smileys/default/tongue.gif) ) I just 5 minutes ago fixed the assignment of 2147483647 and >= comparison.
|
|
|
|
RHavar
Legendary
Offline
Activity: 1463
Merit: 1886
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 01:15:44 AM |
|
Well this was a positive outcome ![Shocked](https://bitcointalk.org/Smileys/default/shocked.gif) Kudos to betterbets for fixing the problem in minutes, and to allinbox for being one of the very few people who actually verify stuff!
|
Check out gamblingsitefinder.com for a decent list/rankings of crypto casinos. Note: I have no affiliation or interest in it, and don't even agree with all the rankings ... but it's the only uncorrupted review site I'm aware of.
|
|
|
BetterBetsDev
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 01:19:33 AM |
|
Well this was a positive outcome ![Shocked](https://bitcointalk.org/Smileys/default/shocked.gif) Kudos to betterbets for fixing the problem in minutes, and to allinbox for being one of the very few people who actually verify stuff! Your gist is implemented as well but hasn't been pushed to production yet (will happen probably tomorrow). Sleep is for wussies :-)
|
|
|
|
JackpotRacer
Legendary
Offline
Activity: 1974
Merit: 1014
All Games incl Racer and Lottery game are Closed
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 08:51:10 AM Last edit: October 03, 2016, 09:12:06 AM by JackpotRacer |
|
I was looking at some moneypot apps to check, and noticed a major flaw in the BetterBets.io implementation of the MoneyPot Provably Fair System.
This flaw allowed Moneypot to cheat all players who played on BetterBets since the creation of the site. (approximatly 1 year I believe)
The Moneypot algorythm is this one:
(ClientSeed + ServerSeed) / 2^32 resulting in your individual roll outcomes between 0 and 99.99
2^32 = 4,294,967,296
In case the sum of ClientSeed and ServerSeed is higher than this number, the rest is taken and divided by 2^32, resulting in your roll outcome.
Most sites implement this correctly and let the user chose a number between 0 and 4,294,967,296. But BetterBets is limiting the User to a chose a number between 0 and 2,147,483,648.
This allows Moneypot to chose a ServerSeed that will make the Users/Players lose. Because the User can only change the outcome by max 50 %. Sounds complicated, but it isn't. Heres an example:
Let's say Moneypot picks a Serverseed of 0.
Now the User picks his ClienSeed in the given Range between 0 and 2,147,483,648.
Then the roll result will be between 0 and 49.99.
With other words, if the User plays 2x on high, he will lose. And there is no way the User can change this because BetterBets limits the ClientSeed he can chose.
Of course nobody can prove if BetterBets and Moneypot used this to make people lose and fill their own pockets.
But what we know is, that BetterBets.io has NEVER BEEN PROVABLY FAIR.
Just to mention this: That only counts for BetterBets.io, all other Moneypot Sites are provably fair because they let the User pick his Clientseed up to 4,294,967,296. At least the ones I've checked.
Regards !
Btw. no I did'nt play there and got buthurt because I lost. I've done my homeworks, this is a fact...
thank you very much for your posting and work did you check our app/games? would be interested to know if it is the same with our games I am not an expert and a non coder. please let me ask a question could BB cheat their customers? could BB cheat their customers with MP together? edit could MP cheat without BB's help? edit2 you said this was since BB exists so it was already when RH owned MP? edit3 you wrote "This allows Moneypot to chose a ServerSeed that will make the Users/Players lose." could they also decide that a user/player will win? I am not saying that anyone did cheat but I am trying to learn and understand it in full. sadly we have no coder now to let him check and explain it cheers
|
|
|
|
BetKing.io
Legendary
Offline
Activity: 1400
Merit: 1021
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 09:24:43 AM |
|
Good to see this issue was resolved so fast.
|
|
|
|
maku
Legendary
Offline
Activity: 1288
Merit: 1000
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 10:10:25 AM |
|
I wonder if situation similar to this could be also possible for other services powered by MoneyPot. I mean people are usually lazy to check.
Op said this is possible only for BetterBets.io and "all other Moneypot Sites are provably fair because they let the User pick his Clientseed"
Is this really the case?
|
|
|
|
Trade_BTC
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 11:09:03 AM |
|
Op if you don't play at betterbets then there is a motive behind your post. I'm going to guess extortion probably. This looks like some kind of oversight error. They fix it in minutes....now we can pick client seeds in the 4 billions on accounts. So dev said they spoke to you and it seems outcome wasn't what you wanted -gimme money or I'm posting- and you made this post. Does this about sum it up?
|
|
|
|
JackpotRacer
Legendary
Offline
Activity: 1974
Merit: 1014
All Games incl Racer and Lottery game are Closed
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 11:29:26 AM |
|
Op if you don't play at betterbets then there is a motive behind your post. I'm going to guess extortion probably. This looks like some kind of oversight error. They fix it in minutes....now we can pick client seeds in the 4 billions on accounts. So dev said they spoke to you and it seems outcome wasn't what you wanted -gimme money or I'm posting- and you made this post. Does this about sum it up?
can you prove your claims or are you just brown nosed? BB and MP should be thankful to this guy and his findings easy as that they should even give him a bounty! maybe a movado watch or some btc thx to op for posting his findings and helping MP to stay clean
|
|
|
|
maku
Legendary
Offline
Activity: 1288
Merit: 1000
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:09:08 PM |
|
Op if you don't play at betterbets then there is a motive behind your post. I'm going to guess extortion probably. This looks like some kind of oversight error. They fix it in minutes....now we can pick client seeds in the 4 billions on accounts. So dev said they spoke to you and it seems outcome wasn't what you wanted -gimme money or I'm posting- and you made this post. Does this about sum it up?
They fixed it mainly because he contacted them and asked about this issue. Without him we probably wouldn't be aware that exploit like this can be even possible. I don't know if he demanded money for this, but if I were the owner of BetterBets.io I would honor Op with some kind of small bounty for his bug hunting.
|
|
|
|
quit_gambling_for_good
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 112
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:20:45 PM |
|
Wow really nice explanation of the provably fair system, with this provably system plus the house edge, I believe most players will lose big at BetterBets.io
|
|
|
|
tyz
Legendary
Offline
Activity: 3360
Merit: 1533
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2016, 12:21:43 PM |
|
@allinbox Thanks for letting us know about this bug. It is always good to have people which took a closer look into "provably fair" systems. I played on betterbets.io months ago. I actually could not notice any inconsistencies playing there.
|
|
|
|
|