﻿---
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-tw/crypto/oracle-attack/)
- [預言機價格過期](/zh-tw/crypto/oracle-price-staleness/)
- [TWAP 預言機](/zh-tw/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-tw/crypto/oracle/index.mdx
