You can verify the fairness of your previous games by running the JS code below:
const { createHash } = require('crypto');
function prepareSeed(str_seed) {
// Seeds are always padded with zeroes from right to fill this limit.
const SEED_BYTES = 64;
let encoder = new TextEncoder();
let bytes = encoder.encode(str_seed);
// add right zeroes padding
var result = new Uint8Array(SEED_BYTES);
result.set(bytes);
result.set(new Uint8Array(SEED_BYTES - bytes.length).fill(0), bytes.len);
return bytes;
}
// input parameters
let client_seed = '123456';
let server_seed = '5438fad0-7d25-49cb-8514-aa8341e198a9';
let holes_amount = 3;
let hashed = createHash('sha256')
.update('$')
.update(prepareSeed(server_seed))
.update('$')
.update(prepareSeed(client_seed))
.update('$')
.digest();
// sum bytes of hash result
let result = 0;
for (byte of hashed) {
result += byte;
}
result = result % holes_amount;
console.assert(result, 2);