Биткоин

Заброшенный покерный эксперимент Сатоши возвращается с биткоин-твистом

Ещё в 2008 году, когда Сатоши Накамото готовился к публикации белой книги, загадочный изобретатель, по-видимому, нашёл время, чтобы набросать эскиз покерной комнаты внутри кодовой базы Биткойна. В самом раннем исходном коде Биткойна были спрятаны кнопки для раздачи карт, сброса, колла и повышения ставок. Была только одна проблема. На самом деле ничто из этого не позволяло играть в покер.

Программное обеспечение имело все атрибуты игрового стола, но под ним не было работающей игры. Прошло 18 лет, и исследователь из Стэнфорда Робин Линус взялся за решение проблемы, оставленной Сатоши. В четверг Линус представил Bitcoin Poker — протокол, позволяющий двум людям играть в настоящую партию техасского холдема, используя Биткойн для обеспечения соблюдения правил, расчёта ставок и решения проблем с игроками, отказывающимися сотрудничать.

«Дорогой Сатоши, первый спор в BitVM, полиглот SHA2-ECDSA, безумие с Binohash — всё это просто письма поклонников, написанные на Bitcoin Script. Ничто из этого не имеет значения, пока я не воплощу твою первоначальную идею», — написал Линус на X. «Так что я наконец-то доделал покерный клиент, который ты оставил незавершённым в Bitcoin v0.1. Напиши мне, сыграем пару раздач».

Будьте в курсе
движения ваших монет

Алерты, котировки в реальном времени и новости рынка — в одном приложении

4,8 на основе 40 К оценок в App Store и Google Play

Забытый покер-рум Сатоши обретает вторую жизнь

Исходный код Bitcoin содержал файл uibase.cpp, в котором были графические компоненты для покерного лобби и стола. Дата генерации интерфейса — 16 апреля 2008 года, примерно за шесть месяцев до того, как Сатоши опубликовал белую книгу Bitcoin. Кнопки с надписями «Deal Hand», «Fold», «Call» и «Raise» наводили на мысль о чем-то более амбициозном, чем простое платежное приложение, хотя Сатоши так и не объяснил публично, что он намеревался с ними делать.

Сайт Bitcoin Poker. Скриншот загрузки кошелька.

Эти ранние фрагменты не представляли собой работающего покерного клиента, а тем более — системы азартных игр, основанной на блокчейне. В них отсутствовал механизм раздачи закрытых карт, отслеживания ставок или определения того, кто должен получить выигрыш. Лайнус чётко разграничивает эти понятия в своей белой книге «Bitcoin Poker», писая: «Эти фрагменты интерфейса не представляли собой полноценный покерный протокол». Вместо того чтобы возродить заброшенное Сатоши программное обеспечение, Лайнус решил создать недостающие механизмы с нуля.

Источник изображения: Робин Линус на X.

Исторический контекст делает это открытие ещё более интересным. В октябре 2006 года Конгресс принял Закон о борьбе с незаконными азартными играми в Интернете (UIGEA), направленный против финансовых транзакций, связанных с незаконными азартными играми в Интернете. Спустя несколько лет федеральные власти произвели громкую конфискацию доменов, принадлежащих крупным операторам онлайн-покера, в ходе рейда в апреле 2011 года, известного как «Черная пятница». Остаётся неизвестным, повлияли ли ограничения на онлайн-азартные игры на мысли Сатоши, но идея игры в покер без использования централизованного платежного оператора, безусловно, соответствует первоначальному назначению Биткойна.

Девять карт, два игрока и отсутствие дилера, принимающего решения

Лайнус, аспирант Стэнфордского университета, наиболее известен разработкой BitVM — предложения 2023 года по проверке сложных вычислений с помощью Биткойна без изменения его правил консенсуса. Его более поздние исследования включают BitVM2, BitVM3, Zerosync и другие криптографические системы. Bitcoin Poker применяет тот же изобретательный подход к чему-то гораздо более привычному, чем вычисления на блокчейне.

«Мы описываем протокол для игры в лимит-техасский холдем на Биткойне с участием двух игроков», — поясняется в статье Линуса. В игре участвуют два игрока, каждый из которых получает по две закрытые карты, а по мере продвижения ставок на столе появляются пять общих карт. В отличие от обычного онлайн-покера, ни сервер казино, ни доверенный дилер не определяют, какие карты получают игроки.

Вместо этого оба участника предоставляют секретную информацию для генерации карт. Как объясняет Линус: «Требуется всего девять различных карт». Вместо того чтобы тасовать всю колоду из 52 карт, система генерирует именно те девять карт, которые необходимы для одной руки, используя криптографические обязательства и доказательства с нулевым разглашением, чтобы обеспечить честность раздачи.

Такая схема гарантирует, что ни один из участников не может тайно контролировать исход игры. «Ни один из игроков в одиночку не может расшифровать», — говорится в статье, описывающей совместно зашифрованную информацию, используемую на этапе подготовки. Перед началом игры протокол также проверяет наличие дубликатов карт, не раскрывая их идентичности. Если две карты совпадают, вся попытка отбрасывается, и начинается новая раздача.

Здесь есть одна любопытная математическая особенность. Случайно сгенерированная раздача из девяти карт имеет лишь около 48 % шансов пройти проверку на наличие дубликатов. Это означает, что системе требуется в среднем 2,08 попытки, чтобы сформировать приемлемую руку. Это дорогостоящий способ тасовки карт, но в результате получается конфиденциальная раздача, не требующая доверия к человеку, сидящему напротив за столом.

Биткойн становится арбитром, когда кто-то отказывается играть по правилам

