Открытие кейсов CS2 provably fair

Каждый кейс, битва, апгрейд, монетка, бросок в Plinko и переход в «Курице» на CS2Bolt определяется роллом, который вы можете пересчитать сами. Мы фиксируем секрет сервера до вашей игры, добавляем сид, который контролируете вы, и раскрываем секрет после, чтобы вы убедились, что результат не меняли.

Войдите, чтобы увидеть свои раунды и сиды

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

  1. Сервер фиксирует секрет

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

  2. Добавляются ваш сид и номер раунда

    Ролл объединяет серверный сид с вашим клиентским сидом, nonce (счётчиком ваших раундов), игрой и деталями раунда с помощью HMAC-SHA256.

  3. Секрет раскрывается и проверяется

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

message = clientSeed + ":" + nonce + ":" + game + ":" + context
digest  = HMAC_SHA256(key = serverSeed, message)
roll    = first 13 hex characters of digest ÷ 16¹³   →   0 ≤ roll < 1

Тринадцать hex-символов — это 52 случайных бита, которые браузер хранит точно, поэтому ролл одинаков на любом устройстве.

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

Кейсы

Ролл выбирает предмет по его шансам. Каждому предмету принадлежит отрезок диапазона от 0 до 1, равный его шансу выпадения; вы выигрываете предмет, в отрезок которого попал ролл.

context = the case’s URL name, e.g. afterparty

Битвы кейсов

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

nonce = round × players + seat · context = battle number

Апгрейдер

Вы выигрываете, если ролл попадает в зелёную зону. Зона начинается со смещения, показанного в раунде, и имеет ширину, равную вашему шансу на победу, переходя от 1 обратно к 0.

win if the roll is in [offset, offset + chance)

Монетка

Both players’ client seeds are combined as creator|joiner. The creator wins when the roll is below their share of the pot, so a bigger stake means a proportionally bigger chance.

creator wins if roll < creator stake ÷ total pot

Plinko

Ролл снова превращается в 52 случайных бита. Каждый ряд штырьков использует следующий бит: 0 — влево, 1 — вправо. Число отскоков вправо — это ячейка, куда попадает шарик.

context = plinko:rows:risk

CS2Bolt Bonanza

Каждое вращение воспроизводится по заранее зафиксированным сидам, включая линии, сбор CT, бесплатные вращения и округление. Полный расчёт — в истории раундов Bonanza.

context = rules:mode:bet:feature:configuration

«Курица на дороге»

Один ролл делается на старте. У каждой полосы есть порог безопасности для вашей сложности; курицу сбивают на первой полосе, где ролл равен порогу или выше.

lose at the first lane where roll ≥ threshold

Проверить раунд

Вставьте значения любого раунда, и он будет проверен в вашем браузере. Войти через Steam , чтобы выбрать один из своих раундов в один клик.

Ввести значения вручную
Игра
Проверьте без этого сайта

Запустите это в Node.js, подставив значения своего раунда:

node -e "const c=require('crypto');const d=c.createHmac('sha256','SERVER_SEED').update('CLIENT_SEED:NONCE:GAME:CONTEXT').digest('hex');console.log(d,parseInt(d.slice(0,13),16)/2**52)"

Вопросы

Может ли CS2Bolt изменить результат после ставки?

Нет. Отпечаток (хеш SHA-256) серверного сида показывается до игры. Если бы раскрытый потом сид был другим, его хеш не совпал бы с увиденным, и верификатор ниже это отметил бы.

Зачем задавать свой клиентский сид?

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

Что такое nonce?

Счётчик, который растёт на один с каждым сыгранным раундом. Он делает каждый ролл разным даже при одинаковых сидах и позволяет проверить, что ни один раунд не пропущен и не повторён.

Почему серверный сид новый в каждом раунде?

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

Нужно ли доверять этой странице, чтобы проверить раунд?

Нет. Проверка — это стандартный HMAC-SHA256, поэтому любой независимый инструмент даст тот же ответ. Верификатор на этой странице работает полностью в вашем браузере и ничего не отправляет на наши серверы.