Проверка честности
Результат каждого открытия заранее зафиксирован и проверяется после игры. Сервер не может изменить его незаметно для вас.
Проверить игруКак это работает
-
1
Хэш server seed — до игры
Сервер создаёт секретный server seed и сразу показывает вам его SHA-256. Изменить seed после этого нельзя: хэш перестанет совпадать.
-
2
Client seed — ваш
Client seed участвует в расчёте наравне с серверным. Его можно сменить в любой момент в профиле.
-
3
Nonce — номер игры
Каждое открытие увеличивает nonce на единицу, поэтому одна пара seed даёт разные результаты.
-
4
Раскрытие и проверка
После смены seed старый server seed раскрывается. По нему можно пересчитать каждое прошлое открытие.
Формула
hmac = HMAC_SHA256(key = server_seed, message = client_seed + ":" + nonce)
roll = int(hmac[0:13], 16) / 2^52 // 0 ≤ roll < 1
point = floor(roll × сумма_весов_версии)
предмет = тот, у кого range_from ≤ point < range_to
Roll — число от 0 до 1: первые 13 символов HMAC (52 бита), делённые на 2^52.
Предмет: точка floor(roll × сумма весов) попадает в диапазон одного предмета опубликованной версии кейса. Диапазоны идут подряд в порядке состава, их ширина равна весу предмета.
Mines: блок c = HMAC_SHA256(server_seed, "client_seed:nonce:c"), по 4 байта — u (uint32). Для i = 24…1: j = floor(u × (i + 1) / 2³²), обмен клеток i и j. Мины — первые m клеток перестановки.
Проверить игру
По seed хэш и roll считаются в вашем браузере, без участия сервера. По номеру игры сервер пересчитывает roll из раскрытого seed и показывает выпавший предмет.
- SHA-256 server seed
- —
- Совпадение с хэшем
- —
- Roll
- —
- Исход
- —
Поле Mines