0112 分钟
REPORT · CHALLENGE · FINALIZE

链上合约怎样得到现实结果?

展示报告、挑战、仲裁和最终确认怎样把现实结果写入链上系统。

本章目标学完后,你应该能:
  • 区分数据源、初始报告和最终结果
  • 解释挑战期与经济担保如何纠错
  • 判断为什么错误报告可能在没有挑战时被写入结算
章节位置第 1 / 4 章
  1. 上一章课程开始
  2. 本章链上合约怎样得到现实结果?

    展示报告、挑战、仲裁和最终确认怎样把现实结果写入链上系统。

  3. 下一章一条 API 结果为什么不够?
阅读前

先想一想这几个问题

展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。

Q01报告者很诚实,预言机为什么仍可能错?
简要回答

诚实只说明他没有故意撒谎。他可能读取错误来源、误解规则或遇到数据中断;预言机需要的是可纠错流程,而不是假设某个人永不犯错。

和原先判断相比:

链上代码可以验证余额、签名和状态转换,却不能自己看见窗外的比赛、天气或发射记录。预言机要解决的不是“怎么请求一个 API”,而是:当一个事实会触发真实赔付时,谁有资格报告、谁能挑战、错误要付出什么代价?

数据源、报告和最终结果不是同一个东西

预测市场问的是“2028 年前,人类会再次踏上月球吗?”。这句话的价格可以在链上变化,但“是否发生”仍然要从链外获得。一个完整的预言机流程至少包含三层:

  1. 数据源:官方记录、多个 API 或人工证据,它们描述现实,但可能延迟、冲突或被操纵。
  2. 初始报告:一个参与者把结果写成 YES/NO,并锁定担保金。
  3. 最终结果:挑战窗口结束、争议处理完成后,才允许预测市场读取并赔付。
ORACLE SIMULATION虚拟担保 · 非投资建议
ORACLE 001 · REPORT / CHALLENGE / FINALIZE

现实结果如何进入链上?

2028 年前,人类会再次踏上月球吗?

数据源状态来源冲突未经核验的社交媒体账户
数据源
02初始报告
03挑战窗口
04最终结果
当前阶段等待报告状态机
初始报告未报告尚未比较
最终结果未报告发送给市场结算
担保风险0积分锁定中
结算交接未交接等待最终化
现实证据与参与者实验真相可展开
揭开数据源记录(教学用真相)
YES

初报与官方记录相反,必须依靠挑战期纠错。

报告者Primary Reporter
可用积分
1,000
锁定担保
0
正确 / 错误
0 / 0
挑战者Challenger
可用积分
1,000
锁定担保
0
正确 / 错误
0 / 0

数据源是现实世界的输入;担保金是让参与者在错误报告时付出代价的激励。两者都不能被价格本身替代。

观察提示

预言机不是把 API 结果复制上链,而是把一组带激励、担保和争议流程的事实输入接入结算。

预言机事件2 EVENTS
  1. 02

    数据源为「未经核验的社交媒体账户」,状态 CONFLICTING。

  2. 01

    等待报告:2028 年前,人类会再次踏上月球吗?

操作记录实验时间轴
1 个状态快照

拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。

初始状态
查看实验记录 →

为什么要有挑战窗口

如果一个报告提交后立刻结算,数据源的瞬时错误、延迟或恶意行为都会直接变成赔付。挑战窗口给其他参与者一个公开时间段:他们可以提交相反结果,并用自己的担保金证明自己愿意承担责任。

实验室把挑战窗口简化成两个区块。推进窗口只改变时间,不改变报告;只有窗口结束后,系统才允许最终化或进入仲裁。真实协议可能使用时间戳、争议轮次、投票或去中心化验证,但核心问题相同:错误什么时候被发现,发现错误的人为什么愿意站出来?

经济担保把意见变成可追责的承诺

Primary Reporter 和 Challenger 都要锁定积分。没有挑战时,报告者拿回自己的担保,但结果可能仍然错;有挑战时,仲裁者读取现实证据,正确一方拿走双方担保,错误一方承担损失。

这不是保证“永远正确”的魔法。它只是把攻击成本、发现奖励和时间窗口写进了状态机。攻击者仍然可能控制数据源、串通参与者,或者让诚实参与者的挑战成本高到不愿行动。

展开:这一步如何实现
submit(outcome, stake):
  lock(reporter, stake)
  open(challengeWindow)

challenge(oppositeOutcome, stake):
  lock(challenger, stake)

after window:
  if no challenge:
    finalize(reportedOutcome)
  else:
    winner = evidence == reportedOutcome ? reporter : challenger
    winner receives both stakes

生产系统还需要多源聚合、信誉、提交/揭示、治理、抗女巫和升级权限。教学内核把这些复杂度压缩成可观察的担保和事件,让你先看清楚信任边界在哪里。

错误结果为什么不能靠市场自己修复

预测市场的订单簿只知道交易者愿意用多少积分交换头寸;它不能知道月球、比赛或天气到底发生了什么。如果预言机把错误结果写入结算,价格即使事后反弹,也无法自动把已经领取的赔付追回。

因此,一个严肃的系统会把“价格发现”和“事实报告”分成两个模块:前者处理观点和流动性,后者处理数据源、挑战和争议。模块边界越清楚,风险越容易被测试和解释。

理解检查

预言机挑战窗口最重要的作用是什么?

用五个问题检查预言机设计

完成实验后,试着解释:

  1. 数据源和报告者分别承担什么角色?
  2. 为什么报告提交后不能立刻触发赔付?
  3. 挑战者为什么需要锁定自己的担保?
  4. 没有人挑战时,错误报告为什么仍可能被最终化?
  5. 预测市场应该在什么时候读取最终结果?

预言机是所有链上金融系统的“现实接口”:预测、借贷抵押率、稳定币储备、清算价格都会依赖它。理解它的边界,才算真正理解链上金融不是一组孤立的合约。

本章小结完成练习和理解检查后,可以保存本章