Главная · Как работает RNG

Как работает RNG и Provably Fair

В основе Rocket X — криптографический генератор случайных чисел. Результат каждого раунда математически фиксируется ещё до его старта, и любой игрок может это проверить — без доверия к казино, без участия регулятора. Разбираем, как это устроено, с конкретным примером кода.

Что такое RNG и почему вокруг него столько разговоров

RNG (Random Number Generator, генератор случайных чисел) — это алгоритм, который выдаёт непредсказуемые числа. В Rocket X именно RNG определяет, в какой момент ракета крашится и каким окажется финальный множитель.

Технически в компьютерах нет «настоящей» случайности — все алгоритмы детерминированы. То, что мы называем случайным, на самом деле — псевдослучайные числа, выводимые из исходного значения, которое называют сидом (seed). Если знать сид и алгоритм, результат становится полностью предсказуемым. Поэтому ключевой вопрос для онлайн-казино: кто и как генерирует сид, и можно ли это контролировать или проверить.

Исторически вокруг этого крутилось всё недоверие к онлайн-казино. Если оператор полностью контролирует сид и алгоритм — теоретически он может подбирать сиды, невыгодные для игроков. Доказать или опровергнуть это публично было невозможно. Provably Fair был придуман именно как ответ на эту проблему.

До Provably Fair: классическая модель «доверяй аудитору»

Классические онлайн-казино работают по такой схеме:

  1. Оператор получает лицензию у регулятора: Curaçao Gaming Authority, Malta Gaming Authority, UK Gambling Commission, Kahnawake Gaming Commission и подобные.
  2. Регулятор обязывает использовать сертифицированный RNG.
  3. Сертификацию проводят независимые лаборатории: eCOGRA, GLI, iTech Labs, BMM Testlabs.
  4. Лаборатория получает большую выборку результатов, проверяет их статистически — на равномерность распределения, отсутствие закономерностей, соответствие заявленному RTP.
  5. Если всё в порядке — выдаётся сертификат, который казино показывает игрокам.

1win Gaming как разработчик Rocket X тоже проходит эту процедуру у профильных лабораторий. Это работает в среднем, но у такой модели есть фундаментальный изъян: игрок не может проверить конкретный раунд. Только лабораторию, только статистически, только постфактум.

Если в одном конкретном раунде вы потеряли крупную ставку и подозреваете, что что-то не так — единственный путь это оспорить проходит через службу поддержки самого казино, его регулятора и, потенциально, суд. На практике этим почти никто не занимается. Provably Fair убирает эту дыру: вы можете проверить любой раунд прямо сейчас, в браузере, без помощи аудитора и регулятора.

Provably Fair: три ингредиента

Подход Provably Fair появился около 2014 года в крипто-казино (SatoshiDice, Bustabit и подобные), а позже стал индустриальным стандартом для crash-игр. Он использует три ключевых компонента, каждый из которых виден игроку в специальном разделе настроек.

Компонент Кто генерирует Когда виден игроку Для чего
server_seed Сервер казино SHA-256-хеш до серии раундов; сам сид — после Основа случайности. Доказывает, что результат не подменяли
client_seed Игрок (или авто) В любой момент в настройках Гарантирует, что казино не выбрало server_seed под клиента
nonce Сервер автоматически Открыто, увеличивается на 1 каждый раунд Делает каждый раунд серии уникальным, при том же server_seed

Идея проста. Перед началом серии раундов сервер генерирует server_seed (длинная случайная строка), считает с неё SHA-256-хеш и публикует только хеш. Сам сид остаётся секретным до конца серии. Поскольку SHA-256 необратима, по хешу узнать сид невозможно — но он зафиксирован.

Игрок может задать любой client_seed своими руками (или принять автоматически сгенерированный). После окончания серии раундов сервер раскрывает server_seed. После этого игрок может:

  1. Посчитать SHA-256 раскрытого server_seed и сравнить с заранее опубликованным хешем — это доказывает, что сид не меняли в процессе серии.
  2. Самостоятельно пересчитать множитель каждого раунда из server_seed, client_seed и nonce, и сравнить с реально показанным.

