Мне интересно - были ли когда-либо созданы игры, которые:
- одноранговый без указания узла в качестве хоста
- соревновательный (не кооперативный, игроки играют друг против друга)
- честно доказуемо (нет возможности обмана любого игрока)
- Не давайте игроку больше информации, чем ему нужно (например, не раскрывайте секреты других игроков даже запущенным приложениям)
Примером такой игры может быть игра в покер, в которой каждый игрок и его игры могут знать только свою руку, но не руки других игроков, не полагаясь на то, что кто-либо из них является хозяином игры. Я знаю, что есть несколько игр, которые вполне честны, но все, что я знаю, существует в конфигурации сервер-клиент.
game-mechanics
peer-to-peer
ThePiachu
источник
источник
Ответы:
Я не знаю, были ли созданы такие игры, но они наверняка были теоретизированы. По этой теме было опубликовано несколько работ. Возможно, вы захотите исследовать схемы обязательств, которые предлагают объяснение того, как две несогласные стороны могут подбросить монету, будучи физически отдаленными (см. Также эту статью 1981 года: подбрасывание монет по телефону ).
Одним из очень подробных документов является, например, Cheat-Proof Peer-to-Peer Коллекционные карточные игры :
Также Cheat-Proof Playout для централизованных и одноранговых игр :
источник
Хотя это не азартная игра, я разрабатываю игру AIR, которая соответствует вашим требованиям.
Тем не менее, обратите внимание ...
Я считаю "нет возможности ... обмануть" ложное утверждение. Если вы не контролируете все аспекты (аппаратное и программное обеспечение), то обман возможен.
Хотя это и не игра, я думаю, что сеть Биткойн является ярким примером того, что вы ищете.
редактировать
Я собираюсь немного расширить ваш главный вопрос.
Во-первых, я не вижу ни одной игры, требующей «доказуемо справедливых» условий без какого-либо авторитетного требования. От лидеров до микроплатежей, централизованные системы и власть идут вместе.
Во-вторых, лучший пример игры, о которой я могу подумать, это ранние игры про покемонов. Хотя внутренняя сетевая логистика, возможно, не была бы одноранговой, она следует тому же принципу.
Наконец, мобильные платформы специально приспособлены для одноранговых игр. Я считаю, что этой области очень не хватает, поэтому сейчас я занимаюсь разработкой линейки одноранговых игр.
источник
Несколько частей, которые могут помочь, в зависимости от вариантов использования:
Если вам нужно получить одновременный ввод от пользователей без возможности преждевременного использования информации в своих интересах, вы можете использовать схему обязательств. По сути это:
Это может быть использовано для разных целей, в том числе для общего случайного числа (оба предоставляют целое число через обязательства и совместно записывают их после совместного использования, чтобы получить общее значение).
Однако этого недостаточно для такой игры, как покер, потому что она требует, чтобы карты были известны только одному человеку, при этом сохраняя возможность вытягивать их из общей колоды. В Википедии есть довольно хороший алгоритм для совместного тасования по схеме, в которой оба игрока шифруют каждую карту по отдельности несколько раз. Это создает ситуацию, когда 2 ключа требуются для дешифрования любой данной карты, и у обоих игроков есть 1. В статье приводятся проблемы производительности, но я не думаю, что AES или аналогичные программы непомерно дороги в масштабе, необходимом для покера на 2 игрока.
Если бы я разрабатывал алгоритм, я бы попросил игроков вычислить случайное значение в начале игры, чтобы использовать его в качестве начального числа для всех остальных операций, и разделить хэш этого значения. Таким образом, они могут поделиться этим значением после игры, и вы сможете убедиться, что они правильно следовали протоколу, без каких-либо махинаций.
источник