Provably fair: как самому пересчитать раунд по сидам

Provably fair: как самому пересчитать раунд по сидам

Надпись «provably fair» на сайте казино не стоит ничего, пока раунд не пересчитан руками. Схема ровно для этого и придумана: исход — детерминированная функция от величин, зафиксированных до вашей ставки, и восстановить его можно за пару минут в браузере. Ниже — что именно фиксируется, как выполнить проверку по шагам и какие вопросы схема не закрывает.

Что схема заменяет

В обычном онлайн-слоте генератор случайных чисел работает на стороне сервера. Игрок видит только исход, а гарантией служит отчёт лаборатории, которая тестировала генератор однажды и на своём стенде. Проверка разовая, раундов у вас тысячи, и прямой связи между первым и вторым нет.

Provably fair переставляет действия местами: сервер публично фиксирует свою часть случайности до нажатия кнопки и раскрывает её после. Подмена исхода задним числом ломает соответствие между зафиксированным и раскрытым, и разрыв виден любому, у кого есть калькулятор SHA-256.

Три величины, из которых собирается раунд

  • Server seed — случайная строка на стороне сервера. До игры показывают не её саму, а хеш SHA-256 от неё. Хеш односторонний: восстановить по нему строку нельзя, а сверить с ним раскрытую позже строку — можно.
  • Client seed — строка, которую задаёт игрок. Она лишает сервер возможности заранее подобрать сид, неудобно ложащийся именно на вашу ставку.
  • Nonce — счётчик ставок внутри текущей пары сидов. Увеличивается на единицу каждый раунд, поэтому одна и та же пара сидов не выдаёт два одинаковых исхода подряд.

Как из сидов получается результат

Отраслевой стандарт — HMAC-SHA256: ключом берут server seed, сообщением — склейку client seed, nonce и порядкового номера числа внутри раунда. Последний нужен там, где одного числа мало: позиции нескольких мин, карты в раздаче, путь шарика по рядам колышков. На выходе 32 байта, полностью детерминированных — те же входные данные всегда дают тот же результат.

Дальше байты переводят в дробь от нуля до единицы: первые из них читают как разряды числа с основанием 256. Полученную дробь игра раскладывает по своим правилам — сторона монеты, сектор рулетки, корзина в Plinko. Точную формулу для каждой игры описывает страница provably fair, и без неё проверять нечего.

Проверка раунда по шагам

  1. До игры сохраните хеш активного server seed — он показан в настройках честности.
  2. Задайте свой client seed. Подойдёт любая строка, важно лишь то, что выбрали её вы.
  3. Сыграйте и запишите nonce того раунда, который собираетесь проверять.
  4. Смените пару сидов. Активный server seed не раскрывают намеренно: зная его, можно было бы посчитать ближайшие раунды заранее. Раскрытие происходит после того, как сид выведен из оборота.
  5. Прогоните раскрытую строку через SHA-256 и сравните с сохранённым хешем. Совпало — сид существовал до ваших ставок, а не появился после них.
  6. Посчитайте HMAC-SHA256 от той же тройки и разложите результат по формуле игры. Число обязано совпасть с записью в истории ставок.

Отдельный софт не нужен: хватает онлайн-калькулятора хешей или пяти строк на Python.

Что схема не доказывает

Проверяемость говорит ровно об одном: результат не меняли после ставки. О том, сколько игра забирает в среднем, она не сообщает ничего — преимущество казино зашито в таблицу выплат, где коэффициент за выигрыш чуть ниже честного. Раунд может быть безупречно проверяемым и при этом невыгодным на дистанции: это две независимые характеристики, которые постоянно подменяют одну другой.

Второе ограничение — покрытие. У Tonza Originals (Coin Flip, Mines, Roulette, Plinko, Blackjack) раунд считается из сидов и пересчитывается вручную. Слоты и настольные игры внешних студий работают на генераторах провайдера: там своя модель проверки, и сиды из вашего профиля к ней отношения не имеют.

И последнее, чисто практическое. Смысл схемы теряется, если ею не пользоваться ни разу. Client seed разумно менять самому, а не ждать системной ротации, особенно в долгой сессии на одной паре. Проверять стоит и выигрышные раунды тоже: спокойная выборочная сверка говорит о механике больше, чем перепроверка после серии минусов, когда ищут уже не ошибку, а виноватого.

Полезно почитать