Раздача карт — это одно. А обеспечение выплаты выигрыша — совсем другое дело, особенно когда ни у одного из участников нет причин доверять другому. Linus решает эту проблему, подготавливая набор биткоин-транзакций, представляющих возможные исходы игры, ещё до того, как будет сделана первая ставка.

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

«Недопустимые действия не имеют предварительно авторизованной транзакции», — пишет Лайнус. Протокол также использует адаптерные подписи, которые позволяют восстанавливать необходимую информацию о картах при подписании определённых транзакций. Это не даёт игрокам возможность злоупотреблять некоторыми требованиями к раскрытию информации для получения несправедливого преимущества.

Но что происходит, когда кто-то решает, что с него достаточно, и отказывается продолжать? У Линуса есть ответ и на этот вопрос. «Каждое состояние, ожидающее игрока, также предусматривает возможность использования тайм-аута соперника», — говорится в статье. По истечении заданной задержки оставшийся участник может забрать зафиксированный банк, а неиспользованный баланс уходящего игрока возвращается.

Исследователь отмечает важное различие: «Протокол может принудить к расчету, но не может заставить кого-либо раскрыть карту». Другими словами, Биткойн не может заставить кого-то доиграть партию, но может обеспечить выполнение финансовых последствий ухода из игры.

Покерная игра с 56 132 узлами имеет один нюанс

Концепция продумана, но никто не должен путать её с лёгким мобильным приложением для покера. Эталонная конфигурация Линуса, предусматривающая 100 больших блайндов на игрока и четыре ставки в каждом раунде, содержит 56 132 логических узла, а также 54 855 обычных подписей и 1 306 пакетов раскрытия карт. Каждый пакет содержит ещё 52 адаптерные подписи.

Общий размер снимка подготовки составляет 8 416 186 байт, что примерно равно 8,4 МБ. В ходе трёх испытаний в настольных браузерах подготовка и сохранение дерева транзакций занимали от 26,39 до 27,26 секунд. Линус предупреждает: «Это измерения в тестовой среде, а не гарантии при запуске». Приведенные цифры описывают эталонную реализацию, а не производительность, которую пользователи должны ожидать от готового продукта.

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

Спустя почти восемнадцать лет идея Сатоши о покере обрела реальные правила

Ограничения по-прежнему существуют. Bitcoin Poker поддерживает только двух участников, поскольку дополнительные игроки могли бы тайно обмениваться информацией о своих картах. Публичные раскрытия карт могут обнажить обе руки, а криптографическая конструкция по-прежнему нуждается в независимом анализе безопасности, прежде чем кто-либо сможет считать её готовой к производственному использованию.

Лайнус не пытается скрывать эти недостатки. «Это не является формальным доказательством полноценного протокола, защищающего от злоумышленников», — признается в статье. Существующие тесты с использованием Bitcoin Core проверяют важные компоненты, включая выплаты и сценарии истечения времени ожидания, но «покрытие тестами не является доказательством безопасности».

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

Загадочный изобретатель Биткойна оставил после себя покерный стол с кнопками, которые практически ничего не делали. Спустя восемнадцать лет Лайнус разработал криптографические правила, необходимые для раздачи карт, розыгрыша руки и распределения банка. Остаётся вопрос: сможет ли эта сложная конструкция стать достаточно практичной, чтобы обычные игроки захотели её опробовать?

Источник

Добавить комментарий

Кнопка «Наверх»
  • bitcoinBitcoin (BTC) $ 82,421.00
  • ethereumEthereum (ETH) $ 2,480.49
  • tetherTether (USDT) $ 0.999224
  • usd-coinUSDC (USDC) $ 0.999672
  • tronTRON (TRX) $ 0.331853
  • zcashZcash (ZEC) $ 1,209.32
  • dogecoinDogecoin (DOGE) $ 0.085138
  • moneroMonero (XMR) $ 530.68
  • chainlinkChainlink (LINK) $ 12.78
  • cardanoCardano (ADA) $ 0.240190
  • leo-tokenLEO Token (LEO) $ 8.89
  • stellarStellar (XLM) $ 0.193715
  • bitcoin-cashBitcoin Cash (BCH) $ 275.00
  • litecoinLitecoin (LTC) $ 63.54
  • daiDai (DAI) $ 0.999988
  • hedera-hashgraphHedera (HBAR) $ 0.090865
  • crypto-com-chainCronos (CRO) $ 0.061059
  • okbOKB (OKB) $ 125.58
  • ethereum-classicEthereum Classic (ETC) $ 8.33
  • cosmosCosmos Hub (ATOM) $ 2.06
  • kucoin-sharesKuCoin (KCS) $ 7.52
  • algorandAlgorand (ALGO) $ 0.113160
  • vechainVeChain (VET) $ 0.007830
  • dashDash (DASH) $ 50.84
  • true-usdTrueUSD (TUSD) $ 0.999167
  • tezosTezos (XTZ) $ 0.292021
  • decredDecred (DCR) $ 17.49
  • iotaIOTA (IOTA) $ 0.050708
  • basic-attention-tokenBasic Attention (BAT) $ 0.133734
  • neoNEO (NEO) $ 2.42
  • 0x0x Protocol (ZRX) $ 0.122236
  • qtumQtum (QTUM) $ 0.950699
  • ontologyOntology (ONT) $ 0.060865
  • liskLisk (LSK) $ 0.235048
  • ravencoinRavencoin (RVN) $ 0.002250
  • wavesWaves (WAVES) $ 0.266578
  • paxos-standardPax Dollar (USDP) $ 0.995996
  • huobi-tokenHuobi (HT) $ 0.143885
  • iconICON (ICX) $ 0.013571
  • bitcoin-diamondBitcoin Diamond (BCD) $ 0.061182
  • monacoinMonaCoin (MONA) $ 0.075516
Закрыть
Закрыть