Не съм сигурен колко надеждно е това:
https://libratybet.com/provably-fair
казва: Доказуемо справедливо
Брой номера
За да създаде номер на хвърляне, Libratybet използва многоетапен процес за създаване на номер на хвърляне 0-99.99. Както клиентските, така и сървърните начални стойности и nonce се комбинират с HMAC_SHA512, което ще генерира шестнадесетичен низ. Nonce е броят залози, които сте направили с текущата поставена двойка. Първите пет знака се вземат от шестнадесетичния низ, за да се създаде номер на хвърляне, който е 0-1,048,575. Ако номерът на ролката е над 999 999, процесът се повтаря със следващите пет знака, пропускащи предишния набор. Това се прави, докато се достигне число, по-малко от 1 000 000. В астрономически малко вероятния случай, че всички възможни комбинации от 5 знака са по-големи, 99,99 се използва като номер на хвърляне. Полученото число 0-999,999 се прилага като модул от 10^4, за да се получи число 0-9999 и се разделя на 10^2, за да се получи число 0-99,99.
const roll = ({ serverSeed, clientSeed, nonce }) => {
const nonceClientSeed = `${clientSeed}-${nonce}`;
const hex = createHmac('sha512', serverSeed)
.update(nonceClientSeed)
.digest('шестнадесетичен');
нека индекс = 0;
нека късмет = parseInt(hex.substring(индекс * 5, индекс * 5 + 5), 16);
докато (късмет >= 1e6) {
индекс += 1;
късмет = parseInt(hex.substring(индекс * 5, индекс * 5 + 5), 16);
// стигнахме до края на хеша и всички трябва да са били ffffff
ако (индекс * 5 + 5 > 129) {
късмет = 9999;
прекъсване;
}
}
връщане [щастлив % 1e4] * 1e-2;
}