Игра:
Пользователи складывают блоки, чтобы сформировать неустойчивую башню. Каждый раз, когда новый блок успешно укладывается, игра создает score_string, которая служит доказательством текущего счета пользователя. Предположим, что у каждого пользователя есть уникальный открытый ключ, который известен таблице лидеров, и что пользователь может подписать свою score_string при отправке контракта таблицы лидеров. Предположим, что игра запущена локально на устройстве пользователя и может быть полностью проверена.
Таблица лидеров:
- Общедоступный договор
- Исходный код общедоступен
- Может хранить частные переменные
- Имеет общедоступную функцию submitScore(), которая принимает score_string
Можно ли сгенерировать score_string таким образом, чтобы пользователь не мог угадать score_string, который будет получен при успешной укладке следующего блока? Или как минимум заблокировать n+2?
Предполагая, что это невозможно в автономном режиме, как проще всего добиться этого с помощью API, поддерживаемого автором игры?
Отказ от ответственности: я из мира веб-разработки, и лучшее, что я могу придумать, — это API, который применяет стратегию защиты от очистки/автоматизации.По сути, он запрашивает кучу информации о браузере и запросе и полагается на вывод для выявления атак. Я думаю, что у вас будет несколько больше свободы для создания сигнала для этого вывода с использованием игрового кода (т. е. подделка большого количества сгенерированных человеком историй координат xy мыши будет PITA), но мне интересно, может ли кто-нибудь из криптомира получить более принципиальное решение.