Мини-приложенияКак проверить раунд Provably Fair

    Как проверить раунд Provably Fair

    Платные мини-игры Gift Club используют HMAC-SHA256 commit-reveal. Пересчитай любой раунд во встроенной проверке или в консоли и узнай пределы схемы.

    Gift ClubКоманда Gift Club10 мин чтения

    Provably fair — это возможность проверить результат постфактум, а не верить на слово. Платные мини-игры Gift Club построены на стандартной схеме commit-reveal с HMAC-SHA256, и все данные, нужные для самостоятельного пересчёта раунда, доступны прямо в приложении. Ниже — как это сделать, и, что не менее важно, какая часть Gift Club этой схемой не покрывается.

    1. Что на самом деле гарантирует provably fair

    Гарантия ровно одна, узкая и ценная: оператор зафиксировал результат до твоей игры и не мог изменить его задним числом.

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

    Чего схема не гарантирует: что игра щедрая, что шансы хорошие или что тебе заплатят. Игра может быть идеально проверяемой и при этом возвращать 40%. Проверяемость и RTP — это разные вопросы, и задавать нужно оба.

    2. Три входных значения

    Любой результат в платной игре Gift Club — чистая функция от трёх значений. Никакого скрытого четвёртого входа, серверных часов или случайности, добавленной после фиксации.

    ЗначениеКто управляетПодробности
    Серверный сидМы32 случайных байта от криптографического генератора. Его SHA-256-хеш показывается тебе до игры; сам сид раскрывается при ротации.
    Клиентский сидТы1–64 символа: буквы, цифры и дефисы. Задай любой. Именно он мешает нам подобрать удобный серверный сид — для этого пришлось бы заранее знать твой.
    NonceАвтоматическиНачинается с 0 и растёт на единицу с каждой ставкой, так что два раунда на одной паре сидов не дадут одинаковых байт. Сбрасывается при ротации любого из сидов.

    Эти три значения идут в HMAC-SHA256 с ключом на серверном сиде и сообщением clientSeed:nonce:round. Счётчик round начинается с 0 и увеличивается на каждые нужные 32 байта — так игра, которой нужно больше (например, раскладка поля из 25 клеток), продолжает черпать из того же обязательства.

    Байты превращаются в числа по четыре, как дробь по основанию 256:

    float = b[0]/256 + b[1]/256² + b[2]/256³ + b[3]/256⁴

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

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

    Сделать это можно двумя способами. Быстрый — прямо в приложении; консольный сниппет ниже для тех, кто не хочет верить на слово даже нашей собственной проверке.

    В приложении

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

    Проверка выполняется в твоём браузере. SHA-256 и HMAC-SHA256 считаются локально через Web Crypto API — нам ничего не отправляется, поэтому результат не зависит от нашей честности в момент нажатия кнопки. Если обязательство не сошлось, розыгрыш не показывается вовсе: сид, который не совпал с опубликованным хешем, не описывает никакого раунда.

    В консоли

    Сначала выполни ротацию сидов — она раскроет серверный сид, который действовал для уже сыгранных раундов. Затем возьми раскрытый серверный сид, свой клиентский сид и nonce нужного раунда и выполни это в любой JavaScript-консоли:

    const crypto = require("crypto");
    
    // Из приложения: Профиль → Provably Fair → История сидов
    const serverSeed = "<раскрытый серверный сид, hex>";
    const clientSeed = "<твой клиентский сид>";
    const nonce      = 0;      // проверяемый раунд
    
    // 1. Убедись, что сид совпадает с хешем, показанным ДО игры.
    const commitment = crypto
      .createHash("sha256")
      .update(Buffer.from(serverSeed, "hex"))
      .digest("hex");
    console.log("commitment:", commitment);   // должен совпасть с опубликованным хешем
    
    // 2. Пересобери байты раунда.
    const hmac = crypto
      .createHmac("sha256", Buffer.from(serverSeed, "hex"))
      .update(`${clientSeed}:${nonce}:0`)
      .digest();
    
    // 3. Преврати первые четыре байта в число в диапазоне [0, 1).
    const float =
      hmac[0] / 256 +
      hmac[1] / 65536 +
      hmac[2] / 16777216 +
      hmac[3] / 4294967296;
    console.log("first float:", float);

    Ключевой — первый шаг. Если вычисленный commitment не совпадает с хешем, который приложение показало до раунда, значит сид подменили, и остальное на этой странице читать незачем. Если совпадает — байты из шага 2 единственные, которые этот раунд мог использовать.

    Полная история сидов — каждый выведенный из обращения серверный сид, его хеш и диапазон nonce — доступна по адресу GET /api/games/{gameType}/seed-history и в приложении в разделе Provably Fair.

    4. Ротация сидов

    Ротация делает две вещи сразу: раскрывает серверный сид, против которого ты играл(а), и фиксирует новый. Nonce сбрасывается в 0.

    • Меняй клиентский сид когда угодно. Новый клиентский сид меняет все последующие результаты, а поскольку хеш серверного сида опубликован заранее, подстроиться под твой выбор мы не можем.
    • Сначала ротация, потом проверка. Активный серверный сид никогда не раскрывается — иначе любой смог бы вычислить будущие результаты, а именно это схема и обязана предотвращать.
    • Ротация не меняет шансы. Она меняет, какие результаты ты получишь, а не насколько они хороши. Совет «крутить сид, пока не выпадет» — это ошибка игрока, а не стратегия.

    5. Чего схема не покрывает

    Именно этот раздел большинство операторов опускает, поэтому скажем прямо.

    Открытие подарочных кейсов, скретч-карты и Колесо призов не являются provably fair. Когда ты открываешь кейс, стираешь карту или крутишь Колесо призов во вкладке «Кейсы», какой приз тебе достанется, определяет другой движок — с динамическими индивидуальными весами, теми самыми модификаторами XP и удачи, о которых мы пишем в разборе механик подарочных игр. Эти веса не входят в обязательство, и восстановить результат кейса, карты или колеса из своих сидов нельзя. Сид у карт и колеса есть, но он только раскладывает сетку или задаёт, где остановится колесо, вокруг уже выбранного приза.

    В мини-играх сиды определяют раскладку, а не удачу. Сид задаёт, где стоят мины, куда отскочит шарик в Plinko, какие числа выпадут в Keno — геометрию раунда. В Minefield это буквально и есть вся игра: раскладка клеток и есть результат. В играх, где призовой уровень выбирает отдельный розыгрыш, гарантия уже.

    Поэтому точная формулировка такая: раунды платных мини-игр Gift Club проверяемы, открытия кейсов, скретч карты и вращения Колеса призов — нет. Если конкурент заявляет «provably fair» про всё гача-приложение без такой оговорки, это заявление либо значит меньше, чем звучит, либо неправда.

    Ещё два ограничения, общие для любой provably fair системы, не только нашей:

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

    6. Частые вопросы

    Может ли Gift Club увидеть мой клиентский сид до выбора серверного?

    Нет, и именно порядок действий это обеспечивает. Серверный сид генерируется, а его хеш публикуется до раунда; твой клиентский сид подмешивается позже. Смена клиентского сида в любой момент обесценивает любые предварительные расчёты.

    Почему серверный сид скрыт, пока я играю?

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

    Какие игры покрыты?

    Каждая платная мини-игра из каталога игр: если игра принимает ставку в звёздах, её раунд можно проверить. В играх только на XP проверять нечего — ставки нет.

    Что делать, если проверка не сходится?

    Пришли нам серверный сид, клиентский сид и nonce. Расхождение — это либо баг с нашей стороны, либо ошибка во входных данных: чаще всего это nonce (он считается с нуля) или серверный сид, захешированный как текст, а не как hex-байты.

    Provably fair — это то же самое, что лицензия или аудит ГСЧ?

    Нет. Provably fair — самостоятельная проверка отдельных раундов. Сертификация ГСЧ в лаборатории вроде iTech Labs или BMM Testlabs — независимая проверка всей системы, а лицензия — разрешение регулятора. Это ответы на разные вопросы, и одно не заменяет другое.

    Раунд на искры

    Проверь раунд сам(а)

    Задай свой клиентский сид, сыграй, сделай ротацию и пересчитай. Всё нужное есть в приложении.

    Открыть Gift Club

    Звёзды в приложении нельзя вывести или обменять на деньги. 18+.

    Читать дальше

    Источники

    Раунд на искры

    Попробуй в Telegram

    Открой Gift Club, забери искры и сыграй раунд на искры, прежде чем что-то ставить.

    Играть в Gift Club

    Звёзды в приложении нельзя вывести или обменять на деньги. 18+.

    Читать дальше

    Когда промо в Gift Club поднимает RTP выше 100%
    Мини-приложения
    18 августа 202610 мин

    Когда промо в Gift Club поднимает RTP выше 100%

    Бонус звёзд поднимает ожидаемый возврат кейса или карты до 102% на 5–15 открытий, а кешбэк понедельника возвращает 10–20% минуса за неделю. Как устроена каждая акция.

    Read article
    Индекс RTP игр Telegram: все 16 игр
    Мини-приложения
    5 августа 20268 мин

    Индекс RTP игр Telegram: все 16 игр

    Опубликованная отдача всех шестнадцати игр Gift Club: одиннадцать считаются от цели 95%, где ручные таблицы и что раскрывает остальной рынок Telegram.

    Read article
    Игры в Telegram с RTP 95% и без KYC
    Мини-приложения
    29 июля 20268 мин

    Игры в Telegram с RTP 95% и без KYC

    «Башня мин» работает с RTP 95%, а Gift Club не просит документов, селфи и банковских данных. Почему возможно и то, и другое — и где проходят границы.

    Read article
    Игры плинко: чем версии отличаются
    Мини-приложения
    18 августа 20268 мин

    Игры плинко: чем версии отличаются

    Размер доски, уровень риска и таблица множителей — три параметра, которыми одно плинко отличается от другого. Что делает каждый и как читать таблицу.

    Read article