Генератор случайных чисел создает доказуемые и абсолютно честные случайные числа, которые используются для определения результата каждой игры, сыгранной на сайте.
Каждый пользователь может проверить исход любой игры полностью детерминированным способом. Предоставляя один параметр - клиентский сид, на входы генератора случайных чисел, Play2x не может манипулировать результатами в свою пользу.
Генератор случайных чисел Play2x позволяет каждой игре запрашивать любое количество случайных чисел из заданного начального числа клиента, начального числа сервера и одноразового номера.
Каждая игра использует этот список случайных чисел, чтобы определить его результат,
преобразовав их в необходимый результат:
- в карты или камни (hilo, stairs,
triple)
- Перемешивание списка возможных результатов (keno, mines, tower )
- в
номера (crash, dice)
- в путь (plinko)
У каждого пользователя есть один активный клиентский сид, серверный сид и одноразовый номер (nonce), увеличивающийся каждый раз после игры.
Случайная строка, которая генерируется пользователем. По умолчанию случайная строка от сервера.
Начальное число сервера генерируется сервером и представляет собой произвольно сгенерированную шестнадцатеричную (0-9, a-f) строку из 64 символов. Play2X хэширует начальное число сервера алгоритмом sha256 (википедия) .
Пользователь может сменить свой текущий серверный сид. При смене сида автоматически
генерируется новый активный сид и сбрасывается одноразовый номер (nonce) на 0.
Затем предыдущий сид, который теперь неактивный, разворачивается и может быть проверен с
помощью sha256.
Одноразовый номер - это число, которое увеличивается на единицу каждый раз, когда игра окончена. Это позволяет генерировать уникальный вход для игры, и это единственным параметр, который изменяется каждый раз после игры.
Клиентский сид, серверный сид и одноразовый номер используются в качестве входных параметров
для генератора случайных чисел.
Байты генерируются с использованием функции HMAC_SHA512 (K, m) (
википедия
). Эта функция создает 64 случайных байта (0-255) из заданного начального серверного сида
(K) и сообщения (m).
Сообщение создается с использованием начального числа
клиента(клиентского сида), одноразового номера (nonce) и инкрементного числа.
Это число, начинающееся с 0, увеличивается на единицу каждый раз, когда используются
64 байта, возвращаемые функцией HMAC_SHA512 (K, m). Затем сообщение
создается путем объединения начального числа клиента, двоеточия, одноразового номера,
другого двоеточия и добавочного числа.
HMAC_SHA512(server_seed, client_seed:nonce:round):