第 03 章14 分钟
CHALLENGE · BOND · ARBITRATION为什么要给错误报告一个反驳窗口?
让两种相反结果锁定担保,观察时间窗口和经济损失如何给纠错者留下空间。
本章目标学完后,你应该能:
- 解释挑战窗口如何延迟结算
- 观察正确挑战者为什么能赢得双方担保
- 理解担保机制不能保证数据源永远正确
- 上一章一条 API 结果为什么不够?
- 本章为什么要给错误报告一个反驳窗口?
让两种相反结果锁定担保,观察时间窗口和经济损失如何给纠错者留下空间。
- 下一章最终结果如何安全交给市场?
阅读前
先想一想这几个问题
展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。
Q01担保越大越安全吗?+
简要回答
太小不足以阻止撒谎,太大又会让诚实但资金较少的挑战者无法纠错。好的担保要覆盖攻击收益,同时保留真实争议能够进入流程的可能。
和原先判断相比:
乐观预言机先接受一个带担保的报告,再给其他参与者时间和经济动机去反驳。本章让报告者和挑战者站到同一张账上,观察错误报告如何被纠正、诚实参与者如何获得奖励。
挑战窗口把“现在结算”变成“允许纠错”
初始报告提交后,结果并不立刻交给预测市场。挑战窗口逐步减少,挑战者可以锁定相反结果和自己的担保。窗口结束时,协议要么接受无人反驳的报告,要么把冲突交给仲裁者读取证据。
ORACLE 001 · REPORT / CHALLENGE / FINALIZE
现实结果如何进入链上?
2028 年前,人类会再次踏上月球吗?
数据源状态来源冲突未经核验的社交媒体账户
✓数据源
02初始报告
03挑战窗口
04最终结果
当前阶段等待报告状态机
初始报告未报告尚未比较
最终结果未报告发送给市场结算
担保风险0积分锁定中
结算交接未交接等待最终化
建议实验:报告一个与现实相反的结果,让 Challenger 提交相反主张,推进两个窗口后交给仲裁者。
揭开数据源记录(教学用真相)
YES
初报与官方记录相反,必须依靠挑战期纠错。
报告者Primary Reporter
- 可用积分
- 1,000
- 锁定担保
- 0
- 正确 / 错误
- 0 / 0
挑战者Challenger
- 可用积分
- 1,000
- 锁定担保
- 0
- 正确 / 错误
- 0 / 0
数据源是现实世界的输入;担保金是让参与者在错误报告时付出代价的激励。两者都不能被价格本身替代。
观察提示
预言机不是把 API 结果复制上链,而是把一组带激励、担保和争议流程的事实输入接入结算。
- 02
数据源为「未经核验的社交媒体账户」,状态 CONFLICTING。
- 01
等待报告:2028 年前,人类会再次踏上月球吗?
操作记录实验时间轴
1 个状态快照拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。
展开:这一步如何实现
submit(report, bond)
wait(challengeWindow)
if challenged:
winner = resolve_with_evidence()
winner.receive(reportBond + challengeBond)
else:
accept(report)
真实系统还要处理多人报告、争议升级、惩罚分配和治理攻击。这里把每一步的锁定余额和事件日志展示出来,帮助你先建立状态机直觉。