Рулетки, rand и хеши
Никогда не думал что буду разрабатывать рулетку для counter strike, а вот оказывается пришлось связаться со стимом, его апи и стим ботами.
В процессе написания, узнал многое о игровом бизнесе вообще, заметка пойдет о «общепринятом способе», доказательства честности рулетки.
Как это происходит?
Еще до начала игры, рулетка генерирует случайный float от 0 до 1 и открыто публикует его хеш.
Каждый внесший деньги получает билеты, например 0,1$ = 1 билету, если я внесу 10$, то получу 100 билетов, выигрывает всегда один билет. т.е. чем больше внесу денег, тем больше шансов победить.
Победителя определяют по формуле
Случайное число * размер банка = (int)победивший билет
После победы публикуют еще один хеш
md5( хеш случайного числа + размер банка + всякая ненужная инфа)
Нам предлагают калькулятор, где можно этот хеш пересчитать и удостовериться в его подлиности.
Как мы видим, это полная фигня, ведь нам так и не сообщили начальное число, следовательно мы его не можем проверить.
Беда, попробуем исправить. Допустим, после розыграша число будет открыто, мы сможем генерировать хеш и убедится что это оно и было. Ок
md5( md5(случайное число) + размер банка)
Это правда позволит нам удостоверится что число было случайным.
Продолжим. Да, число действительно случайное, но не забываем о второй переменной — размере банка. Как бы нам не казалось что размер банка неизвестен, это не совсем так.
Банк — число динамическое, а следовательно я могу расставить по длине всего банка пару подставных ставок, меняя их я подгоню итоговое число так, что выигрыш будет на нужной ставке, казино опять победит.
Это никак не изменить, нельзя ведь отобрать у игроков возможность ставить деньги?
Все ли казино этим пользуются?
Мой работодатель утверждает о свой честности, я ему верю, так как пишу код этой рулетки. В тз нет ничего о «регуляторах банка», но все же, хеши никакая не гарантия.
Есть ли 100% способ проверить честность казино? думаю нет, нечестный на руку всегда найдет лазейку.
28 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів