Provably fair — это набор криптографических методов, который позволяет игроку убедиться, что результат раунда не был подделан оператором после того, как ставка уже принята. Смысл в том, что стороны заранее фиксируют «входные данные» для случайности и после раунда раскрывают их так, чтобы любой мог воспроизвести расчёт.
Самая распространённая схема включает три элемента:
- Server seed — секрет, который генерирует платформа и заранее «коммитит» (обычно публикует его хэш). Это важно: хэш показывает, что секрет существует и не изменится задним числом.
- Client seed — значение со стороны игрока. В хороших реализациях его можно задать вручную или он генерируется в клиенте и виден игроку.
- Nonce — счётчик ставок/раундов, чтобы каждый новый спин/бросок давал новый результат, даже если seed не меняются.
Дальше применяется алгоритм (часто HMAC‑SHA256 или подобные функции), который превращает эти значения в последовательность байтов, а затем — в число, соответствующее исходу игры: выпадение числа в dice, позиция на рулетке, карта в blackjack или результат слота. После завершения серии раундов платформа раскрывает server seed, и игрок может:
- проверить, что хэш раскрытого server seed совпадает с тем, что был опубликован заранее;
- взять свой client seed и nonce;
- повторить вычисления и убедиться, что результат совпадает.
Если всё сделано корректно, оператор не может «подкрутить» результат после ставки. Но есть нюанс: провайдер всё ещё может попытаться влиять на честность до коммита (например, выбирать server seed из множества вариантов). Поэтому качественные проекты публикуют детали алгоритма, дают инструменты проверки и меняют seeds по предсказуемым правилам.
Как самостоятельно оценить, что provably fair не «для галочки»:
- Есть публичное описание формулы и примеры расчёта, а не только кнопка “Verify”.
- Можно менять client seed и видеть nonce.
- Проверка воспроизводима: результат можно пересчитать в стороннем калькуляторе или по коду на GitHub.
- Не скрывают крайние параметры (например, как байты переводятся в диапазон, и что происходит при “out of range”).
Отдельная история — игры, где исход формируется не сервером, а оракулом случайности (например, VRF‑механизмом). Это часто встречается в on-chain проектах: смарт‑контракт запрашивает случайность у провайдера, получает криптографически доказуемое значение и использует его для результата. Такой подход снижает зависимость от сервера, но добавляет зависимость от конкретного оракула и стоимости транзакций.