﻿---
title: "区块链预言机"
description: "区块链预言机向合约提供经认证的声明，涉及确定性链上状态无法自行推导的数据；安全使用取决于来源、报告、传输、验证和使用方的完整路径。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 区块链预言机

> 仅供教育参考，不构成投资建议；投资可能产生损失。

<a id="answer"></a>

## 直接答案

区块链预言机是一种系统，它向合约提供经认证的声明，所涉及的数据无法由区块链的确定性状态转换自行推导。价格馈送可以报告市场参考价；拉取式预言机可以验证用户转发的签名更新；乐观预言机可以先接受附保证金的断言，除非有人提出争议。可验证随机数与跨链消息也属于外部输入系统，但其声明和安全模型不能与价格馈送互换。

将数值写入链上，只能证明某项交易、签名、法定人数、证明或争议结果符合规定规则，不能从密码学上证明外部市场、天气事件或人为判断在客观上真实。完整信任路径包括被观测现象、数据源和交易场所、发布者、聚合、报告认证、传输、链上代理或验证器、使用方校验，以及最终转移价值的业务动作。

每一层的去中心化程度都必须分别评估。多个签名者可能共用同一个 API、交易所、云服务商、运营方或管理员。新鲜且带签名的中位数仍可能采用错误交易对或小数位、反映缺乏流动性的市场，或不适合使用方的交易规模。使用方仍须负责身份、单位、状态、时间戳、L2 可用性、风险敞口限额、备用机制和恢复。

<a id="mechanism"></a>

## 运作机制

1. 锁定链和区块、使用方合约及动作、准确的馈送或代理地址和馈送 ID、实现版本、基准/报价交易对、小数位或指数、市场时段及风险价值。
2. 追踪完整信任路径：从现象和交易场所，经发布者、来源聚合、签名者或法定人数聚合、传输、链上验证、代理控制，直至使用方逻辑；分别检验来源、运营方、基础设施和管理员的独立性。
3. 解码已部署接口和报告。核验馈送身份、签名或证明及其域、序列或轮次、签名答案、状态或置信度、来源时间戳、链上更新时间、重放行为、回滚行为和升级状态。
4. 只做一次单位规范化，并明确检查范围、符号和时间戳。区分来源观测或发布时间、报告创建时间、源链纳入时间、中继最终确定时间、目标链更新时间和使用方区块时间。
5. 应用与动作相匹配的 `maxAge`、偏差、置信度和跨来源规则。在支持的 L2 部署上，另行检查排序器状态与恢复宽限期；对复合值，以最早的必要依赖项限制新鲜度。
6. 将参考值与可成交市场深度比较，估算操纵或腐化成本相对于使用方借款、铸造、清算、交易或结算风险敞口的大小。AMM 现货和 TWAP 构造必须按具体池和版本处理。
7. 分动作定义正常、降级、暂停与恢复状态；尽量保留安全的债务偿还或追加抵押品路径，监控来源和配置，演练报告缺失、过期、错误及遭操纵的情形，并在恢复后核对每一项受影响余额和动作。

推送和拉取描述的是交付模式，而不是一套通用的付费或信任模型。发布者可以创建签名报告，再由任意用户转发并支付更新费。心跳和偏差设置可以触发发布，但并非交付保证或使用方的新鲜度上限。备用值或最后有效值是一种受控降级模式，其方向、单位、时效、独立性和允许动作都必须重新验证。

<a id="example"></a>

## 计算示例

- **借贷门槛。** 某头寸有 `10 ETH` 抵押品，预言机价格为 `3,000 USD/ETH`，债务为 `18,000 USD`，清算门槛为 `75%`。抵押品价值为 `30,000 USD`，LTV 为 `60%`，且 `healthFactor = 10 * 3,000 * 0.75 / 18,000 = 1.25`。触发价格为 `18,000 / (10 * 0.75) = 2,400 USD/ETH`。价格为 `2,300 USD/ETH` 时，健康因子为 `0.9583333333`，债务/抵押品比率为 `78.2608695652%`：符合清算条件，但在计入清算奖励、费用和执行影响前，名义抵押品价值 `23,000 USD` 仍高于债务。
- **单位失效。** 原始答案 `250,000,000,000` 带有 `8 decimals`，代表 `2,500 USD`。若错误除以 `10^18`，结果会是 `0.00000025 USD`，将价格低估 `10^10` 倍。有效签名和近期时间戳无法修复使用方的单位错误。
- **聚合选择。** 观测值 `[99, 100, 100, 101, 160]` 的中位数为 `100`，算术平均值为 `112`，相对中位数相差 `12%`。在这一教学数据集中，中位数可以抵御一个高值离群点；但若五个报告者都依赖同一个遭入侵的 API 并报告 `130`，中位数同样是 `130`。
- **按动作判断新鲜度。** 当 `consumerClock = 1,800,000,000` 时，报告的 `sourceTimestamp = 1,799,998,200`，因此 `age = 1,800 seconds`。新增借款采用 `maxAge = 900 seconds`，报告超限 `900 seconds`，应被拒绝；还款路径采用 `maxAge = 3,600 seconds`，则可接受，尚余 `1,800 seconds`。同一报告可能不适合增加风险敞口，却适合减少风险敞口。

