Как реализовать возможность проверки результата игры с помощью криптографии?
Здарова! Есть условный сайт азартной игры. Игрок делает ставку, генератор выдает числа от 1 до 100, если число меньше числа оговоренного в правилах - засчитывается выигрыш. Все бы хорошо, но система не гарантирует игрокам честность со стороны организатора. Нужен способ проверки честности.
Еще 3 момента: действия игрока не влияют ни на что, ставки делаются анонимно перечислением биткоинов - игрок может однозначно идентифицировать свою транзакцию по txid, в одну транзакцию может быть включено несколько игр.
У меня есть следующая идея:
1. Генерируем большой массив чисел от 1 до 100.
2. Находим хэш от массива.
3. Пишем некую f(txid, n, h), где txid - идентификатор транзакции, n - номер игры, h - хэш массива. Функция однозначно возвращает нам позицию в массиве, а значит и число на этой позиции.
4. Сравниваем число с условиями и т.д...
Если игрок захочет проверить честность, он самостоятельно может взять массив, найти хэш, подставить свои txid, n и убедиться в правдивости результата игры.
Так вот, как можно реализовать эту f()? Может уже есть готовые решения под эту задачу?
Как игрок убедится, что сервер взял именно случайное число, а не то, которое ему выгодно? А так же в том, что числа генерируются в оговоренном диапазоне?
вам надо сгенерировать и ключ шифрования, и число, число зашифровать и сообщить игрокам ДО ставок.
зашифровать криптостойким шифром.. при чем не обязательно криптостойкости на миллионы лет брутфорса, можно ограничить игрока минутой на ставку (или меньше).. в тупом варианте пойдет даже RAR архив с жутким паролем.
после ставок - раздаете пароль и выигрыш
ps rar не плох, по тому что является готовым решением (в архив можно досыпать сопроводительного текста, который тоже меняется довольно рандомно)..
так же можно использовать любой архиватор, с более менее надежной парольной защитой, или широко известные пакеты шифрования. но это уже явно сложнее для игроков (а вам вряд ли надо нагружать их мозги)
в противном случае - свое решение, в части шифрования, вам придется сделать опенсорцным и опубликовать. иначе ни кто доверять не будет.. но и это будет нагрузка для мозга игроков..
pps .. суть то та же - сначала сдай карту, но пока не сделана ставка - не даешь ее перевернуть, но и игрок уже держит руку на карте, знает что подменить ее уже невозможно