Оракул: как объявлять исход и отвечать за него
Оракул — это аккаунт, который говорит цепи, чем закончилось событие. От него зависит, кому уйдёт призовой пул. Поэтому оракул на VIZ не просто «нажимает кнопку»: он несёт денежный залог и репутацию, и отвечает ими за честность и своевременность.
Главное в двух абзацах
Вы объявляете победивший исход операцией pm_resolve_market (только после закрытия ставок). Выплаты угадавшим начисляются автоматически. Чтобы вам доверяли рынки и деньги, вы держите insurance — залог в VIZ, привязанный к вашему оракул-аккаунту. Если insurance проседает ниже risk-floor относительно объёма обслуживаемых ставок, нода скрывает ваши рынки из листингов — механизм защищает беттеров от недокапитализированного оракула.
За ошибки и молчание вас штрафуют из накопленной репутации и залога: неверный резолв, оспоренный и отменённый диспутом; пропуск дедлайна (result_expiration), когда рынок умирает как missed-resolution. Ваша репутация (reliability_score, 0..10000 bp) складывается из точности, вердиктов по спорам, отзывчивости и пунктуальности — и видна всем при выборе оракула.
Что вы делаете по шагам
Готовитесь. Заводите insurance на оракул-аккаунт (pm_oracle_update) — держите его с запасом над risk-floor, иначе рынки скроют. Правило floor: рынок виден, если insurance ≥ порога и ≥ кратного суммы ставок под вашим управлением.
Ждёте закрытия ставок. Резолвить можно только после betting_expiration. Раньше — нельзя (нет смысла объявлять исход, пока ставки идут). Если рынок создан с allow_early_resolution и исход уже определённо известен, можно закрыть досрочно — окно спора при этом схлопывается к моменту резолва.
Объявляете исход. pm_resolve_market с победившим исходом. Нода делит пул: угадавшие получают выплаты автоматически (виртуальная pm_payout), проигравшие исходы обнуляются. За резолв вам начисляется oracle fee (ограничен медиан-параметром сети, максимум pm_max_oracle_fee_percent).
Если исхода нет. Событие отменено, источник пропал, ничья без победителя → вместо резолва объявляете no-contest (pm_no_contest): ставки возвращаются, никто не выигрывает и не проигрывает. Это честный выход, а не штраф — но делать его надо вовремя, до дедлайна.
Проходите окно спора. После объявления беттеры могут оспорить исход в grace-периоде (pm_dispute_create). Если диспут признаёт вашу правоту — вы получаете подтверждение репутации; если ваш резолв признан неверным — штраф. Подробно — в статье про диспуты.
За что штрафуют
- Неверный резолв. Объявили не тот исход, диспут это подтвердил → штраф из залога/репутации, выплаты пересчитываются.
- Пропуск дедлайна. Не объявили исход до
result_expiration→ рынок гибнет как missed-resolution, вас слэшат. Не молчите: если источник не дал результат — делайте no-contest. - Систематическая медлительность. Поздние (но сделанные) резолвы роняют фактор пунктуальности в
reliability_score. Опоздание больше не равно своевременности.
Что нужно понимать оракулу
- Insurance — это доверие в цифрах. Держите его выше floor с запасом; он проседает от накопленного слэша и растёт с обслуживаемым объёмом. Недофинансированный оракул исчезает из листингов — рынки будто «пропадают».
- Репутация публична и составная.
reliability_score= точность (accuracy) + вердикты по спорам + отзывчивость + пунктуальность − штрафы (decaying penalty-stamps) − баны, со сжатием к средней при малом числе резолвов. В интерфейсе показывается как процент (bp/100). - Резолв необратим по эффекту, но оспорим. Выплаты идут сразу, но окно спора может их отменить и наказать вас. Ошиблись — честнее самому инициировать корректировку, чем ждать слэша.
- Своевременность = деньги. No-contest вовремя лучше, чем молчание до дедлайна. Автоматизируйте резолв, если обслуживаете много рынков.
Роли рядом с вами
- Создатель рынка — выбирает вас оракулом и задаёт окно спора.
- Беттер — доверяет вам исход и может оспорить его.
- Диспутер — участник спора, который проверяет ваш вердикт.
Дальше по теме: «Диспуты» (как оспаривается исход и чем это грозит оракулу), «Создатель рынка» (кто и как вас назначает), «Оракул и разрешение» (дедлайны, missed-resolution, no-contest в деталях).