🎉 攢成長值,抽華爲Mate三折疊!廣場第 1️⃣ 2️⃣ 期夏季成長值抽獎大狂歡開啓!
總獎池超 $10,000+,華爲Mate三折疊手機、F1紅牛賽車模型、Gate限量週邊、熱門代幣等你來抽!
立即抽獎 👉 https://www.gate.com/activities/pointprize?now_period=12
如何快速賺成長值?
1️⃣ 進入【廣場】,點擊頭像旁標識進入【社區中心】
2️⃣ 完成發帖、評論、點讚、發言等日常任務,成長值拿不停
100%有獎,抽到賺到,大獎等你抱走,趕緊試試手氣!
截止於 8月9日 24:00 (UTC+8)
詳情: https://www.gate.com/announcements/article/46384
#成长值抽奖12期开启#
分布式價格預言機系統: 多層聚合與Feed Registry優化
分布式價格預言機系統
爲避免單點故障,一些預言機服務採用了分布式設計。以提供BTC美元價格的服務爲例,某知名預言機平台匯集了31個價格源來爲用戶提供服務。
這種聚合器的合約源碼可以在以太坊區塊瀏覽器上查看。通過調用合約中的transmitters方法,可以查看該聚合器包含的所有鏈下預言機。
每個鏈下預言機可以通過調用transmit方法來提供價格數據,以響應聚合器中用戶的請求。這些鏈下預言機是一些外部擁有帳戶(EOA),它們不僅爲BTC/USD聚合器提供價格數據,還可能爲其他聚合器(如ETH/USD)提供價格數據。
鏈上合約的處理流程大致如下:
首先讀取當前合約狀態,並進行一系列檢查。
檢查通過後,進行一些準備工作。
接下來使用ecrecover()對每個籤名數據進行驗籤,校驗hash值是否對_report做的hash。同時檢查籤名者的角色是否是Signer,且要檢查籤名的重復性。
最後,檢查觀察值是否按順序排列。從排序後的觀察值中選取中位數median,並確保median不超過上下兩個閾值。如無問題,在s_transmissions中記錄本次預言機的answer。此外,還要對answer進行校驗。
這裏經過一系列調用最終會調用某價格預言機合約的validate方法,關鍵是比較兩邊預言機給的價格偏差是否在一個可接受範圍內。
Feed Registry
爲了提高靈活性和降低治理成本,一些平台推出了Feed Registry。它可以理解爲PriceFeeds的聚合器,已經聚合了多個priceFeed。有了它,使用者無需自己設置priceFeed,可直接通過Feed Registry讀取價格數據。
喂價機制
價格預言機的價格通常通過多個層級的數據聚合得到,主要包括數據源聚合、節點運營商聚合和預言機網路聚合三個層級。
最原始的價格數據主要來自各大中心化和去中心化交易平台。一些專門的數據聚合服務商會從這些平台收集原始價格數據,並進行加工整合,如根據交易量、流動性和時差等進行加權計算。這是第一層面的數據源聚合。
第二層是節點運營商的聚合。每個節點運營商負責運行核心軟件,從多個獨立的數據聚合服務商獲取價格數據,並取中值,剔除異常值和API停機時間。
最後一層是整個預言機網路的聚合,常見方式是當響應節點數量達到預設值時對數據取中值。
價格更新通常需要滿足偏差閾值或心跳閾值兩個觸發參數之一。不同價格源的這兩個參數值可能不同。
總的來說,一些知名預言機平台的價格預言機接入方便且安全性較高,但由於價格更新機制存在偏差閾值,導致更新較慢,適用於對價格更新不太敏感的應用。這也是其局限性所在,無法適用所有場景。