Проверяемая честность
Исход апгрейда не выбирается в момент нажатия кнопки — он вычисляется из значений, половину которых задаёте вы, а вторую мы публикуем заранее. Эта страница объясняет, как убедиться в этом самому, не доверяя нам на слово.
Как это устроено
До первого вашего апгрейда мы выбираем серверный сид и сразу публикуем его хеш. Изменить сид после этого нельзя: любая подмена видна по несовпадению хеша. Вторую половину — клиентский сид — задаёте вы, и подобрать под неё удобный нам серверный сид невозможно, потому что наш уже зафиксирован.
Больше того: хеш следующего сида публикуется тоже заранее. К моменту, когда вы меняете свой сид, наш следующий уже определён — и выбрать его под ваш мы не можем.
Термины
- Серверный сид
- Случайная строка, которую выбираем мы. До игры она не раскрывается — иначе исход можно было бы вычислить заранее.
- Хеш серверного сида
- Отпечаток серверного сида, который виден всегда. По нему нельзя восстановить сид, но можно проверить, что сид не подменили: у другого сида будет другой отпечаток.
- Клиентский сид
- Вторая половина пары, её задаёте вы. Именно поэтому мы не можем подобрать серверный сид под нужный нам исход — мы не знаем вашего.
- Номер апгрейда
- Счётчик апгрейдов под текущей парой сидов. Растёт на единицу с каждым, так что два одинаковых результата невозможны.
- Результат
- Число от 0 до 1, полученное из пары сидов и номера. Апгрейд удался, если оно меньше шанса того раунда.
Формула
Бросок — это первые восемь байт подписи HMAC-SHA256, приведённые к числу от 0 до 1:
roll = HMAC-SHA256(серверный сид, клиентский сид + ":" + номер) → первые 8 байт → / 253
Никаких округлений и поправок сверх этого нет. Шанс раунда считается отдельно, из соотношения цен, и показывается до нажатия кнопки.
Проверка
Считает ваш браузер, а не наш сервер: иначе проверка подтверждала бы ровно то, что мы и утверждаем. Подставьте раскрытый серверный сид, свой клиентский и номер апгрейда — остальные поля по желанию.
Как проверить свой апгрейд
- Откройте раздел ниже и задайте свой клиентский сид — любую строку. Можно оставить как есть, он уже случайный.
- Сыграйте сколько угодно раз. Номер у каждого апгрейда свой, он виден в истории апгрейдов в профиле.
- Смените пару сидов. В этот момент прежний серверный сид раскрывается — до этого он не покидает сервер.
- Сверьте раскрытый сид с опубликованным ранее хешем: посчитайте SHA-256 от сида, результат обязан совпасть.
- Пересчитайте любой свой апгрейд в проверке ниже, подставив раскрытый серверный сид, свой клиентский и номер апгрейда.
- Сравните полученное число с шансом того раунда: меньше шанса — выигрыш, больше — проигрыш. Так и было.
Проверка идёт целиком у вас в браузере и не обращается к нашему коду. Это и есть смысл схемы: честность, которую приходится принимать на веру, честностью не является.
Ваши сиды
Данные о честности недоступны — обновите страницу.
Остальные вопросы о механике — в ответах на вопросы.
