预言机(Oracle)
约 1385 字大约 5 分钟
2026-05-12
区块链自己不能天然知道链外世界发生了什么。Oracle 的作用,是把价格、天气、比赛结果、储备证明、随机数或计算结果这些外部信息,以可被合约使用的方式带进链上。
为什么要学这个
很多链上协议都依赖外部数据。借贷协议需要资产价格,衍生品需要指数价格,保险协议需要事件结果,RWA 协议需要储备和资产状态。
Oracle 是链上系统和外部世界之间的桥。桥带来能力,也带来风险:数据源错了、更新延迟、价格被操纵、喂价中断、聚合逻辑出问题,都会直接影响合约执行。
预言机不是“真实世界 API”,而是链上合约愿意信任的一套数据提交和验证机制。
第一性原理
合约只能按链上可见的数据执行,所以外部数据一旦进入链上,就会变成协议规则的一部分。
如果一个借贷协议使用某个价格 feed 判断清算,那么这个 feed 的更新频率、数据源、聚合方式和异常处理,都会影响用户资产安全。
- 数据源是信任边界:谁提供数据,谁聚合数据,谁能更新数据,都必须清楚。
- 延迟会变成风险:价格变化很快时,旧数据可能导致错误清算或坏账。
- 异常要有保护:合约应该处理 stale price、极端跳变和 feed 暂停。
知识节点
Price Feed
难度:初级。 Price Feed 是最常见的预言机形式,为合约提供资产价格。
DeFi 协议会用价格 feed 计算抵押率、清算线、swap 限制、借款额度和资产净值。价格看起来只是一个数字,但它背后包含数据源、更新时间、精度、聚合方式和异常处理。
读取价格时至少要检查:
- feed 对应的是哪个资产对;
- decimals 是多少;
- 更新时间是否过旧;
- 返回值是否为异常值;
- 当前链上的 feed 地址是否正确。
相关 topic
- Chainlink Data Feeds:学习价格 feed 的使用方式、更新机制和链上接口。
Data Feed
难度:中级。 Data Feed 不只包括价格,也可以包括储备证明、利率、宏观数据、体育结果或其他链外信息。
只要合约执行依赖链外数据,就要问同一组问题:数据从哪里来,如何更新,谁能提交,是否可验证,出错后怎么处理。
例如 RWA 协议可能需要资产储备数据;保险协议可能需要灾害或航班状态;游戏可能需要随机数或比赛结果。这些都不是合约自己能直接知道的。
Oracle Risk
难度:高级。 Oracle Risk 是链外数据进入链上执行时引入的系统性风险。
常见风险包括:
- 数据源被操纵;
- feed 更新延迟;
- 聚合节点离线;
- decimals 或单位理解错误;
- 低流动性资产价格被攻击;
- 合约没有检查 stale price;
- 预言机升级或权限变更不透明。
预言机风险经常和 DeFi 风险叠加。价格 feed 错误可能导致错误清算、坏账、套利和资产池损失。
AI Oracle
难度:高级。 AI Oracle 是把模型推理、评分、分类或生成结果提交给链上系统的设想和实践方向。
它的问题比普通价格 feed 更复杂,因为 AI 输出通常不是简单客观数字。比如“这个内容是否违规”“这个任务是否完成”“这个地址是否高风险”,都可能涉及模型版本、输入数据、提示词、评估标准和争议处理。
如果要设计 AI Oracle,至少要考虑:
- 输入数据是否可追溯;
- 模型版本和 prompt 是否记录;
- 输出是否可复核;
- 是否允许挑战或仲裁;
- 错误输出会造成什么链上后果。
在 AI x Web3 中的位置
Oracle 是 AI x Web3 的关键桥梁之一。AI Agent 需要读取链上和链外数据;合约如果要使用 AI 结果,也需要把模型输出转成链上可验证或可争议的数据。
但不要把 AI Oracle 想成“模型说什么,合约就执行什么”。更合理的方式是:AI 给出结果,系统记录来源和置信度,高风险场景引入 human-in-the-loop、挑战期、多人验证或经济惩罚。
最小实践
做一个价格 feed 风险检查:
- 找一个链上的 ETH/USD 或 BTC/USD price feed。
- 查看 feed 地址、decimals、最新价格和更新时间。
- 思考如果这个价格延迟 30 分钟,哪些协议动作会受影响。
- 写出合约读取这个 feed 时应该检查哪些条件。
- 再设计一个 AI Oracle 输出场景,列出必须记录的输入、模型版本和争议流程。
扩展阅读
- Ethereum Oracles:理解预言机为什么存在,以及链外数据如何进入链上。
- Chainlink Data Feeds:学习价格和数据 feed 的开发者使用方式。
- Chainlink Data Feeds API Reference:查看 AggregatorV3Interface 等常用接口。
- Pyth Docs:了解另一类低延迟价格预言机网络。
- UMA Optimistic Oracle:学习带挑战机制的 optimistic oracle 思路。