Skip to content

Скрытые ставки: commit-reveal и батчи

Иногда важно, чтобы вашу ставку не видели заранее — чтобы её не скопировали и не сыграли против неё. Для этого есть двухфазная скрытая ставка: сначала вы «запечатываете» её (commit), потом раскрываете (reveal). Разберём, зачем это и что будет, если не раскрыть.

Главное в двух абзацах

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

За приватность есть ответственность: если вы не раскрыли ставку в окне, срабатывает форфейт — часть эскроу (штраф) уходит в forfeit_pool рынка (победителям), остальное возвращается. Скрытые ставки работают только на рынках, где включён батч-режим (allow_batch), и требуют минимального эскроу (pm_min_batch_bet).

Как это работает по шагам

Commit. pm_commit_bet: вносите эскроу (≥ pm_min_batch_bet, порядка 1 VIZ), коммитите ставку в закрытом виде. В цепи видно, что вы что-то поставили, но не видно исход/сумму. Эскроу списан.

Окно раскрытия. Даётся ограниченное окно (эпоха + pm_reveal_window_blocks, порядка минут). В нём вы обязаны раскрыть.

Reveal. pm_reveal_bet: показываете исход и сумму, ставка встаёт в пул по текущей цене — дальше как обычная ставка. Чтобы раскрыть, клиенту нужен commit_id вашего коммита (get_account_commits).

Не раскрыл → форфейт. Пропустили окно — автоматический форфейт: штраф (доля эскроу, задаётся no_reveal_fee_percent) → forfeit_pool рынка, остаток возвращается. Это цена за то, что вы заняли слот и не завершили ставку.

Зачем это нужно

  • Приватность намерения. Крупный игрок не хочет, чтобы его ставку скопировали или сыграли против неё до того, как она встанет в пул.
  • Анти-снайпинг. Скрытая фаза мешает подсматривать и опережать чужие ставки.
  • Батчи. Коммиты собираются и раскрываются пачками — режим для более честного и приватного набора ставок.

Что нужно понимать

  • Две фазы, два действия. Commit и reveal — разные операции; между ними окно. Забыли раскрыть — потеряли штраф.
  • Раскрытие обязательно. Форфейт — не баг, а стимул завершать начатое; штраф идёт победителям через forfeit_pool.
  • Только на allow_batch-рынках. Не всякий рынок поддерживает скрытые ставки.
  • Нужен commit_id. Для reveal клиент тянет ваши открытые коммиты (get_account_commits) — без него раскрыть нечего.
  • Kill-switch. Весь commit-reveal — подсистема с медиан-переключателем (pm_commit_reveal_enabled); валидаторы могут её отключить без хардфорка.

Связки