Обновить

Публичный розыгрыш, который нельзя пересчитать — это не розыгрыш, а обещание

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.2K
Всего голосов 4: ↑3 и ↓1+3
Комментарии27

Комментарии 27

Тут не хватает описания технологии перемешивания каждой из 12 итераций.

Победительница «случайного» отбора золотого билета, по свидетельствам, ещё до объявления заявляла в пабе, что идёт в дом. Регулятор начал проверку. Зрители видели шоу честного отбора — а процедура за кулисами честной не была.

Ничего не понятно

То же самое хотел написать. Перечитал несколько раз но так и не понял о чём речь.

Перепроверил. «Большой брат», Великобритания, 2006.  - в статье изменен

Тут самая кривая часть перевода - "идёт в дом". Тот самый "Большой брат" - прототип нашего "Дома", так что это просто синоним "прошла отбор".

С домом стало понятней, так а нечестность то в чём? Её не пустили, сказали что билет поддельный или что?

Она знала, что выиграет до розыгрыша. Хотя любая самоуверенная особа купившая билет может утверждать, что выиграет джекпот. А потом (когда реально выиграет) начнутся такие же вопросы.

Перепроверено и откорректировано

Про баги в лотереях есть два фильма на основе реальных событий:

The Luckiest Man in America (2024) про мужика, который нашел баг в генераторе случайных чисел у организаторов и успешно проэксплуатировал его.

Jerry & Marge Go Large (2022) про пару пенсионеров, проэксплуатировавших баг в правилах вычисления суммы выигрыша.

Не сказали только где брать надёжный достоверный drand

https://drand.love/

Distributed randomness beacon.

Verifiable, unpredictable and unbiased random numbers as a service.

Возникает вопрос - а нужна ли вся эта честность и прозрачность организаторам лотереи?

Когда выигрыш, да не простой, а джек-пот, уходит какому-то левому селянину, а организаторам теперь вынь да положь крупную сумму на бочку (не из левого кармана в правый).

P.S. Тут когда-то ещё и про честные верифицируемые выборы стаьи были :)

Есть тонкости (я тут промахнулся мышкой и намусорил)

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

а нужна ли вся эта честность и прозрачность организаторам лотереи?

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

Деятельность лотерей регулируется. В некоторых странах (например, США) несанкционированные лотереи запрещены. Например, если на вечеринке устроить лотерею, где билеты покупаются за деньги, но не все полученные таким образом деньги идут на приз, то есть возможность для неприятностей просто за сам факт проведения лотереи. В Великобритании похоже устроено, но есть свои какие-то тонкости, в которых мне лень разбираться.

А если лотерея санкционирована, то нужно следовать правилам, даже если организаторам этого не хочется.

Победитель — чистая функция от (seed, drand, список).

Берем лотерею, условно 6 из 36, когда люди сами заполняют лотерейные билеты и отдают организатору. Организатор получает лотерейные билеты к определенному времени, после которого новые билеты уже не принимает. Дальше, он вводит билеты в публичную базу доступную всем, чтоб кто хочет мог пересчитать, что занимает некоторое время перед самой лотереей. Однако сам организатор к этому времени знает и seed и drand, так что помешает организатору посчитать, какие еще можно добавить билеты в конец списка так, чтоб один из них оказался выигрышным?

Там весьма криво описан протокол. Конкретно описанная проблема там решается через внешнего актора. То есть есть внешний независимый сервис ("проверяемой энтропии"), которые каждые 3 секунды публикует случайный ключ и у которого можно запросить, а что он опубликовал в какой-то прошлый момент времени. Оператор лотерии не выбирает drand, он выбирает только время ("номер раунда"), когда наш сервис энтропии опубликует ключ — и вот ключ в этот момент времени и станет нашим drand.

Но сам протокол, вообще говоря, не предназначен для произвольных лотерей типа 6/36. Конкретно uvLotery работает только для случайных перемешиваний кандидатов. Впрочем, на суть проблем это не сильно влияет.

Для своей работы он требует целых два внешних сервиса: проверямоего источника времени и проверяемого источника энтропии. Что кмк не очень хорошо ввиду всяких угроз сговоров =/

