Контроль честности в покере возможен?

Тема в разделе "Разработка", создана пользователем admin, 22 май 2018.

  1. admin

    admin Администратор Команда форума

    Все думаю сделать покер или похожую психологическую игру с контролем честности и пришел к выводу, что это невозможно.
    Первая мысль была - запомнить расположение карт. Да, тогда есть защита от подмены карт, но ведь администрация знает расклад, а значит имеет преимущество. Я немного погуглил по запросу "контроль честности покера", посмотрел что они предлагают: примерно то же самое, запоминать порядок карт. Но это фикция. Контроль честности можно гарантировать только в простейших играх, как уже реализовано у меня в кабинете. То есть когда вы сразу видите хеш результата и, в случае проигрыша, можете проверить его в любом сервисе md5_decode. В покере администрация по любому знает ваши карты, т.е это вопрос доверия к сайту. Вы также не знаете реальные ли у вас противники или боты.
     
  2. West475

    West475 Постоянный пользователь Проверенный

    Это покер.
    Крупье должен находиться перед игроками))

    Может поможет сдвиг карт, от каждого игрока?
     
  3. admin

    admin Администратор Команда форума

    Да ничего не поможет я уже изучил вопрос. Как ты вообще можешь быть уверен что игроки не боты, даже если есть контроль честности раздачи карт.
     
  4. admin

    admin Администратор Команда форума

    Но психологическую азартную игру сделать возможно если привязать ее к чему-нибудь, что не зависит от администрации. Например, к курсу биткоина, который постоянно скачет. И тогда игроки должны быть продвинутые, давать администрации не ответы а хеши ответов, чтобы администрация сама не знала ответы. А потом, когда курс уже зафиксирован на нужное время, игроки делают ставки на свой результат. Кто считает, что очень сильно ошибся с курсом, тот сразу выходит из игры, оставляя первоначальную ставку в банке. Ну или он может сделать большую ставку и попытаться деморализовать других игроков, как блеф в игре покер. Когда все ставки сделаны, игрок пишет свой ответ и дает маску хэша, чтобы все остальные игроки могли убедиться в честности.

    То есть реализовать такую игру со 100% честностью возможно. Вопрос только будет ли она популярна. То есть вам придется придумать маску хэша, например, такую: "234Вndk//курс биткоина: 10000$//sdfk;oke", потом заходить на сервис md5 онлайн, генерировать из нее хеш и вводить в игре. В принципе не сложно. Мне кажется при должной рекламе даже покеристов такая игра могла бы увлечь.
     
    btcpapa нравится это.
  5. admin

    admin Администратор Команда форума

    Для таких психологических игр подойдет любая меняющаяся величина, не зависящая от игроков. Ну теоретически конечно вы можете на курс биткоина повлиять, если купите или продадите криптовалюты на миллионы долларов, но вряд ли у нас будут такие. Еще можно угадывать погоду на любой день. Минус - игра отложена во времени. Азарт уже не тот. А такой механизм можно к чему угодно привязать, хоть к спортивным ставкам. Можно попытаться угадать длительность боя, например.
     
  6. West475

    West475 Постоянный пользователь Проверенный

    Тут много ботов?
     
  7. admin

    admin Администратор Команда форума

  8. tabi2018

    tabi2018 Постоянный пользователь Проверенный

    В криптографии есть задача о честной игре в покер по телефону. К ее детальному разбору и созданию протокола честной игры причастны создатели знаменитого и весьма популярного шифра RSA, название которого происходит от первых английских букв фамилий ставших впоследствии знаменитыми криптографами Ривест (R), Шамир (S), Адлеман (A). Они опубликовали статью "Mental poker" в сборнике, посвященном великому популяризатору математики Мартину Гарднеру. Формулировка задачи о покере звучит так: "Могут ли два нечестных друг к другу игрока сыграть в честный покер по телефону?" Ответ положительный, что принципиально, но весьма громоздкий и связан с шифрованием, что притормаживает процесс игры.
     
  9. admin

    admin Администратор Команда форума

    Два могут, а три и больше не могут.
     
  10. tabi2018

    tabi2018 Постоянный пользователь Проверенный

    Не знаю насколько представляет интерес, но наткнулся на программу "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] Исходный код Шифропокера на ГитХабе.
     
  11. West475

    West475 Постоянный пользователь Проверенный

    А можно сделать смарт контракт-колоду, который исполняется постепенно?
     
  12. tabi2018

    tabi2018 Постоянный пользователь Проверенный

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

    В отношении покера речь идет о создании протокола честного покера для игры с удаленными партнерами. В течение многих лет эта задача никак не находила удовлетворительного решения, которое было бы доказуемо честно и безопасно. В марте этого года на конференции по финансовой криптографии был представлен доклад, описывающий подробности такого протокола. В посте представлен перевод первой части многостраничного доклада про криптографический протокол игры в покер под названием "Калейдоскоп"
     
  13. admin

    admin Администратор Команда форума

    Может быть. То есть все держится на доверии. Но доверие надо завоевать. Отсутствие надежной технологии для проверки честности и приводит миллионы людей со всего мира в крупнейшие покер румы. А если бы такая технология была,
    это бы позволило уничтожить монополию, снизить издержки.
     
  14. casio

    casio Постоянный пользователь Проверенный

    Любые системы где кто то знает состояние системы в теории нельзя честными сделать.
     
  15. kampaster

    kampaster Катарсис - Hold Fast

    Кстати, вроде как программы начали обыгрывать людей в покер?
    Не помню точно, но вроде от создателей альфаГО
     
  16. tabi2018

    tabi2018 Постоянный пользователь Проверенный

    Не будем делать безапеляционные утверждения. Обратимся к криптографии и рассмотрим простой, но принципиальный пример честной раздачи трех карт между двумя игроками, находящимися на удаленном расстоянии. Третья карта остается в прикупе. Ни один игрок достоверно не знает содержания чужих карт. Криптография в приведенном примере весьма простая и легко проверяемая.

    Криптографическая модель честной раздачи трех карт

    Пусть два удаленных игрока Игрок-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-ричной кодировки.

    Вывод: с помощью современной асимметричной криптографии можно реализовать честную раздачу карт между удаленными игроками; к недостаткам приведенного протокола можно отнести необходимость многократной пересылки карт, что требует дополнительных зхатрат времени.
     
  17. tabi2018

    tabi2018 Постоянный пользователь Проверенный

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

    Искусственный интеллект играет в различные игры — от шашек до го — существенно лучше человека. В январе 2017 года алгоритм Libratus
    впервые обыграл в безлимитный техасский холдем четырех профессиональных игроков в покер, заработав при этом $1,8 млн (затем этот успех удалось повторить ИИ Lengpudashi). Теперь, сообщает Science Daily, ученые смогли выяснить, как алгоритму это удалось.

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

    Никаких специфичных именно для покера стратегий Libratus не использовал. Работа ИИ была разделена на три основных модуля. В первом Libratus создавал упрощенную модель игры, работать с которой было намного легче, чем анализировать 10 в 161-й степени возможных вариантов решения. Затем он прорабатывал подробную стратегию игры для ранних раундов и приблизительную — для последующих.

    В процесс игры ИИ учитывал свои ошибки и вносил коррективы в план действий, создавая более точную модель. Также он с помощью машинного обучения анализировал ошибки соперников-людей и учитывал в своей игре против них. Таким образом, секрет успеха Libratus заключался в том, чтобы разбить игру на поддающиеся моделированию части и в процессе вносить в модель изменения.

    Подход Libratus оказался эффективным не только против людей, но и против других ИИ. Например, ему удалось победить бота Baby Tartanian8, до этого считавшегося лучшим игроком в покер.
     
    admin, West475 и kampaster нравится это.
  18. casio

    casio Постоянный пользователь Проверенный

    ну у вас системы выйдет такой что каждый может говорить что у него нужная карта на руках.
     
  19. West475

    West475 Постоянный пользователь Проверенный

    Уже обсуждали это.
    Требования такие, что-бы никто не знал карты, до раздачи, открытия флопа, ривера и т.д.
    В случае сдвига игроками, карты может узнать тот, на чьей стороне вычисления.

    Выше описывался способ с зашифровыванием каждой карты, но способ слишком громоздкий для привычной игры онлайн.
     
  20. Oplech

    Oplech новичок

    Нет, там не проследишь за честностью. И скорее всего там стоит алгоритм, который сразу определяет кому и какая карта пойдет. иначе покер бы загнулся быстро и не был бы рентабельным.