Оракул и разрешение: как объявляется исход
Это статья про механизм разрешения — таймлайн и правила, общие для всех участников. Про обязанности и риски самого оракула — отдельная статья Оракул; здесь мы смотрим, как рынок доходит от закрытия ставок до выплат.
Главное в двух абзацах
Разрешить рынок можно только после закрытия ставок (betting_expiration) — пока идут ставки, объявлять исход бессмысленно. У рынка есть дедлайн result_expiration, к которому оракул обязан объявить результат (pm_resolve_market). На резолве выплаты угадавшим начисляются автоматически (виртуальная pm_payout), проигравшие исходы обнуляются, их деньги идут в призовой пот победителей.
Если исхода нет — событие отменено, источник пропал, ничья без победителя — рынок закрывается как no-contest (pm_no_contest): ставки возвращаются, никто не выигрывает и не проигрывает. А если оракул промолчал до дедлайна и грейса — рынок гибнет как missed-resolution (оракула штрафуют). Есть и досрочный путь: рынки с allow_early_resolution можно закрыть раньше, если исход уже определённо известен.
Таймлайн рынка
1. Открыт. Идут ставки, цена плывёт по кривой. Резолв запрещён.
2. Закрытие ставок (betting_expiration). Приём ставок прекращён. Начинается окно, в котором оракул может (и должен) объявить исход.
3. Разрешение (pm_resolve_market). Оракул объявляет победивший исход. Нода делит пул: выплаты автоматические, забирать вручную не нужно. За резолв оракулу — его fee (ограничен медиан-параметром).
4. Окно спора. После объявления — grace-период (pm_dispute_grace_sec), в котором исход можно оспорить (см. Диспуты). До финализации спора выплаты не окончательны.
5. Сеттлмент. По подтверждённому исходу проходит расчёт: ликвидность LP возвращается (principal-protected), призовой пот распределён.
Особые пути
Ранний резолв (allow_early_resolution). Если рынок создан с этим флагом и исход уже известен наверняка, оракул закрывает досрочно. При этом result_expiration сдвигается к моменту резолва (окно спора схлопывается к «сейчас + grace»), но полный pm_dispute_grace_sec от анонса диспутерам сохраняется. Поздний резолв (после result_expiration) окно, наоборот, не расширяет.
No-contest (pm_no_contest). Нет исхода — рынок отменяется, ставки возвращаются. Это не штраф участникам: их деньги не «сгорают» из-за того, что источник промолчал. Оракул обязан сделать no-contest вовремя, если результата не будет.
Missed-resolution (void по дедлайну). Оракул не объявил исход и не сделал no-contest до result_expiration + grace → крон воидит рынок, оракула слэшат. Важно: void срабатывает только после result_expiration + pm_dispute_grace_sec (тот же cutoff, что settle-sweep) — чтобы у оракула было реальное окно резолва, а не гонка с дедлайном (это чинил фикс reachability, иначе fixed-deadline рынок без early-флага было невозможно резолвить).
Что нужно понимать
- Резолв — только после закрытия ставок. Раньше нельзя; ранний путь — отдельный флаг рынка.
- Выплаты автоматические. Ни «claim», ни кнопки: выигрыш и возвраты приходят на резолве/отмене.
- Молчание наказуемо. Нет исхода → no-contest вовремя. Просто «не сделать ничего» = missed-resolution и слэш оракула.
- Исход не окончателен до конца грейса. В окне спора выплаты могут пересчитаться.
- Плечо резолва не ждёт. Плечевые позиции закрываются по цене на
betting_expiration, независимо от вердикта оракула — см. Плечевой трейдер.
Роли и связки
- Оракул — кто объявляет исход и чем отвечает.
- Диспуты — как оспорить объявленный результат.
- Беттер — как выглядит резолв со стороны ставки.
- Спецификация — формальные дедлайны и cutoff-ы.