Проблема децентрализованного расчёта результатов

  • Создатель форума

    Итак, проблема децентрализованного рынка прогнозов: матч закончился, но с каким именно результатом?
    Кто-то должен результат сообщить, чтобы верно угадавшие получили выигрыш. Кто?

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

    Схема неплохая, но есть одно важное "но": если рынок прогнозов децентрализованный, то кто угодно может рынок создать, на какое угодно событие. Совершенно неочевидно, что создающий рынок знает об имеющихся оракулах или доверяет им. Более того, созданный рынок может быть неизвестен оракулам или содержать какие-то дополнительные условия, которые оракулам неизвестны. Ну и опять же, что это за децентрализация такая, когда кто-то (кто?) должен выбрать кого-то (кого?) для такой важной задачи, как расчёт результатов. То есть идея рабочая, но даже близко неидеальная.

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

    Вот такие вот дела, какие мысли, что же делать, как обеспечить расчет результатов?


  • Создатель рынка указывает исход, а какое-то количество проигравших должны этот исход подтвердить. Осталось придумать какое количество и как их замотивировать это сделать)

  • Создатель форума

    Так-то "количество" в блокчейне не работает, любой может сколько угодно кошельков нарегать, в особенности злоумышленник. Можно специально поставить нужное (любое) количество на проигрыш, всё равно их деньги тебе достаются при нужном результате.
    Ещё предложения, получше?


  • Все методы, которые вы описали, не работают и публикой приняты не будут. Для начала, почитайте как эту проблему решают:

    1. Augur
    2. Арагон через присяжных: https://anj.aragon.org/
    3. Децентрализованная "страховая": https://nexusmutual.io/
  • Создатель форума

    Я же описал две возможных схемы и показал, что они не работают.
    Нужны были не ссылки, а именно методы, чтобы работали и были приняты публикой.

    По вашим ссылкам решения проблемы нет: аугур и арагон продвигают странную схему "кто-то покупает наши фантики и мы начинаем ему верить, потому что он купил фантики". И, как показывает общий статус этих проектов, дураков покупать фантики, а потом ещё что-то делать (вводить результаты или принимать решения) нет.
    Децентрализованная страховая вообще жесть "давайте эксперты купят наших фантиков и этими фантиками ответят, что смарт-контракт хороший, а владелец смарт-контракта тоже купит фантиков и купит страховку. Если контракт упадёт - владелец в плюсе, если не упадёт - эксперты в плюсе. Про страхование здоровья или имущества (где куча незакрытых вопросов) поговорим в другой раз".

    А решения простого, на самом деле нет.

    Я остановился на варианте, когда мы выводим рынок "в лайв", где можно менять свои предпочтения и неизбежно участники рынка выберут сыгравший исход. Может появиться злоумышленник, который ставит на другой исход, в итоге получается "слово против слова", мы не знаем кому верить. Аугур в этом случае предлагает "форкать" сеть, не решая проблему, перекладывая её на пользователей.

    Я подумал, что лучше будет предоставить администратору, то есть какому-то заранее определенному аккаунту, только в случае неопределенности, принимать решение на своё усмотрение. Разрубать гордиев узел. И даже сама возможность такого решения очень сильно влияет на злоумышленников, глупо вкладывать большие ресурсы в манипулирование рынком, когда при малейшем сопротивлении (а оно скорее всего будет) всё равно в итоге придёт администратор и ты потеряешь деньги. То есть администратор есть, но никогда не действует, и этого достаточно для стабильности системы.

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

    Возможно, в более сложных, многоступенчатых системах, можно добиться консенсуса проще, но для дублирования функционала оракулов в смарт-контракте это перебор. Поэтому моё решение мне кажется подходящим - результатом матча признается исход, выбранный подавляющим (99%+) большинством ставок, но в случае недостижения консенсуса в течение долгого времени, результат вводит администратор.

  • Создатель форума

    Правда администратор может оказаться злоумышленником... Хотя, если администратор - злоумышленник, то проектом вообще ни под каким соусом пользоваться нельзя, раз вы пользуетесь - то вы администратору/разработчику доверяете...
    В общем такое у меня решение, не очень хорошее, но зато дешево и просто, причем не хуже альтернатив, такое же плохое.


  • А что значит "исход, выбранный подавляющим (99%+) большинством ставок"? Если 60% поставили на Надаля, а 40% на Федерера? Или в лайве все должны ставить до последнего гейма?


  • Пользователь @dimok написал в Проблема децентрализованного расчёта результатов:

    А решения простого, на самом деле нет.

    Ссылки я вам дал, как раз чтобы вы это поняли, изучив опыт тех, кто над этим уже бился.

  • Создатель форума

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

    • Вводить централизованного организатора, который если что всем надаёт по шее.
    • Разрешать рассчитывать рынок его создателю, тогда нужна система рейтинга для создателей рынков, плюс есть возможность абуза. Но децентрализация, хорошо ведь.
    • Оставлять расчет на волю игроков, давая возможность периодически абузить его.

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


  • Рассчитывает создатель, но делавшие ставки могут не согласится с расчетом, тогда подключается организатор и разруливает ситуацию.


  • Пользователь @dimok написал в Проблема децентрализованного расчёта результатов:

    Правда администратор может оказаться злоумышленником... Хотя, если администратор - злоумышленник, то проектом вообще ни под каким соусом пользоваться нельзя, раз вы пользуетесь - то вы администратору/разработчику доверяете...
    В общем такое у меня решение, не очень хорошее, но зато дешево и просто, причем не хуже альтернатив, такое же плохое.

    Если есть администратор (в любом виде), который ещё и что-то решать будет/может - это уже не децентрализация.

    Хотя ... тот же вопрос можно, например, и самому эфиру задать ... но всех вроде как устраивает... Так что со ставками прокатит, чё нет то.


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


  • Вообще единственным "правильным" решением в рамках децентрализации представляется через ноды-валидаторы.
    И чтобы не изобретать велосипед, для консенсуса, скажем необходимо 51%.

    Другой вопрос, как это будет происходить, и достаточна ли будет мотивация для нод.
    Вот как пример можно глянуть https://www.wagerr.com/about , там примерно так это и работает, оно там называется "Oracle Masternodes".


  • "схемы полностью децентрализованные, где администратора нет, то они всегда будут подвержены проблеме "лидера", когда всё равно надо как-то ранжировать пользователей"

    • не надо никого ранжировать, есть равнозначные ноды-валидаторы, которые достигают консенсуса

    "в случае недостижения консенсуса"

    • такого не получится, это основная задача нод.

    "Совершенно неочевидно, что создающий рынок знает об имеющихся оракулах или доверяет им"

    • это его личные половые проблемы. есть система, которая (предположительно) работает. (Никого же не волнует что можно "недоверять" нодам биткоина? или то что вашим эфиром можно управлять централизованно?)

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

    • значит возложить на создающего обязанность чётко формулировать условия.
      с одной стороны это выглядит некоторым неудобством, а с другой стороны - а как иначе? (так можно создавать рынки типа "Спартачёк затащит" ... кто будет потом разбирать что за Спартачёк и что он куда затащит?)

  • какая мотивация у этих "нод-валидаторов" будет расчитывать рынка где мало поставлено? Кто будет платить за это?)

  • Создатель форума

    Пользователь @takomaschida написал в Проблема децентрализованного расчёта результатов:

    Вот как пример можно глянуть https://www.wagerr.com/about , там примерно так это и работает, оно там называется "Oracle Masternodes".

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

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

    Отсюда вывод - тактика "мастернод" для расчета децентрализованного букмекера нежизнеспособна.


  • Верно конечно.
    Тут вопрос - чего мы хотим добиться.
    Если упор именно на децентрализацию - вот приходится решать эти нерешаемые вопросы. (про мотивацию, ликвидность и т.п.)
    Может поэтому и нет "конкурентов", т.к. это всё реально нежизнеспособно.

    А если вопрос - как это сделать рабочим ... тут как в анекдоте "либо снимите крестик, либо наденьте трусики". т.е. надо слово "децентрализация" убирать.
    Будет что-то типа Tron, частная централизованно управляемая лавочка, мимикрирующая под блокчейн.


  • Пользователь @kava написал в Проблема децентрализованного расчёта результатов:

    какая мотивация у этих "нод-валидаторов" будет расчитывать рынка где мало поставлено? Кто будет платить за это?)

    Таки да, "вопрос конечно интресный", из той же серии "откуда брать ликвидность" ... кто-бы знал...

  • Создатель форума

    Децентрализация - это не самоцель. Цель - популярность продукта и устойчивость к манипуляциям нехороших личностей.

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

  • Создатель форума

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

    То есть задача "устойчивость к манипуляциям" неразрешима в принципе в децентрализованной сфере, при должном желании манипулировать можно любой системой (атака 51% в биткоине тоже возможна!)

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

    Допустим если игроки не достигли консенсуса, мы передаем право голоса "валидаторам" (оставим за рамками обсуждения вопрос об их мотивации). Однако злоумышленник точно так же может предварительно подготовиться, чтобы стать валидатором и проголосвать за нужный ему исход. Снова возникает неопределенность.

    Дальше мы можем попросить разрешить неопределенность "администратора"... Который тоже может быть злоумышленником 🙂 В итоге задача неразрешима.

    А раз задача неразрешима, то почему бы не предположить, что злоумышленник всё равно своего добьётся и оставить только первый уровень консенсуса (выигрышным считается исход, на который в лайве, в итоге, поставило большинство игроков) и просто снижать требуемый уровень консенсуса по времени. Например через 5 минут после окончания матча рассчитывается только исход с 99% консенсусом. Через час уже достаточно 95%, через сутки достаточно 70%, через двое достаточно 50%, через трое - простого большинства?

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

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

    Некошерно, конечно, но остальные варианты хуже устойчивы к манипуляциям, а тут их быть не должно в принципе.


  • А каким образом подразумевается снижение консенсуса по времени (и вообще его изменение) ?

    • само по себе соотношение не будет (не должно) меняться от времени

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


  • И ещё, чтобы "угроза администратора" стала реально угрозой, надо чтобы было чем угрожать.
    От того что меня "поругают" ни тепло ни холодно.
    Голосующие должны чем-то отвечать за возможность голосовать.
    Что опять возвращает нас к идее валидаторов.

  • Создатель форума

    Вот тут написано, как идёт лайв в тотализаторе.
    https://wewin.ru/topic/240/

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

    А раз у всех есть мотивация, то все будут это делать и в конце матча большинство денег окажется на исходе, который реально выиграл. И мы говорим - так, матч вроде закончился (по времени), исход вроде бы вот такой, выбрало его 99% ставок, всё, записываем как итоговый, рассчитывем.

    Но что, если кто-то "забыл" крупную ставку и 99% не получается собрать? Или злоумышленник внаглую поставил на другой исход? Тогда не будет 99%, что же делать? А делать можно так, что в течение часа после матча требуем 99%, через пару часов - 95 и так далее, какая-то функция от времени. Ну, для того, чтобы люди увидели, что тут принимают (и даже выплачивают!) ставки на завершенный исход, принесли на него свои деньги и помогли достичь консенсуса.

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

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