Если оба условия выполнены — раунд честен.

Как из хеша получается множитель

Конкретная формула преобразования хеша в множитель краша различается между crash-играми. 1win Gaming, как и другие провайдеры, не публикует точный алгоритм Rocket X — это типичная практика, чтобы усложнить эксплойтинг возможных ошибок реализации. Но общий шаблон для жанра crash-игр публично известен и устроен почти везде одинаково.

Базовая логика:

  1. Берётся HMAC-SHA256(server_seed, client_seed + ":" + nonce) — это даёт 64-символьную hex-строку.
  2. От её первой части (обычно 8 или 13 hex-символов) берётся целое число.
  3. Это число делится на максимальное возможное значение — получается дробь от 0 до 1.
  4. Дробь преобразуется в множитель краша по формуле вида (1 / (1 − x)) × (1 − house_edge), что даёт распределение Парето: большинство раундов получают низкие множители, редкие — очень высокие.
  5. Если результат меньше 1.00 — раунд считается мгновенным крашем (множитель 1.00×). Доля таких раундов соответствует домовому преимуществу казино (около 3 %).
Главное про распределение

Распределение множителей — не равномерное, а сильно скошенное вправо (распределение Парето). Это значит: большинство раундов краша случается до 2.00×, множители 10× — реже одного из десяти раундов, а 100×+ — в тысячных долях процента раундов. Это не «несправедливо» — это математическое следствие формулы, которое и обеспечивает RTP 97 %.

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

Допустим, вы сыграли серию раундов в Rocket X. После окончания серии (или смены клиентского сида) казино раскрывает server_seed. У вас на руках:

  • published_hash — SHA-256-хеш, который вы видели ДО серии
  • server_seed — раскрытый сервером после серии
  • client_seed — ваш клиентский сид
  • nonce — номер конкретного раунда в серии
  • actual_multiplier — фактический множитель этого раунда (из истории)

Минимальный Python-скрипт, который проверяет оба условия — что хеш не подменён и что множитель действительно вычислен из раскрытого сида. Сохраните в файл verify.py, замените значения на свои и запустите командой python3 verify.py:

# verify.py — проверка одного раунда Provably Fair в Rocket X
import hashlib, hmac, math

# 1. То, что мы получили от казино:
published_hash    = "a3f5...e91d"   # SHA-256 от server_seed, опубликован до серии
server_seed       = "7b2c...43a8"   # раскрыт казино после серии
client_seed       = "my_random_seed"
nonce             = 42              # номер раунда в серии
actual_multiplier = 2.47            # из истории раундов

# 2. Проверка №1: казино не подменило server_seed
recalculated = hashlib.sha256(server_seed.encode()).hexdigest()
assert recalculated == published_hash, "❌ Хеш не сходится — казино меняло сид!"
print("✓ Хеш совпадает: server_seed не подменяли")

# 3. Проверка №2: пересчитываем множитель
message = f"{client_seed}:{nonce}".encode()
key     = server_seed.encode()
h       = hmac.new(key, message, hashlib.sha256).hexdigest()

# Берём первые 13 hex-символов (52 бита), переводим в число
x = int(h[:13], 16)
e = 2 ** 52

# Формула множителя (типичная для crash-игр)
if x == 0:
    multiplier = 1.00
else:
    multiplier = math.floor((100 * e - x) / (e - x)) / 100

print(f"Пересчитанный множитель: {multiplier}×")
print(f"Фактический множитель:   {actual_multiplier}×")

Если оба assert проходят и пересчитанный множитель совпадает с фактическим — раунд честен. Если что-то расходится, это серьёзное основание не играть в этом казино и опубликовать факт расхождения.

Важная оговорка про формулу

Точная формула преобразования хеша в множитель в Rocket X публично не документирована. Скрипт выше использует стандартный шаблон crash-игр и работает для большинства реализаций жанра. Если хеш сходится, а множитель — нет, это не обязательно значит обман: возможно, у 1win Gaming своя константа среза или своя формула преобразования.

