分布式價格預言機系統: 多層聚合與Feed Registry優化

robot
摘要生成中

分布式價格預言機系統

爲避免單點故障,一些預言機服務採用了分布式設計。以提供BTC美元價格的服務爲例,某知名預言機平台匯集了31個價格源來爲用戶提供服務。

這種聚合器的合約源碼可以在以太坊區塊瀏覽器上查看。通過調用合約中的transmitters方法,可以查看該聚合器包含的所有鏈下預言機。

每個鏈下預言機可以通過調用transmit方法來提供價格數據,以響應聚合器中用戶的請求。這些鏈下預言機是一些外部擁有帳戶(EOA),它們不僅爲BTC/USD聚合器提供價格數據,還可能爲其他聚合器(如ETH/USD)提供價格數據。

鏈上合約的處理流程大致如下:

  1. 首先讀取當前合約狀態,並進行一系列檢查。

  2. 檢查通過後,進行一些準備工作。

  3. 接下來使用ecrecover()對每個籤名數據進行驗籤,校驗hash值是否對_report做的hash。同時檢查籤名者的角色是否是Signer,且要檢查籤名的重復性。

  4. 最後,檢查觀察值是否按順序排列。從排序後的觀察值中選取中位數median,並確保median不超過上下兩個閾值。如無問題,在s_transmissions中記錄本次預言機的answer。此外,還要對answer進行校驗。

這裏經過一系列調用最終會調用某價格預言機合約的validate方法,關鍵是比較兩邊預言機給的價格偏差是否在一個可接受範圍內。

預言機詳解系列之 Chainlink(下)

Feed Registry

爲了提高靈活性和降低治理成本,一些平台推出了Feed Registry。它可以理解爲PriceFeeds的聚合器,已經聚合了多個priceFeed。有了它,使用者無需自己設置priceFeed,可直接通過Feed Registry讀取價格數據。

預言機詳解系列之 Chainlink(下)

喂價機制

價格預言機的價格通常通過多個層級的數據聚合得到,主要包括數據源聚合、節點運營商聚合和預言機網路聚合三個層級。

最原始的價格數據主要來自各大中心化和去中心化交易平台。一些專門的數據聚合服務商會從這些平台收集原始價格數據,並進行加工整合,如根據交易量、流動性和時差等進行加權計算。這是第一層面的數據源聚合。

第二層是節點運營商的聚合。每個節點運營商負責運行核心軟件,從多個獨立的數據聚合服務商獲取價格數據,並取中值,剔除異常值和API停機時間。

最後一層是整個預言機網路的聚合,常見方式是當響應節點數量達到預設值時對數據取中值。

價格更新通常需要滿足偏差閾值或心跳閾值兩個觸發參數之一。不同價格源的這兩個參數值可能不同。

總的來說,一些知名預言機平台的價格預言機接入方便且安全性較高,但由於價格更新機制存在偏差閾值,導致更新較慢,適用於對價格更新不太敏感的應用。這也是其局限性所在,無法適用所有場景。

預言機詳解系列之 Chainlink(下)

LINK1.37%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
财富咖啡vip
· 10小時前
分布式有趣哦 终于不用看人脸色了
回復0
HashBrowniesvip
· 08-02 07:13
31个数据源,总感觉不够多点~
回復0
RektDetectivevip
· 08-02 07:08
整天看机构脱裤子 到底看够了没
回復0
GasFeeCriervip
· 08-02 07:00
好家伙 看的头晕 gas小王子
回復0
NFT资深考古学家vip
· 08-02 06:57
链上代码读来似封泥文字般优雅
回復0
MEV_Whisperervip
· 08-02 06:56
聚合那么多有啥用 依然不准
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)