一条 API 结果为什么不够?
切换可靠、冲突和模糊来源,理解数据质量、报告者和现实证据不是同一个角色。
- 区分数据源状态与报告者主张
- 解释多源一致、冲突和延迟各自的风险
- 判断协议为什么不能把 API 返回值直接当成事实
- 上一章链上合约怎样得到现实结果?
- 本章一条 API 结果为什么不够?
切换可靠、冲突和模糊来源,理解数据质量、报告者和现实证据不是同一个角色。
- 下一章为什么要给错误报告一个反驳窗口?
先想一想这几个问题
展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。
Q01接入十个 API,为什么不一定比一个更去中心化?+
十个 API 可能都转售同一个上游数据,故障和偏差仍然高度相关。真正的来源多样性要看数据从哪里产生,而不是只数接口数量。
预言机的第一道边界不是智能合约,而是“现实证据到底有多可靠”。一条 API 返回值、一个报告者的签名和最终写入链上的结果,分别处在不同的信任层。
数据源不是最终事实
实验室提供三种来源:多个官方记录一致、未经核验的来源冲突、以及带延迟的模糊来源。先切换它们,再揭开教学用的现实记录。来源状态会改变风险,但不会自动替协议做出报告。
现实结果如何进入链上?
2028 年前,人类会再次踏上月球吗?
同一个报告流程,换一个数据源就会改变风险。先比较来源状态,再决定报告者是否应该立即相信它。
揭开数据源记录(教学用真相)
初报与官方记录相反,必须依靠挑战期纠错。
- 可用积分
- 1,000
- 锁定担保
- 0
- 正确 / 错误
- 0 / 0
- 可用积分
- 1,000
- 锁定担保
- 0
- 正确 / 错误
- 0 / 0
数据源是现实世界的输入;担保金是让参与者在错误报告时付出代价的激励。两者都不能被价格本身替代。
预言机不是把 API 结果复制上链,而是把一组带激励、担保和争议流程的事实输入接入结算。
- 02
数据源为「未经核验的社交媒体账户」,状态 CONFLICTING。
- 01
等待报告:2028 年前,人类会再次踏上月球吗?
拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。
报告者把证据变成可验证主张
报告者不是现实世界本身,而是一个愿意锁定担保、对某个结果负责的参与者。报告会被其他人看到、挑战和最终化;因此系统要把“来源”“报告”“最终结果”拆成不同的状态。
展开:这一步如何实现
source = collect_external_evidence()
report = reporter.sign(outcome, bond)
require report != source // 不是直接复制
open_challenge_window(report)
教学模拟把复杂的数据聚合压缩成三个可切换来源,但保留了工程核心:证据质量、报告责任和结算权限不能混成一个 API 调用。