Не знаю, насколько это достоверно:
https://libratybet.com/provally-fair
там написано: Доказуемо справедливо
Номера рулонов
Чтобы создать номер рулона, Libratybet использует многоэтапный процесс создания номера рулона 0-99,99. И клиентские, и серверные начальные значения, а также одноразовый номер объединяются с 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.
constroll = ({ serverSeed, clientSeed, nonce }) => {
const nonceClientSeed = `${clientSeed}-${nonce}`;
const hex = createHmac('sha512', serverSeed)
.update(nonceClientSeed)
.digest('шестнадцатеричный');
пусть индекс = 0;
let Lucky = parseInt(hex.substring(index * 5, index * 5 + 5), 16);
пока (повезло >= 1e6) {
индекс += 1;
повезло = parseInt(hex.substring(индекс * 5, индекс * 5 + 5), 16);
// мы достигли конца хеша, и все они, должно быть, были ffffff
если (индекс * 5 + 5 > 129) {
повезло = 9999;
перерыв;
}
}
return [счастливый % 1e4] * 1e-2;
}
Not sure how reliable this is:
https://libratybet.com/provably-fair
it says: Provably fair
Roll Numbers
To create a roll number, Libratybet uses a multi-step process to create a roll number 0-99.99. Both client and server seeds and a nonce are combined with HMAC_SHA512 which will generate a hex string. The nonce is the # of bets you made with the current seed pair. First five characters are taken from the hex string to create a roll number that is 0-1,048,575. If the roll number is over 999,999, the process is repeated with the next five characters skipping the previous set. This is done until a number less than 1,000,000 is achieved. In the astronomically unlikely event that all possible 5 character combinations are greater, 99.99 is used as the roll number. The resulting number 0-999,999 is applied a modulus of 10^4, to obtain a roll number 0-9999, and divided by 10^2 to result a 0-99.99 number.
const roll = ({ serverSeed, clientSeed, nonce }) => {
const nonceClientSeed = `${clientSeed}-${nonce}`;
const hex = createHmac('sha512', serverSeed)
.update(nonceClientSeed)
.digest('hex');
let index = 0;
let lucky = parseInt(hex.substring(index * 5, index * 5 + 5), 16);
while (lucky >= 1e6) {
index += 1;
lucky = parseInt(hex.substring(index * 5, index * 5 + 5), 16);
// we have reached the end of the hash and they all must have been ffffff
if (index * 5 + 5 > 129) {
lucky = 9999;
break;
}
}
return [lucky % 1e4] * 1e-2;
}
Автоматический перевод: