@lexxleon

Как реализовать возможность проверки результата игры с помощью криптографии?

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

Так вот, как можно реализовать эту f()? Может уже есть готовые решения под эту задачу?
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 3
sim3x
@sim3x
Игрок делает ставку и шлет ее на сервер
Сервер решает, что он выиграл
Ответ написан
mindtester
@mindtester
делаю странные вещи, обычно на C#
вам надо сгенерировать и ключ шифрования, и число, число зашифровать и сообщить игрокам ДО ставок.
зашифровать криптостойким шифром.. при чем не обязательно криптостойкости на миллионы лет брутфорса, можно ограничить игрока минутой на ставку (или меньше).. в тупом варианте пойдет даже RAR архив с жутким паролем.
после ставок - раздаете пароль и выигрыш

ps rar не плох, по тому что является готовым решением (в архив можно досыпать сопроводительного текста, который тоже меняется довольно рандомно)..
так же можно использовать любой архиватор, с более менее надежной парольной защитой, или широко известные пакеты шифрования. но это уже явно сложнее для игроков (а вам вряд ли надо нагружать их мозги)

в противном случае - свое решение, в части шифрования, вам придется сделать опенсорцным и опубликовать. иначе ни кто доверять не будет.. но и это будет нагрузка для мозга игроков..

pps .. суть то та же - сначала сдай карту, но пока не сделана ставка - не даешь ее перевернуть, но и игрок уже держит руку на карте, знает что подменить ее уже невозможно
Ответ написан
@nvdfxx
Senior Pomidor developer
Можно random.org юзать. Там вроде рандомные числа генерируются на основании радиочастотных помех
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
22 янв. 2019, в 00:48
60 руб./за 1000 зн.
22 янв. 2019, в 00:09
120000 руб./в месяц
21 янв. 2019, в 23:37
1000 руб./за проект