加密資產 · 高級 · 閱讀約需 10 分鐘

預言機:合約所相信的價格

區分市場價格與合約輸入,並分析過時、稀疏或不匹配的參考數據。

預言機:合約所相信的價格 — 原創教學插畫。不提供實時價格或業績承諾。
原創教學插畫。不提供實時價格或業績承諾。

代碼與觀察之間的邊界

智能合約可以始終如一地執行計算,卻使用質量欠佳的輸入。預言機提供合約無法僅從自身執行狀態獨立推斷的信息,例如外部市場價格。Ethereum 的預言機文檔解釋了區塊鏈執行與外部數據之間的這一邊界。重要問題不僅是數據源是否更新,還包括更新後的數字意味著甚麼。

一個價格可能代表單個交易場所、匯總值、時間加權觀測值或贖回價值。這些定義回答的是不同問題。交易所成交價描述一筆交易;參考價支持某項規則;贖回價值描述特定條件下的一項索取權。不能不加說明就相互替代。

檢查數據源規範

針對一個虛構借貸市場,寫下資產對、單位、小數位、更新條件和備用處理行為。確定數值是以美元、另一代幣還是基礎資產報價。一個看起來正確、卻使用了錯誤小數縮放係數的數值,被另一組件解釋時可能造成災難性錯誤。

也要檢查數據時效性。僅在偏差達到閾值或經過一定時間後才更新的數據源,與快速變化的訂單簿存在差異,可能是正常的。應用必須決定數據多舊算過期,以及屆時如何處理。暫停新增借款可以防範過期數據,但已有倉位仍會面臨後續價格更新的影響。不存在普遍無害的備用處理方式。

流動性是輸入質量的一部分

清淡市場的最後成交價,可能無法代表大額可成交交易的價格。聚合多個場所可以減少對單一場所的依賴,但共同所有權、共享流動性或同步中斷,可能限制所獲得的獨立性。時間平均會平滑短期波動,同時引入延遲。每種設計都用一組弱點交換另一組弱點。

考慮一種報價為 $10、附近買盤深度卻只有 $5,000 的代幣。按該邊際價格將抵押品估值為 100萬美元,並不能說明清算者能變現 100萬美元。預言機可能正確報告其定義的參考值,但風險模型卻高估可回收所得。數據質量與清算能力是相關但不同的問題。

對抵押比率的兩端進行壓力測試

抵押貸款同時依賴抵押品價格與債務價格。借入被稱為穩定的代幣,並不會讓其美元價值在數學上固定。如果抵押品下跌,同時回購債務的成本上升,倉位會從兩個方向惡化。應分別模擬這些變化,而不是習慣性地固定其中一側。

假設抵押品價值 $12,000,債務為 6,000 個單位,最初每單位值 $1,假設清算閾值為 75%。初始健康比率為 1.50。如果抵押品下跌 25% 至 $9,000,而債務單位升至 $1.10,則比率變為 $9,000 × 0.75 ÷ $6,600,約為 1.023。看似充裕的緩衝已接近耗盡。

研究集成方式,而不只是服務商

信譽良好的數據提供商,並不保證應用選用了正確數據源、妥善處理不可用值,或正確檢查時間戳。審查應用文檔、相關審計及參數決策。在紙面練習中,分別追蹤正常價格更新和缺失更新如何影響計算。說明哪裡缺乏證據,而不是用自信填補空白。

有用的監測計劃應區分市場變動與價格源異常。將所述參考值與獨立觀察及價格源預期更新政策比較。差異值得調查,而不是自動交易。本課旨在理解合約行為和操作風險,並非利用輸入漏洞,也不是假定表面錯價可以安全獲利。

作為額外練習,用三個參考假設計算同一抵押品倉位:數據源最近報告值、當前可成交買價以及壓力下賣出價。清楚標明每項。得到的區間不是置信區間,而是對估值選擇的敏感性。其目的是揭示哪個價格定義驅動結論,以及哪裡需要更多流動性證據。

價格更平滑,也可能意味著反應更慢

假設十個等長觀察期中,前九期價格均為100,最後一期降至70,簡單平均值為97。平均可以減弱短暫波動的影響,但這個數並不是最新市場價格。例子說明權重與時間範圍的作用,不代表所有預言機都使用同一種平均公式。

檢查實際資料來源如何取樣、如何加權、觀察期間有多長,以及甚麼條件會觸發更新。較長期間可能提高短時操縱的難度,也可能在真實價格持續變化後留下更大的滯後。不能僅憑「採用平均價」就判斷資料品質足夠。

分別測試一次短暫異常報價,以及一次真實而快速的持續下跌。同一組設定可能在前者中有幫助,在後者中卻帶來問題。分析時既要考慮防止瞬時干擾,也要考慮及時反映經濟變化;兩者之間的取捨取決於應用如何使用這個價格。

先檢查單位,再檢查數字是否合理

某資料來源可能用另一種加密資產為代幣報價,而不是直接用歐元。假設每枚代幣價格為0.08單位基礎資產,基礎資產價格為2,500歐元,則換算結果為200歐元。選錯交易對、倒置價格或誤讀小數縮放,都可能產生外觀正常卻含義錯誤的數字。

為每個輸入記錄資產、報價單位、小數精度與時間戳記。把兩個不同時點的價格相乘,會引入不同步風險;一個資料來源剛更新,並不能彌補另一個已經停滯。驗算時保留完整的單位轉換過程,而不是只比較最後結果是否接近預期。

還要檢查應用遇到過時、零值或異常輸入時如何處理。暫停新操作、切換備用價格與繼續沿用舊價格,具有不同後果。分別分析它們對新增借款和既有倉位清算的影響,不要把「有備用機制」直接理解為所有風險都已消除。

快速測驗

這個概念掌握了嗎?

準確報告的參考價格,仍可能高估清算所得嗎?

一般教育內容,並非交易建議。示例簡化了真實市場。使用任何產品前,請核實具體合約、成本與規則。
下一篇:DeFi 可組合性:梳理收益背後的依賴關係 →