Все думаю сделать покер или похожую психологическую игру с контролем честности и пришел к выводу, что это невозможно. Первая мысль была - запомнить расположение карт. Да, тогда есть защита от подмены карт, но ведь администрация знает расклад, а значит имеет преимущество. Я немного погуглил по запросу "контроль честности покера", посмотрел что они предлагают: примерно то же самое, запоминать порядок карт. Но это фикция. Контроль честности можно гарантировать только в простейших играх, как уже реализовано у меня в кабинете. То есть когда вы сразу видите хеш результата и, в случае проигрыша, можете проверить его в любом сервисе md5_decode. В покере администрация по любому знает ваши карты, т.е это вопрос доверия к сайту. Вы также не знаете реальные ли у вас противники или боты.
Да ничего не поможет я уже изучил вопрос. Как ты вообще можешь быть уверен что игроки не боты, даже если есть контроль честности раздачи карт.
Но психологическую азартную игру сделать возможно если привязать ее к чему-нибудь, что не зависит от администрации. Например, к курсу биткоина, который постоянно скачет. И тогда игроки должны быть продвинутые, давать администрации не ответы а хеши ответов, чтобы администрация сама не знала ответы. А потом, когда курс уже зафиксирован на нужное время, игроки делают ставки на свой результат. Кто считает, что очень сильно ошибся с курсом, тот сразу выходит из игры, оставляя первоначальную ставку в банке. Ну или он может сделать большую ставку и попытаться деморализовать других игроков, как блеф в игре покер. Когда все ставки сделаны, игрок пишет свой ответ и дает маску хэша, чтобы все остальные игроки могли убедиться в честности. То есть реализовать такую игру со 100% честностью возможно. Вопрос только будет ли она популярна. То есть вам придется придумать маску хэша, например, такую: "234Вndk//курс биткоина: 10000$//sdfk;oke", потом заходить на сервис md5 онлайн, генерировать из нее хеш и вводить в игре. В принципе не сложно. Мне кажется при должной рекламе даже покеристов такая игра могла бы увлечь.
Для таких психологических игр подойдет любая меняющаяся величина, не зависящая от игроков. Ну теоретически конечно вы можете на курс биткоина повлиять, если купите или продадите криптовалюты на миллионы долларов, но вряд ли у нас будут такие. Еще можно угадывать погоду на любой день. Минус - игра отложена во времени. Азарт уже не тот. А такой механизм можно к чему угодно привязать, хоть к спортивным ставкам. Можно попытаться угадать длительность боя, например.
Да не обязательно бот, может быть реальный игрок в сговоре с администрацией. Вот, создал экспериментальную игру.
В криптографии есть задача о честной игре в покер по телефону. К ее детальному разбору и созданию протокола честной игры причастны создатели знаменитого и весьма популярного шифра RSA, название которого происходит от первых английских букв фамилий ставших впоследствии знаменитыми криптографами Ривест (R), Шамир (S), Адлеман (A). Они опубликовали статью "Mental poker" в сборнике, посвященном великому популяризатору математики Мартину Гарднеру. Формулировка задачи о покере звучит так: "Могут ли два нечестных друг к другу игрока сыграть в честный покер по телефону?" Ответ положительный, что принципиально, но весьма громоздкий и связан с шифрованием, что притормаживает процесс игры.
Не знаю насколько представляет интерес, но наткнулся на программу "CypherPoker" ("Шифропокер") со свободным скачиванием и открытым программным кодом. Ниже приведен перевод краткой аннотации с ГитХаба, на котором в 2017 году был размещен исходный код этой программы. ШИФРОПОКЕР Автор характеризует Шифропокер (Cypherpoker) следующими словами: "Fair, provable, crypto-powered, peer-to-peer poker", что в переводе означает "честный, доказуемо безопасный, криптостойкий, одноранговый (т.е. с равноправными участниками) покер. СypherPoker (Шифропокер) представляет собой открытую программную реализацию криптографического покера с равноправными игроками. Программа написана на Adobe ActionScript 3 (для Flash и AIR), создана с использованием программного обеспечения и инструментов с открытым исходным кодом. Программа СypherPoker является кульминацией нескольких десятилетий глубоких исследований и анализа ментального покера лучшими умами в области криптографии. Назовем некоторых из них: Рон Ривест, Леонард Адлеман, Ади Шамир, Дон Копперсмит, Шафи Голдвассер и Сильвио Микали. Как отмечалось в статье "Mental Poker" от 1979 года, полноценная игра в покер не могла быть практически реализована на компьютерном оборудовании того времени. Хотя возможности с тех пор значительно увеличились, на сегодняшний день наиболее полной реализацией стала библиотека LibTCMG от Heiko Stamer и исходный код для очень популярной в Германии карточной игры Skat для 3-х игроков. К сожалению, программный код простой игры и библиотека Stamer были невостребованными в течение многих лет. В настоящее время существуют несколько попыток создания ментального покера. Однако все они находятся на начальной стадии зарождения и по существу являются отработкой и проверкой концепции онлайн покера. Между тем было много интересных и захватывающих дискуссий о том, как можно использовать, распространять и адаптировать программное обеспечение такого характера. Однако все они были в основном теоретическими в отсутствие практической реализации. С помощью программы CypherPoker открываются возможности для нового диалога об онлайн покере Ссылки: [1] Блог автора программы CypherPoker [2] Страница описания и загрузки CypherPoker'a (альфа-версия). Рзмер установочного файла равен 13,5 мб. Программа легко установилась под Win7 и главное запустилась несмотря на постоянные предупреждения, что это альфа-версия и возможны баги. [3] Исходный код Шифропокера на ГитХабе.
Ваше замечание напоминает прошлые утверждения: "зачем создавать и развивать мир криптовалют, когда есть банки благополучно обслуживающие миллиарды людей и приносящие колоссальные прибыли". В отношении покера речь идет о создании протокола честного покера для игры с удаленными партнерами. В течение многих лет эта задача никак не находила удовлетворительного решения, которое было бы доказуемо честно и безопасно. В марте этого года на конференции по финансовой криптографии был представлен доклад, описывающий подробности такого протокола. В посте представлен перевод первой части многостраничного доклада про криптографический протокол игры в покер под названием "Калейдоскоп"
Может быть. То есть все держится на доверии. Но доверие надо завоевать. Отсутствие надежной технологии для проверки честности и приводит миллионы людей со всего мира в крупнейшие покер румы. А если бы такая технология была, это бы позволило уничтожить монополию, снизить издержки.
Кстати, вроде как программы начали обыгрывать людей в покер? Не помню точно, но вроде от создателей альфаГО
Не будем делать безапеляционные утверждения. Обратимся к криптографии и рассмотрим простой, но принципиальный пример честной раздачи трех карт между двумя игроками, находящимися на удаленном расстоянии. Третья карта остается в прикупе. Ни один игрок достоверно не знает содержания чужих карт. Криптография в приведенном примере весьма простая и легко проверяемая. Криптографическая модель честной раздачи трех карт Пусть два удаленных игрока Игрок-1 и Игрок-2 хотят честно раздать три карты T,S,A - соответственно тройка, семерка, туз так, чтобы не быть обманутым своим соперником. Они собираются применить протокол асимметричной криптографии, в основе которого лежит односторонняя функция возведения в степень по модулю большого целого числа: y = a^x mod p. Обратной функцией является дискретный логарифм и его нахождение представляет собой вычислительно сложную задачу. Чем длиннее базовое число протокола p, тем безопасней сам протокол. Однако для демонстрации протокола и уяснения его смысла ограничимся небольшим значениям p = 103. Пусть проведено предварительное кодирование раздающихся карт, например, T (тройка) = 3, S(семерка) = 7 , A(туз) = 11. Далее каждый из игроков генерирует свою пару ключей (c,d), связанных между собой важным соотношением c*d mod (p-1) =1. Условно можно считать, что с-ключ это ключ шифрования (cipher key), d -ключ в свою очередб ключ дешифрации (decipher key). Пусть в конечном итоге игроки сформировали такие пары ключей: Игрок-1: c1 = 13, d1 = 55; Игрок-1: c2 = 19, d1 = 43; Шаг 1. Игрок-1 шифрует три заданные карты своим ключом шифрования согласно основной формуле протокола 3^13 mod 103 = 89, // шифр тройки 7^13 mod 103 = 98, // шифр семерки 11^13 mod 103 = 45. // шифр туза Затем Игрок-1 перемешивает шифры 89, 98, 45 и высылает их Игроку-2. Шаг 2. Игрок-2, получив три зашифрованных числа, выбирает "вслепую" одно из них и отправляет Игроку-1. Вероятность выбора одного из трех чисел равна 1/3. Таким образом Игрок-1 может в обратной пересылке получить с равной вероятностью любую из трех карт. Пусть ему отправлено, к примеру, зашифрованное число 45, которое Игрок-1 легко дешифрует своим секретным d-ключом: 45^55 mod 103 = 11, то есть туз. Таким образом, при раздаче карт Игрок-1 получает туза с честной вероятностью 1/3 = 0,3333. Шаг 3. У Игрока-2 осталось две шифркарты 89 и 98, которые Игрок-2 дополнительно шифрует своим с-ключом 89^19 mod 103 = 10, 98^19 mod 103 = 17 и затем отправляет эти числа к Игроку-1, возможно, переставив их местами. Шаг 4. Игрок-1 получает две карты 10,17, последовательно зашифрованные каждым игроком своими с-ключами. Двойное шифрование карт препятствует мошенничеству игроков, так как препятстует подглядыванию содержания карт из-за незнания ключей соперника. Игрок-1 произвольно выбирает одну из двух зашифрованных карт, например 10, в условиях отсутствия информации об их содержании. Далее Игрок-1 частично дешифрует карту своим d-ключом по формуле: 10^55 mod 103 = 94. Вычисленный результат в виде числа 94 отправляется Игроку-2. Опуская подробности, отметим, что вероятность выбора очередной зашифрованной карты "94" равна 1/3. Таким образом достигается одинаковость вероятностей при выборе каждой карты. Шаг 5. Игрок-2, получив зашифрованную карту в виде числа 94, дешифрует ее с помощью своего d-ключа по формуле: 94^43 mod 103 = 3 и определяет, что ему досталась тройка. В прикупе осталась третья карта семерка, но ни один из игроков достоверно не знает об этом. Злоумышленник, отслеживавший все передаваемые сообщения, не может узнать значения карт по их шифрам в случае большой длины базового для криптопротокола числа p. В настоящее время с учетов возможностей современного парка компьютеров рекомендуется, выбирать длину числа p более 2048 битов или 256 символов 16-ричной кодировки. Вывод: с помощью современной асимметричной криптографии можно реализовать честную раздачу карт между удаленными игроками; к недостаткам приведенного протокола можно отнести необходимость многократной пересылки карт, что требует дополнительных зхатрат времени.
Хотя игра в покер ИИ против человека является выдающимся достижением, но прямого отношения к обсуждаемому здесь честному онлайн покеру пока не имеет. Но сама информация любопытна. Искусственный интеллект играет в различные игры — от шашек до го — существенно лучше человека. В январе 2017 года алгоритм Libratus впервые обыграл в безлимитный техасский холдем четырех профессиональных игроков в покер, заработав при этом $1,8 млн (затем этот успех удалось повторить ИИ Lengpudashi). Теперь, сообщает Science Daily, ученые смогли выяснить, как алгоритму это удалось. В отличие от логических игр, таких как го, где каждый игрок в любой момент знает текущее положение дел на доске, покер основан на работе со скрытой информацией. Как выяснилось при исследовании, для победы в нем ИИ использовал метод, применимый к множеству игр с недостатком информации — а также к таким сферам реальной жизни, как деловые переговоры, кибербезопасность, финансы и военное дело. Никаких специфичных именно для покера стратегий Libratus не использовал. Работа ИИ была разделена на три основных модуля. В первом Libratus создавал упрощенную модель игры, работать с которой было намного легче, чем анализировать 10 в 161-й степени возможных вариантов решения. Затем он прорабатывал подробную стратегию игры для ранних раундов и приблизительную — для последующих. В процесс игры ИИ учитывал свои ошибки и вносил коррективы в план действий, создавая более точную модель. Также он с помощью машинного обучения анализировал ошибки соперников-людей и учитывал в своей игре против них. Таким образом, секрет успеха Libratus заключался в том, чтобы разбить игру на поддающиеся моделированию части и в процессе вносить в модель изменения. Подход Libratus оказался эффективным не только против людей, но и против других ИИ. Например, ему удалось победить бота Baby Tartanian8, до этого считавшегося лучшим игроком в покер.
Уже обсуждали это. Требования такие, что-бы никто не знал карты, до раздачи, открытия флопа, ривера и т.д. В случае сдвига игроками, карты может узнать тот, на чьей стороне вычисления. Выше описывался способ с зашифровыванием каждой карты, но способ слишком громоздкий для привычной игры онлайн.
Нет, там не проследишь за честностью. И скорее всего там стоит алгоритм, который сразу определяет кому и какая карта пойдет. иначе покер бы загнулся быстро и не был бы рентабельным.