Чего Provably Fair не гарантирует

Provably Fair — мощная защита от одного конкретного типа мошенничества: подкрутки результата конкретного раунда постфактум. Но это не панацея. Вот чего эта система не делает.

Не уменьшает домовое преимущество

RTP остаётся 97 %, в среднем игрок теряет 3 % от каждой ставки. Provably Fair гарантирует честность процесса, а не выгодность результата. Если вы сыграете тысячу честно сгенерированных раундов с отрицательным математическим ожиданием — вы потеряете деньги. Так же, как в честной лотерее с RTP 50 %.

Не защищает от выбора «плохого» серверного сида

Технически казино перед серией может сгенерировать тысячу кандидатов в server_seed, посмотреть, какие распределения множителей они дают, и выбрать наименее выгодный для игрока. Хеш будет от выбранного сида — формально всё «честно», но казино использовало предзнание. Эта атака называется selection attack.

Защита от неё — задавать собственный client_seed вручную. Если клиентский сид задан игроком (а не сервером), казино заранее не знает, какой получится итоговый множитель, и не может его «подобрать».

Не отменяет лицензию регулятора

Provably Fair решает только задачу математической проверки раунда. Все остальные аспекты (выплаты, защита данных, борьба с зависимостью, KYC, AML) лежат в плоскости регуляторов и лицензий. Можно иметь Provably Fair и при этом отказывать в выплате выигрыша по надуманным причинам — это разные вещи.

Не делает игру «умнее»

То, что вы можете проверить результат раунда после его окончания, никак не помогает предсказать следующий раунд. Для предсказания нужен server_seed, который раскрывается только после серии. Любые «сигналы», «прогнозы» и «алгоритмы», претендующие на предсказание Provably Fair-раундов — это обман. Подробнее в материале «Правда о сигналах».

Частые вопросы про Provably Fair

Лицензия регулятора (Curaçao, MGA, UKGC) подтверждает финансовую прозрачность оператора и наличие договоров с проверенными провайдерами игр. Но регулятор проверяет соответствие правилам в целом, а не математику каждого отдельного раунда. Provably Fair — это техническое дополнение, которое позволяет любому игроку проверить конкретный результат, без доверия к казино или к регулятору. Это особенно ценно для аудитории, скептически относящейся к игорной индустрии.
Нет, и в этом весь смысл механизма. Серверный сид публикуется в виде SHA-256-хеша ещё ДО начала серии раундов. После раскрытия настоящего сида игрок может посчитать SHA-256 от него своими силами и сравнить с тем, который был опубликован заранее. Если значения совпадают — значит, сид не меняли. Если казино попытается подменить сид, хеш не совпадёт, и обман будет очевиден любому, кто умеет считать SHA-256.
Нет. Успешная проверка означает только одно: казино не подкрутило результат конкретно этого раунда задним числом. Это не делает игру более выигрышной для вас и не отменяет домовое преимущество в 3 %. На длинной дистанции вы всё равно теряете в среднем 3 % от каждой ставки — Provably Fair не меняет математику игры, только гарантирует честность процесса.
Нет. Server seed для активной серии раундов остаётся секретным до её окончания. Игрок видит только SHA-256-хеш от сида — а по хешу восстановить сам сид математически невозможно (это и есть смысл хеш-функции). Без сида формула множителя ничего не даёт. Любой сервис, который заявляет «расшифровку Provably Fair для предсказания» — это обман.
Классическая сертификация (eCOGRA, GLI, iTech Labs) — это статистическая проверка большой выборки результатов в лабораторных условиях. Аудитор подтверждает, что генератор соответствует требованиям регулятора в среднем. Но игрок проверить конкретный раунд не может — он доверяет аудитору и регулятору. Provably Fair убирает посредников: каждый раунд можно проверить математически прямо в браузере или с помощью простого скрипта. Обе системы дополняют, а не заменяют друг друга.