Рейтинг:0

Подтверждение счета в публичной игре с таблицей лидеров публичного контракта

флаг es

Игра:

Пользователи складывают блоки, чтобы сформировать неустойчивую башню. Каждый раз, когда новый блок успешно укладывается, игра создает score_string, которая служит доказательством текущего счета пользователя. Предположим, что у каждого пользователя есть уникальный открытый ключ, который известен таблице лидеров, и что пользователь может подписать свою score_string при отправке контракта таблицы лидеров. Предположим, что игра запущена локально на устройстве пользователя и может быть полностью проверена.

Таблица лидеров:

  • Общедоступный договор
  • Исходный код общедоступен
  • Может хранить частные переменные
  • Имеет общедоступную функцию submitScore(), которая принимает score_string

Можно ли сгенерировать score_string таким образом, чтобы пользователь не мог угадать score_string, который будет получен при успешной укладке следующего блока? Или как минимум заблокировать n+2?

Предполагая, что это невозможно в автономном режиме, как проще всего добиться этого с помощью API, поддерживаемого автором игры?

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

knaccc avatar
флаг es
Я думаю, что это игра на ловкость, где кто-то должен аккуратно размещать каждый блок? Что должно помешать пользователю просто изменить клиент, чтобы сделать вид, что каждый блок был размещен идеально?
James Moffet avatar
флаг es
@knaccc это именно то, о чем я спрашиваю, см. комментарий внизу о передаче короткой пошаговой истории созданных человеком координат xy мыши (сгенерированных в ходе взаимодействия с игрой), которые было бы трудно убедительно подделать с помощью модификация клиента. Это неэлегантное решение, но оно создает барьер (который, вероятно, может быть преодолен хорошей DNN, но что угодно). Мне интересно, есть ли более принципиальный способ решить эту проблему, заставив клиента создать секрет, более элегантный, чем история координат мыши.
knaccc avatar
флаг es
Почему трудно убедительно имитировать движения мыши? Я думаю, что принципиально, вы должны признать поражение.Нет никакого способа гарантировать, что вы можете доверять клиенту, и в этом случае нет никакой криптографии, которая может помочь с подделкой высоких результатов.
James Moffet avatar
флаг es
Было бы невозможно убедительно подделать поведение игрового курсора, созданного человеком, в миллисекундном масштабе без большой базы данных реальных временных рядов данных, созданных игроками-людьми. Он слишком сложен и перегружен сигналами, чтобы его можно было убедительно сгенерировать на основе первых принципов. Это более или менее принцип, на котором основаны меры по борьбе с парсингом веб-страниц.Если вы попытаетесь очистить что-то вроде crunchbase.com с помощью браузерной автоматизации, вы быстро обнаружите, что имитация человека — нетривиальная задача. Хотелось бы найти лучшее решение, возможно, его нет

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.