<a id="risks"></a>

## 风险

- 链、部署、实现或网络环境错误。
- 代理、聚合器、馈送 ID、资产或合约版本错误。
- 基准/报价方向颠倒或计价单位不一致。
- 小数位、指数、定点数、符号、舍入或单位不匹配。
- 接受零值、负值、超出定义域、溢出或截断的答案。
- 接受缺失、为零、来自未来、沿用旧值或身份错误的时间戳。
- 使用方的新鲜度上限对资产和动作而言过于宽松。
- 使用方的新鲜度上限过严，造成拒绝服务或阻碍降低风险。
- 将心跳或偏差配置视为服务等级保证。
- 忽略休市、公司行动、脱锚、交易场所中断或沿用数据的语义。
- 多个发布者共用同一 API、交易所、云服务、运营方、密钥路径或方法。
- 签名者门槛、法定人数、密钥托管、报告认证、域或防重放控制失效。
- 聚合、权重、离群值、置信度或来源筛选规则不合适。
- 来源流动性薄弱、存在洗量、分散、过期或在受保护规模下可操纵。
- 现货或短窗口 TWAP 操纵、多区块控制、排序、审查或 MEV 改变输入。
- 发布者、中继、燃料费、拥堵、重组或链中断阻止及时交付。
- 遗漏 L2 排序器状态、恢复宽限期、跨链中继时钟或最终确定依赖项。
- 代理、管理员、签名者集合、配置、迁移、暂停或馈送弃用变化未被发现。
- 备用源过期、相关、缩放不同、循环依赖，或通过不安全的失败放行或一律失败关闭路径启用。
- 使用方风险敞口高于操纵或腐化成本，同时监控、限额、暂停、恢复、清算及坏账核对失效。

<a id="misconceptions"></a>

## 常见误区

- **“预言机会预测未来。”** 大多数预言机认证的是某个明确定义的时间和对象对应的观测值、报告、证明或已解决断言。
- **“带签名或已上链的数据一定客观真实。”** 认证和共识证明的是规则得到遵守，而不是外部事实在经济上正确。
- **“节点越多，去中心化程度自然越高。”** 来源、运营方、基础设施、密钥和治理仍可能高度相关。
- **“最新且新鲜的数值就是公允可成交价。”** 新鲜度不能证明方向、单位、置信度、流动性或可成交深度。
- **“信誉良好的提供商消除了使用方集成风险。”** 应用仍须负责部署身份、解码、新鲜度、L2 闸门、风险敞口、失败模式和恢复。

<a id="related"></a>

## 相关主题

- [预言机攻击](/zh-cn/crypto/oracle-attack/)
- [预言机价格过期](/zh-cn/crypto/oracle-price-staleness/)
- [TWAP 预言机](/zh-cn/crypto/oracle-twap/)

<a id="sources"></a>

## 资料来源

- [Oracles](https://ethereum.org/developers/docs/oracles/) - Ethereum.org（访问日期：2026-08-13）
- [Chainlink Data Feeds](https://docs.chain.link/data-feeds) - Chainlink Documentation（访问日期：2026-08-13）
- [Data Feeds API Reference](https://docs.chain.link/data-feeds/api-reference) - Chainlink Documentation（访问日期：2026-08-13）
- [Developer Responsibilities: Market Integrity and Application Code Risks](https://docs.chain.link/data-feeds/developer-responsibilities) - Chainlink Documentation（访问日期：2026-08-13）
- [Selecting Quality Data Feeds](https://docs.chain.link/data-feeds/selecting-data-feeds) - Chainlink Documentation（访问日期：2026-08-13）
- [How to Use Real-Time Data in EVM Contracts](https://docs.pyth.network/price-feeds/core/use-real-time-data/pull-integration/evm) - Pyth Developer Hub（访问日期：2026-08-13）
- [Uniswap v2 Core](https://app.uniswap.org/whitepaper.pdf) - Uniswap（访问日期：2026-08-13）
- [SC03:2026 Price Oracle Manipulation](https://scs.owasp.org/sctop10/SC03-PriceOracleManipulation/) - OWASP Smart Contract Security（访问日期：2026-08-13）

Source: https://wiki.fcontext.com/zh-cn/crypto/oracle/index.mdx
