Skip to content

Жизненный цикл Round (раунда)

Каждый Round длится ровно 60 секунд. Время указывается в протокольном UTC.

Четыре фазы

ФазаДлительностьЧто происходит
Announcet₀ → t₀+5сПубликуется вопрос q_t. Вопрос выбирается из резервуара по формуле `seed_t mod
Committ₀+5с → t₀+35сКаждый участник отправляет commit c_i = HMAC-SHA256(s_i ‖ round_t, b_i), где b_i ∈ {0, 1} — выбранный ответ, а s_i — 128-битный секрет пользователя. Commit скрывает ответ до фазы Reveal.
Revealt₀+35с → t₀+50сУчастники раскрывают (s_i, b_i). Round Engine проверяет каждый commit. Участники, не выполнившие Reveal, исключаются.
Settlet₀+50с → t₀+60сВычисляется большинство `M = argmax_v

Зачем нужны две фазы (Commit + Reveal)?

Наивный дизайн, позволяющий игрокам отправлять b_i в открытом виде, приводит к трём проблемам:

  1. Стадное поведение. Игроки, голосующие позже, видят текущую статистику и присоединяются к большинству.
  2. Сговор ботов. Скоординированная сеть ботов может дождаться публичного сигнала и захватить большинство.
  3. Утечка вопроса. Открытые Commit позволяют злоумышленнику наблюдать частичные ответы и выводить истинное распределение мнений до голосования.

Криптографический протокол Commit / Reveal устраняет все три проблемы. Во время Commit никто не может увидеть ответы других участников. Во время Reveal каждый commit публично проверяется по раскрытым (s_i, b_i).

Подробная спецификация приведена в разделе Криптографический протокол.

Что произойдёт, если я не выполню Reveal?

Вы исключаетесь из этого Round и не получаете Round POP (баллы). Ваш commit всё равно записывается в цепочку (как часть Merkle Root) для аудита. Ваш Reputation Score (рейтинг репутации) получает небольшое байесовское обновление в сторону «ненадёжный участник».

Что произойдёт при задержках сети?

Round Engine предоставляет 2-секундный льготный период после каждой фазы для медленных клиентов. За его пределами Commit и Reveal молча отклоняются.

Как выбирается вопрос?

Question Oracle (см. Oracle & Randomness) поддерживает резервуар из более чем 100 000 предварительно сгенерированных и откалиброванных вопросов. Каждый вопрос проходит через:

  1. Генерацию ансамблем из нескольких LLM.
  2. Устранение предвзятости для удаления демографических и языковых искажений.
  3. Калибровочный претест на синтетической популяции для проверки ожидаемого распределения ответов ~50/50. Вопросы с перекошенными ожидаемыми ответами отбраковываются.

Round seed seed_t детерминированно выбирает из этого резервуара, поэтому выбор непредсказуем, но полностью проверяем.

Могут ли Round заканчиваться вничью?

Математически — да (ровно 50/50). Когда |{b_i=0}| = |{b_i=1}|, Prize Pool переходит в Round t+1, вопрос перерисовывается, и обе стороны выживают.

Built on TON.