Честная игра (Provably Fair)

3-102-969694 SOCIEDAD DE RESPONSABILIDAD LIMITADA. PROVINCIA 01 SAN JOSE, CANTON 01 SAN JOSE, DISTRITO CARMEN, BARRIO ESCALANTE, AVENIDA SIETE, CALLE VEINTINUEVE, EDIFICIO DOS MIL NOVECIENTOS DIEZ, CENTRO CORPORATIVO AG

КейсыАпгрейд
Инвентарь

Честная игра

SpyDota использует алгоритм Provably Fair, чтобы любой игрок мог проверить честность игры. Результат кейса или апгрейда определяется заранее зафиксированным серверным сидом, вашим client seed и номером игры, поэтому подтасовать его после начала игры нельзя.

Как проверить свою игру

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

  1. История
    СкинКейс
    Night Terrors HatShadow Shaman
    Belt of the Forlorn MazeShadow Shaman

    Откройте историю

    Нажмите на свой аватар в шапке, откройте вкладку «История» и выберите «Кейсы» или «Апгрейды».

  2. Дата
    22 октября 2026 г. в 11:32
    22 октября 2026 г. в 11:32
    22 октября 2026 г. в 11:32

    Нажмите «Проверить»

    Кнопка стоит в конце строки игры (на телефоне прокрутите таблицу вправо). В открывшейся карточке нажмите «Проверить» ещё раз.

  3. Игра № 2 в паре сидов
    Выпавшее число37 847 706 из 100 000 000

    Чтобы проверить игру, серверный сид нужно раскрыть. Мы создадим новую пару сидов: текущий сид раскроется и сразу подставится в проверку, а номера игр начнутся заново.

    Раскройте сид

    Если сид ещё секретный, карточка предложит «Сменить сиды и проверить». Старый сид раскроется — после этого можно проверить все игры, сыгранные с ним. Новые игры начнут счёт с 1, сыгранные не изменятся. Если сид уже раскрыт, шага не будет.

  4. Сходится

    Браузер пересчитал игру по раскрытому сиду, результат совпал с записью сервера.

    Выпавшее число37 847 706
    • Belt of the Forlorn MazeBelt of the Forlorn Maze29 376 71035 693 291
    • Night Terrors HatNight Terrors Hatвыпал35 693 29241 180 434
    • Censer of GlissCenser of Gliss41 180 43547 096 768
    Подробности расчёта
    Сообщениеcase:dota2:e784b35edb9c33afec77526dac3faa49:2
    HMAC-SHA25660e3df4be0729100…0cc8
    Число из хеша1 625 546 571
    sha256 серверного сидаa6d071c29474dfc7…b787

    Сверьте результат

    Откроется страница проверки. «Сходится» значит, что ваш браузер пересчитал игру и получил то же, что записал сервер. Предмет с меткой «выпал» сравните со строкой в истории, у апгрейда — «Победа» или «Поражение».

Кнопки «Проверить» нет у игр, сыгранных до запуска честной игры, у подарков и выдач. Если предмет заменили, проверка относится к исходному выпадению. Видите «Не сходится» — сохраните серверный сид и напишите в поддержку.

Результат зафиксирован заранее

До игры вы видите хеш серверного сида. Поэтому сервер уже не может незаметно подменить исходные данные.

В расчёте есть ваши данные

Ваш сид и номер игры участвуют в расчёте, поэтому результат не формирует один сервер.

Данные игры

Подставьте данные игры. Расчёт идёт в вашем браузере, на сервер ничего не отправляется.

Массив строк с полями itemId, start, end, name и phase (фаза CS2 или null). Скопируйте его из карточки игры.

Результат проверки

Подставьте данные игры и нажмите «Проверить» — здесь появится выпавшее число и предмет.

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

Серверный сид + Ваш сид + Номер игры = Честный результат

Как устроен расчёт

  1. Обязательство сервера

    Сервер выбирает случайный серверный сид и показывает только его хеш SHA-256. Подменить сид после этого нельзя: хеш перестанет совпадать.

  2. Хеш игры

    Для каждой игры считается HMAC-SHA256. Ключ — серверный сид в виде 64-символьной hex-строки как есть, без перевода в байты. Сообщение собирается из вида игры, игры, вашего client seed и номера игры.

  3. Тикет

    Первые 8 hex-символов хеша дают число от 0 до 4 294 967 295. Из него получается тикет от 1 до 100 000 000: floor(число × 100 000 000 / 2^32) + 1.

  4. Кейс

    У каждого предмета в таблице шансов на момент игры есть свой диапазон тикетов. Выпадает предмет, в чей диапазон попал тикет.

  5. Апгрейд

    Порог равен floor(шанс × 100 000 000). Апгрейд выигрывает, если тикет не больше порога.

  6. Раскрытие

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

Формула

Сообщение
kind:game:clientSeed:nonce
Ключ HMAC
HMAC-SHA256(serverSeed, message)

Ключ — это hex-строка серверного сида как есть (64 символа), а не декодированные из неё байты. Именно здесь чаще всего ошибаются при самостоятельной проверке.