Hey everyone. MintDice has recently launched it's 2.0 platform. And with this, we are looking to update our Provably Fair system to the public with our BitRocket Bitcoin crash game and hosting a public seeding event. We have generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash.
The hash of the chain's last element is: 239a98ad68258c8abef5cbe062ac58f72d798b088d1ea063e89ea5a774a3841a.
Every game of BitRocket maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.
To calculate a game's result from its hash:
const crypto = require("crypto")
function gameResult(seed, salt) {
const nBits = 52 // number of most significant bits to use
// 1. HMAC_SHA256(key=salt, message=seed)
const hmac = crypto.createHmac("sha256", salt)
hmac.update(seed)
seed = hmac.digest("hex")
// 2. r = 52 most significant bits
seed = seed.slice(0, nBits/4)
const r = parseInt(seed, 16)
// 3. X = r / 2^52
let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)
// 4. X = 99 / (1-X)
X = 99 / (1 - X)
// 5. return max(trunc(X), 100)
const result = Math.floor(X)
return Math.max(1, result / 100)
}
Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of
Bitcoin block 695,600. This block has not been mined yet, proving that MintDice has not deliberately picked a chain that is unfavorable for players.
Please quote the above message and Bitcoin block for any legacy and audit purposes.
Regards, MintDice