Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
a3e370a
feat(pm plan): add opt-in batch and commit-reveal betting modes for f…
On1x Jun 16, 2026
49537c8
feat(pm docs): add Prediction Market params (HF14) and leverage risk-…
On1x Jun 21, 2026
b8f5668
docs(pm-workflow): add detailed prediction market workflow documentat…
On1x Jun 21, 2026
d5d6139
chore(thirdparty): update fc submodule to latest commit
On1x Jun 21, 2026
6f35a1e
chore(deps): add mermaid and related plugins to devDependencies
On1x Jun 21, 2026
5129103
feat(hardfork): add support for hardfork 14 in prediction markets
On1x Jun 21, 2026
c270e0a
feat(pm): integrate Prediction Markets core logic and HF14 support
On1x Jun 21, 2026
7c7847d
feat(prediction_market_api): add prediction market plugin with extens…
On1x Jun 21, 2026
aede61e
feat(snapshot): add import support for HF14 Prediction Market objects
On1x Jun 21, 2026
adaf945
feat(wallet): add HF14 prediction market API support
On1x Jun 21, 2026
4b3d7d5
feat(vizd): add prediction_market_api plugin registration
On1x Jun 21, 2026
7155a0c
test(pm): add comprehensive prediction-market lifecycle integration t…
On1x Jun 21, 2026
3ccc9e9
feat(prediction-markets): add HF14 prediction markets and v5 chain pr…
On1x Jun 21, 2026
7910da4
docs(prediction-markets): add prediction market API plugin documentation
On1x Jun 21, 2026
4657a13
chore(chainbase): update submodule to latest commit
On1x Jul 2, 2026
bb80e53
feat(prediction-markets): extend HF14 with oracle rebuttals, ban life…
On1x Jul 2, 2026
28b32b6
Merge branch 'master' into pm
On1x Jul 2, 2026
91021cf
fix(wallet): return fc::variant from prediction_market_api read pass-…
On1x Jul 2, 2026
a417229
fix(wallet): drop dead prediction_market_api plugin include from remo…
On1x Jul 2, 2026
70ea612
feat(prediction-markets): add oracle accept window and lazy-pool min …
On1x Jul 2, 2026
c9f5ddf
docs(prediction-markets): document accept window and lazy-pool min LP…
On1x Jul 2, 2026
73af78c
docs(integration): clarify fee units and remove permille from protocol
On1x Jul 2, 2026
ebd2dfd
fix(prediction-markets): resolve ternary type mismatch on accept_dead…
On1x Jul 2, 2026
3eebfd6
fix(account_history): mark impacted accounts for prediction-market op…
On1x Jul 5, 2026
5479b9a
refactor(prediction-market): move market metadata off-chain (prunable…
On1x Jul 5, 2026
31e8aab
feat(prediction-market): garbage-collect finalized markets after a fi…
On1x Jul 5, 2026
ff25633
feat(prediction-market): GC every terminal market, not just resolved …
On1x Jul 5, 2026
6ea7c9e
test(prediction-market): cover all five terminal-market GC paths
On1x Jul 5, 2026
d8a48b3
feat(validator): add disable-minority-fork-detection for single-opera…
On1x Jul 6, 2026
c13e0e2
docs(validator): add disable-minority-fork-detection option for singl…
On1x Jul 6, 2026
eae1a42
pm-api: index market title/image/condition_id in metadata plugin
On1x Jul 6, 2026
4d018cc
pm_api: enrich market read APIs with parsed metadata (title/image)
On1x Jul 6, 2026
52acb25
pm_api: add list_markets_awaiting_resolution(oracle, from, limit)
On1x Jul 9, 2026
02a5cbd
pm_api: index short resolution rules (metadata.description) into mark…
On1x Jul 10, 2026
a812369
pm_api: newest order for list_markets + one-shot DLT meta backfill
On1x Jul 10, 2026
0b1354e
pm_api: fix meta backfill op->market mapping (identity key, not posit…
On1x Jul 10, 2026
c2b95e8
pm: open-ended markets (betting_expiration=0, open until oracle resol…
On1x Jul 10, 2026
f3118fb
pm: leverage funding rate (perpetual carry cost on the loan)
On1x Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .qoder/docs/onix-protocol-paper-ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ $$W = S_{\text{lose}} - f_{\text{oracle}} - f_{\text{creator}} - f_{\text{liq}}$

$$q_0 \xrightarrow{\text{оракул принимает}} q_1 \xrightarrow{t \geq t_{\text{bet}}} q_2 \xrightarrow{\text{оракул разрешает}} q_3 \xrightarrow{\text{льготный период}} \text{выплачено}$$

с путём отклонения $q_0 \xrightarrow{\text{оракул отклоняет}} q_{-1}$ (удалён, ликвидность возвращена).
Из $q_0$ ведут два пути в терминальное удалённое состояние $q_{-1}$, оба возвращают начальную ликвидность создателю (антиспам-комиссия за создание, уже уплаченная в фонд DAO при создании, *не* возвращается): явное отклонение $q_0 \xrightarrow{\text{оракул отклоняет}} q_{-1}$ и *таймаут* $q_0 \xrightarrow{t \geq t_0 + \tau_{\text{accept}}} q_{-1}$, срабатывающий поблочным кроном, когда оракул не принимает и не отклоняет рынок в течение заданного управлением окна акцепта $\tau_{\text{accept}}$ (по умолчанию один час). Таймаут ограничивает, как долго неотвечающий оракул может удерживать начальный капитал создателя.

---

Expand Down Expand Up @@ -304,6 +304,8 @@ $$a_{\text{alloc}} = B_{\text{free}} \cdot \alpha / 100$$

при условиях $a_{\text{alloc}} \geq a_{\min}$ и $B_{\text{alloc}} + a_{\text{alloc}} \leq B_{\text{total}} \cdot \alpha_{\max} / 100$, где $\alpha$ — процент размещения на рынок, а $\alpha_{\max}$ — потолок суммарного размещения.

Размещение дополнительно ограничено **порогом вознаграждения**: пул предоставляет капитал рынку, только если его LP-комиссия $f_{\text{liq}}$ достигает управляемого минимума $f_{\text{liq}}^{\min}$ (по умолчанию $2\%$). Рынок, предлагающий LP меньше этого, не окупает альтернативные издержки пула, поэтому пул размещает ноль, и единственная глубина рынка — собственный сид создателя. Это делает LP-комиссию явной ценой, которую рынок платит за автоматическую пуловую ликвидность, и не даёт пулу субсидировать рынки, настроенные направлять всю комиссионную выручку мимо поставщиков ликвидности.

Формула размещения включает поправки на качество оракула:

$$a_{\text{alloc}} = B_{\text{free}} \cdot \frac{\alpha}{100} \cdot (1 - \beta)^{n_o} \cdot (1 - \gamma)^{f_o}$$
Expand Down Expand Up @@ -397,7 +399,7 @@ $$\Omega = \lambda m \,(1 + r),$$

Эти две комиссии входят в систему в разных точках, и их нельзя смешивать. **Процентная комиссия** $f_{\text{oracle}}$ удерживается из $S_{\text{lose}}$ при разрешении и фигурирует в денежном потоке Теоремы 1 (§5.2). **Фиксированная комиссия** $f_{\text{fixed}}$ — это прямой перевод создатель→оракул, выполняемый при *принятии* рынка, до каких-либо ставок; поэтому она *не* является частью денежного потока ставок/LP — она не добавляется к начальной ликвидности $L$ и не черпается из $S_{\text{lose}}$, а значит не появляется в Теореме 1. (Она опущена в векторе комиссий $\boldsymbol{\theta}$ из §3.3 по той же причине: $\boldsymbol{\theta}$ собирает только процентные комиссии на момент разрешения, финансируемые проигравшими.) Для рынков с самооракулом перевод не происходит и $f_{\text{fixed}} = 0$.

Процесс принятия оракулом реализует механизм «оферта–котировка»: создатель публикует потолки комиссий, а оракул фиксирует свои фактические условия (ограниченные как потолком создателя, так и потолком управления) при принятии.
Процесс принятия оракулом реализует механизм «оферта–котировка»: создатель публикует потолки комиссий, а оракул фиксирует свои фактические условия (ограниченные как потолком создателя, так и потолком управления) при принятии. Принятие ограничено во времени окном $\tau_{\text{accept}}$ (§3.4): рынок, оставшийся в ожидании дольше этого срока, авто-аннулируется поблочным кроном, который возвращает начальную ликвидность создателя, удерживая антиспам-комиссию за создание, — так неотвечающий оракул не может бесконечно замораживать сид.

### 7.2 Двухрежимная система споров

Expand Down
Binary file modified .qoder/docs/onix-protocol-paper-ru.pdf
Binary file not shown.
6 changes: 4 additions & 2 deletions .qoder/docs/onix-protocol-paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ The lifecycle of $\mathcal{M}$ follows a finite state machine:

$$q_0 \xrightarrow{\text{oracle accepts}} q_1 \xrightarrow{t \geq t_{\text{bet}}} q_2 \xrightarrow{\text{oracle resolves}} q_3 \xrightarrow{\text{grace period}} \text{paid}$$

with a rejection path $q_0 \xrightarrow{\text{oracle rejects}} q_{-1}$ (deleted, liquidity returned).
Two paths lead out of $q_0$ back to the terminal deleted state $q_{-1}$, both returning the seed liquidity to the creator (the anti-spam creation fee, already paid to the DAO fund at creation, is *not* refunded): an explicit rejection $q_0 \xrightarrow{\text{oracle rejects}} q_{-1}$, and a *timeout* $q_0 \xrightarrow{t \geq t_0 + \tau_{\text{accept}}} q_{-1}$ triggered by the per-block cron when the oracle neither accepts nor rejects within the governance-defined acceptance window $\tau_{\text{accept}}$ (default one hour). The timeout bounds how long an unresponsive oracle can hold a creator's seed capital hostage.

---

Expand Down Expand Up @@ -302,6 +302,8 @@ $$a_{\text{alloc}} = B_{\text{free}} \cdot \alpha / 100$$

subject to $a_{\text{alloc}} \geq a_{\min}$ and $B_{\text{alloc}} + a_{\text{alloc}} \leq B_{\text{total}} \cdot \alpha_{\max} / 100$, where $\alpha$ is the per-market allocation percentage and $\alpha_{\max}$ is the maximum total allocation cap.

Allocation is further gated by a **reward floor**: the pool provides capital to a market only if its LP fee $f_{\text{liq}}$ meets a governance minimum $f_{\text{liq}}^{\min}$ (default $2\%$). A market that offers LPs less than this earns nothing worth the pool's opportunity cost, so the pool allocates zero and the market's only depth is the creator's own seed. This makes the LP fee an explicit price the market pays for automated pool liquidity, and prevents the pool from subsidizing markets configured to route all fee revenue away from liquidity providers.

The allocation formula includes oracle quality adjustments:

$$a_{\text{alloc}} = B_{\text{free}} \cdot \frac{\alpha}{100} \cdot (1 - \beta)^{n_o} \cdot (1 - \gamma)^{f_o}$$
Expand Down Expand Up @@ -395,7 +397,7 @@ Each oracle $o$ must maintain an insurance bond $I_o \geq I_{\min}$. The bond cr

These two fees enter the system at different points and must not be conflated. The **percentage fee** $f_{\text{oracle}}$ is deducted from $S_{\text{lose}}$ at resolution and appears in the money flow of Theorem 1 (§5.2). The **fixed fee** $f_{\text{fixed}}$ is a direct creator→oracle transfer executed at market *acceptance*, before any betting; it is therefore *not* part of the betting/LP money flow — it neither adds to the seed liquidity $L$ nor draws from $S_{\text{lose}}$, and so does not appear in Theorem 1. (It is omitted from the fee vector $\boldsymbol{\theta}$ of §3.3 for the same reason: $\boldsymbol{\theta}$ collects only the resolution-time, losers-funded percentage fees.) For self-oracle markets no transfer occurs and $f_{\text{fixed}} = 0$.

The oracle acceptance flow implements an offer-quote mechanism: the creator publishes fee ceilings, and the oracle freezes its actual terms (bounded by both the creator ceiling and a governance cap) at acceptance.
The oracle acceptance flow implements an offer-quote mechanism: the creator publishes fee ceilings, and the oracle freezes its actual terms (bounded by both the creator ceiling and a governance cap) at acceptance. Acceptance is time-bounded by the window $\tau_{\text{accept}}$ (§3.4): a market left pending beyond it is auto-expired by the per-block cron, which refunds the creator's seed liquidity while retaining the anti-spam creation fee — so an unresponsive oracle cannot indefinitely freeze the seed.

### 7.2 Two-Mode Dispute System

Expand Down
Binary file modified .qoder/docs/onix-protocol-paper.pdf
Binary file not shown.
Loading