预言机与可信上链
# 预言机与可信上链
上链不等于真实:区块链让已确认的记录难以被单方篡改,但不能把假数据变成真数据。例如,冷链传感器能自动记录温度,但设备也可能故障或被篡改,所以自动采集和上链都不能替代源头校验。
# 预言机:把链外数据提供给智能合约
智能合约不能像普通后端一样直接调用外部 HTTP 接口,否则不同节点可能拿到不同结果。预言机(Oracle) (opens new window)负责获取外部数据,经过验证后供合约使用;它不是预测未来的工具,也不是自动判断真假的机器。
例如,借贷合约通过预言机获取 ETH 价格,计算抵押品价值,再判断是否允许清算。预言机提供数据,合约按规则处理业务;实际执行仍需要交易触发。
可靠性需要分层保证:多数据源、多独立节点交叉验证,降低单点造假风险;签名校验确认数据来自谁、是否被改动;业务合约检查更新时间和异常值,拒绝使用过期或明显异常的数据。这些措施能降低风险,但不能保证源头数据永远真实。
# 常见预言机与适用场景
| 预言机 | 主要特点 | 适合什么场景 |
|---|---|---|
| Chainlink (opens new window) | 既提供现成的数据服务,也支持由去中心化预言机网络执行自定义工作流 | 资产价格读取、链外 API 与链上合约联动 |
| Pyth (opens new window) | 聚合交易所、交易机构等提供的价格,侧重低延迟金融数据 | 永续合约等对价格更新速度敏感的应用 |
| RedStone (opens new window) | 模块化价格预言机,覆盖质押、再质押等资产 | 需要相关资产价格的借贷与 DeFi 应用 |
| UMA (opens new window) | 先提交结果,留出质疑期,有争议再裁决 | 预测市场、保险等事件结果确认,不是高频价格源 |
Chainlink 中这两项能力用途不同:
- Data Feeds (opens new window):读取现成数据。多来源数据经预言机网络聚合后发布到链上,例如借贷合约读取 ETH/USD 价格来估值抵押品。
- CRE(Chainlink Runtime Environment) (opens new window):编排完整流程。用 TypeScript 或 Go 编写由事件或定时任务等触发的工作流,调用链外 API、处理数据并读写合约;例如 “收到结业申请 → 查询学习完成状态 → 将结果写回链上” 。项目中的应用见 Chainlink CRE。
Data Feeds 和 CRE 是不同能力,不是改名或替代关系;CRE 也能用于构建自定义数据源。选型时重点检查目标链与资产是否支持、更新频率是否满足业务、费用及异常处理机制;合约侧的安全检查见 预言机、滑点与 MEV 各自保护什么。
课程原文见 区块链基础:可信上链。