Как работает проверка честности
3 мин чтения
Любой сайт со случайным исходом просит ему доверять. Provably fair (доказуемая честность) — способ заменить большую часть этого доверия проверкой, которую вы можете сделать сами. Здесь мы объясняем идею простыми словами — знание криптографии не понадобится.
1.Какую проблему это решает
Если результат просто генерируется на сервере и показывается вам, у вас нет способа узнать, был ли он действительно случайным или выбран уже после того, как сервер увидел вашу ставку. Provably fair фиксирует результат до игры — так, что сайт не может незаметно изменить его потом.
2.Три составляющие
- Сид сервера — длинная случайная строка, которую создаёт DOTAGRADE. Пока вы с ним играете, он хранится в секрете.
- Сид клиента — строка, которая принадлежит вам. Вы её видите и можете в любой момент заменить на любую другую.
- Номер игры — счётчик, который растёт на единицу с каждым апгрейдом на текущей паре сидов.
Результат игры вычисляется из этих трёх значений: HMAC-SHA256, где ключ — сид сервера, а сообщение — «сид клиента:номер игры». Первые 8 шестнадцатеричных символов результата превращаются в число от 0 до 100 — это выпавшее число. Апгрейд выигрывает, если оно меньше вашего шанса.
3.Почему сайт не может изменить результат
Перед игрой вам показывают хеш сида сервера — его отпечаток SHA-256. Хеш работает в одну сторону: из сида он вычисляется легко, но получить сид обратно из хеша или подобрать другой сид с тем же хешем на практике невозможно.
Поэтому хеш — это обязательство. Как только вы его увидели, сид сервера зафиксирован. Если бы сайт потом подменил сид на более удобный, новый сид не совпал бы с показанным хешем — и это заметил бы любой.
Сид клиента закрывает вторую сторону. Раз его выбираете вы, сервер не может заранее подготовить сид, который даст вам проигрышные числа: он не знает, с чем этот сид будет объединён. А номер игры делает каждое выпавшее число новым, даже на одной и той же паре сидов.
4.Почему сид сервера какое-то время скрыт
Если бы вы знали сид сервера во время игры, вы могли бы заранее вычислить все следующие числа и играть только выигрышные игры. Поэтому сид раскрывается, когда вы меняете пару сидов. В этот момент старый сид сервера показывается полностью, создаётся новый, и его хеш вы видите до следующей игры.
5.Как проверить игру самому
- Откройте Профиль → «История игр» и найдите нужный апгрейд.
- Нажмите на значок щита на его карточке. Откроется страница проверки честности, где уже заполнены сид клиента, номер игры, шанс и хеш сида сервера.
- Если игра сыграна на текущей паре, её сид сервера ещё скрыт. В блоке «Ваши сиды» на той же странице смените сиды — старый сид сервера раскроется.
- Проверьте игру ещё раз. Страница вычислит хеш сида сервера и сравнит его с тем, что вам показывали, затем пересчитает выпавшее число и покажет, был это выигрыш или проигрыш.
Проверка идёт в вашем браузере, а не на нашем сервере. Если не хотите полагаться даже на нашу страницу, формула открыта: любой калькулятор HMAC-SHA256 и SHA-256 даст тот же результат.
6.Что это доказывает, а что нет
Provably fair доказывает, что результат был зафиксирован до игры и не менялся после. На вероятность он не влияет: шанс 30% всё так же проигрывает примерно семь раз из десяти, и никакой сид не делает выигрыш вероятнее. О самом шансе и заложенном в него преимуществе сайта мы открыто рассказываем в статье про RTP.
