Skip to content

预言机与裁定:结果如何被宣布

本文讲的是裁定的机制 —— 时间线,以及对所有参与者通用的规则。至于预言机本身的职责与风险,另有一篇文章 预言机;这里我们看的是一个市场如何从下注结束走到赔付。

两段话讲清

一个市场只能在下注结束之后betting_expiration)被裁定 —— 只要下注还在进来,宣布结果就没有意义。市场有一个 result_expiration 截止时点,预言机必须在此之前宣布结果(pm_resolve_market)。裁定时,对判断正确者的赔付会自动入账(虚拟操作 pm_payout),落败结果被清零,其资金进入赢家的奖池。

如果没有结果 —— 事件被取消、来源消失、平局且无赢家 —— 市场作为 no-contestpm_no_contest)关闭:下注被退款,无人赢也无人输。而如果预言机在截止时点和宽限期之后仍然沉默,市场则作为错过裁定(missed-resolution)死去(预言机受罚)。此外还有一条提前的路径:带 allow_early_resolution 的市场若结果已经确定无疑,可以更早关闭。

市场时间线

1. 开放。 下注在进来,价格沿曲线浮动。禁止裁定。

2. 下注结束(betting_expiration)。 不再接受下注。开启预言机可以(且必须)宣布结果的窗口。

3. 裁定(pm_resolve_market)。 预言机宣布获胜结果。节点拆分彩池:赔付是自动的,没有什么需要手动领取。因这次裁定,预言机取得自己的费用(受一个中位数参数上限约束)。

4. 争议窗口。 宣布之后是宽限期(pm_dispute_grace_sec),期间结果可被质疑(见争议)。在争议终结之前,赔付并非最终。

5. 结算。 按已确认的结果结算:LP 流动性被返还(本金受保障),奖池被分配。

特殊路径

提前裁定(allow_early_resolution)。 若市场创建时带了这个开关,且结果已经确定无疑,预言机可提前关闭它。此时 result_expiration 会移到裁定发生的那一刻(争议窗口收缩为「现在 + 宽限期」),但提出争议者仍然保有自宣布起完整的 pm_dispute_grace_sec。而迟到的裁定(在 result_expiration 之后)恰恰相反,不会延长窗口。

No-contest(pm_no_contest)。 没有结果 —— 市场被取消,下注被退款。这不是对参与者的惩罚:不会因为某个来源沉默了就让他们的钱「烧掉」。如果注定不会有结果,预言机必须及时宣告 no-contest。

错过裁定(到截止时点作废)。 预言机在 result_expiration + 宽限期之前既没有宣布结果,也没有宣告 no-contest → 定时任务作废该市场,并罚没预言机。重要的是:作废只在 result_expiration + pm_dispute_grace_sec 之后触发(与结算清扫相同的截止线)—— 这样预言机才有一个真实的裁定窗口,而不是与截止时点赛跑(这一点由可达性修复解决;否则一个没有提前开关的固定截止市场根本无法被裁定)。

需要理解的地方

  • 只有在下注结束后才裁定。 不能更早;提前的路径是市场的一个单独开关。
  • 赔付是自动的。 没有「领取」,没有按钮:奖金与退款在裁定/取消时到账。
  • 沉默要受罚。 没有结果 → 及时宣告 no-contest。单纯「什么都不做」= 错过裁定,并罚没预言机。
  • 在宽限期结束之前,结果不是最终的。 在争议窗口内赔付可以被重算。
  • 杠杆不等裁定。 杠杆持仓按 betting_expiration 时点的价格关闭,与预言机的裁决无关 —— 见杠杆交易者

角色与链接

  • 预言机 —— 谁来宣布结果,以及用什么来担责。
  • 争议 —— 如何质疑已宣布的结果。
  • 下注者 —— 从一笔下注的角度看裁定是什么样。
  • 规范 —— 形式化的截止时点与截止线。