Кмк, было бы интересно рассмотреть вариант, когда drand формируется именно что участниками. Условно, чтобы после того, как список участников закомичен, у участников была бы возможность добавить своих байт в пул энтропии. При этом, чтобы порядок добавления зависел от предыдущих добавленных байт — таким образом нельзя будет добавить своего участника в конце. Правда это плохо масштабируется (на миллионы участников).

Tl;Dr; сам протокол в статье толком не описан, нужно читать оригинал. Мб сделать нормальный разбор протокола...

https://uvs.uncloned.work/draw/ и выбираем 5 из 36
дранд берется непосредственно перед розыгрышем. на этот момент все билеты опубликованы и криптографически подтверждены. узнать дранд заранее невозможно

Была у меня одно время идея продавать цифровые колоды карт казино...
Прелюдия: так как я параноик, каждый раз играя в интернет-покер мне было интересно - а честно ли идет игра? Потому что возможностей для обмана у площадки очень много. Вдруг изначально нужному человеку (или боту) хорошие карты приходят на руку? (или каждую третью раздачу приходящуюся на седьмую минуту каждого часа - неважно. Главное, что иногда он знает, что он победитель, или просто в 51% его карты лучше моих). Или, может быть, вообще карты из прикупа по ходу игры выдумываются, так чтобы получить нужный результат? Как игроку убедиться, что этих жульничеств не происходит?

И вот возникла такая идея: Есть сервис (магазин цифровых игральных карт), он за копеечку продает перемешанную колоду карт казино (покерному сайту). Хеш колоды - считается заранее и известен всем игрокам (где-нибудь не на виду, чтобы не мешать, но при желании - они смогут проверить). Вроде бы комбинаций колод и так достаточно, но для надежности, "хозяйке на заметку", все что можно лучше посолить. Можно еще и перец добавить.
Так же перед игрой каждый может перетасовать колоду (примерно как подснять, но может быть несколько раз) - первые N верхних карт в том же порядке положить вниз. Это может покерный игровой клиент делать автоматически по PRNG, или игрок может сам. Запрос каждого игрока на перетасовку виден всем игрокам до игры. И это защищает от того, чтобы магазин продал колоду, которая была бы выгодна нужному игроку.

После завершения игры магазин публикует всю колоду и все игроки могут убедиться, что:
1. Колода совпадает с известным в начале хешем, никто по ходу игры не мухлевал с колодой
2. После применения всех перетасовок от каждого игрока получилась та колода, которую они и видели в игре.
Можно даже отдельное open source приложение иметь, которое проверяет все эти данные об игре и говорит, был мухлеж или нет.

Это основная суть, там еще детали могут быть важны (например, магазин должен подписывать колоду своим ключом, чтобы игроки видели, что игорный сайт в самом деле играет колодой надежного магазина, а не дает свои колоды). Или что карты игрока известны только самому игроку, и не известы игорному сайту (который мог бы их "шепнуть" подставному игроку). Но главная идея - максимально разделить "казино" (игорный сайт) и колоду, чтобы даже казино не могло мухлевать с ней. (С ней в теории может мухлевать магазин, но магазин не может знать на какой стол уйдет колода, какие там игроки в каком порядке, и как вариант - может не знать как идет пользовательская перетасовка). Как вариант, казино вообще покупает на каждую игру N колод и играет одной случайной, остальные выбрасываются.

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

Кстати интересная идея насчёт карточных игр вообще. Надо будет исследовать

Ерунду придумываете.

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

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

Готово. Тасовка колоды - https://uvs.uncloned.work/draw/ выбираем Card shuffle

Неа. В этом варианте получается, что казино знает все карты.

Такие протоколы известны уже давно под названием Mental Poker. И там не нужен магазин как отдельная сторона. Казино вполне может самостоятельно зашифровать карты и сделать доказуемую тасовку с нулевым разглашением (zero knowledge proof shuffle). Далее карты в раздаче раскрываются каждому из игроков с помощью re-encryption mixnet, чтобы никто до окончания игры не знал карт друг друга.

Server seed с commit-reveal.

В предложении только предлог на языке статьи. Круто, - это я вам как лингвистик лингвистику говорю.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации