Primedice is cheatingToday I was just using PD to bet and doing the double-or-nothing experiments.
It was going fine at first. But suddenly, I had 11 consecutive-losing bets.
They were pretty odd, weren't they?
So I did some verification using the script provided by Primedice.
See the screenshots below. I did verify all 11 bets. All 10 bets are correct, but the No.2 bet from top is wrong.
On the screenshot, the roll is
92.29. However, the result I got from script is
0.02.
So I should win that bet, there would not be the last one bet(top one) which cleared me out.
BET #805607190 INFOSERVER SEED (REVEALED)
41fa224237f452360db8d35a276f4067fce6cad8d3dbf3c73bde2e804c8cb8c7
CLIENT SEED (NONCED)
ca45edd88ef251dd43edf42dc97c7ffb-3391Screenshot of 11 consecutive-losing betshttp://prntscr.com/4ed9moScreenshot of BET #805607190 INFOhttp://prntscr.com/4eda18You can look up these bets by the bet id shown in the screenshot and verify them by yourself.
This did not just happen once but twice today and almost clear me out.
Since Primedice has been online for so long, I could not imagine how many times it has cheated.
I probably will do the same experiments on other bitcoin gambling web site. But Pirmedice is not trustworthy and
return my bitcoin.
I also found the possible unfair when you PVP with "strangers" on Primedice.
See the post:
https://bitcointalksearch.org/topic/m.8315850The script I am using:
//the seed pair itself
var clientSeed = "ca45edd88ef251dd43edf42dc97c7ffb"; //dont forget to exclude the dash and the nonce!
var serverSeed = "41fa224237f452360db8d35a276f4067fce6cad8d3dbf3c73bde2e804c8cb8c7";
//bet made with seed pair (excluding current bet)
var nonce = 3391;
//crypto lib for hmac function
var crypto = require('crypto');
var roll = function(key, text) {
//create HMAC using server seed as key and client seed as message
var hash = crypto.createHmac('sha512', key).update(text).digest('hex');
var index = 0;
var lucky = parseInt(hash.substring(index * 5, index + 5), 16);
//keep grabbing characters from the hash while greater than
while (lucky >= Math.pow(10, 6)) {
index++;
lucky = parseInt(hash.substring(index * 5, index + 5), 16);
//if we reach the end of the hash, just default to highest number
if (index + 5 == 128 + 1) {
lucky = 99.99;
break;
}
}
lucky %= Math.pow(10, 4);
lucky /= Math.pow(10, 2);
return lucky;
}
console.log(roll(serverSeed, clientSeed+'-'+nonce));