# 分布式價格預言機系統的設計與實現爲了解決單點故障問題,一些預言機服務採用了分布式設計。以提供比特幣美元價格的服務爲例,它聚合了31個獨立的價格預言機來爲用戶提供數據。這種聚合器的設計允許多個鏈下預言機通過調用特定方法來提供價格數據,從而響應用戶的請求。這些預言機通常是一些外部擁有帳戶(EOA),它們不僅可以爲比特幣/美元價格提供數據,還可能爲其他貨幣對如以太坊/美元提供服務。鏈上合約在處理預言機提供的數據時,會進行一系列的驗證步驟:1. 首先讀取當前合約狀態並進行初步檢查。2. 進行必要的準備工作。3. 對每個籤名數據進行驗籤,確保數據完整性和來源可靠性。4. 檢查觀察值的排序,並選取中位數作爲最終結果。最後,合約會對得到的結果進行進一步的驗證,比如與其他價格源進行比較,確保偏差在可接受範圍內。一些平台還提供了更高級的聚合服務,如Feed Registry。這種服務聚合了多個價格預言機,使用戶可以更方便地訪問不同代幣的價格數據,而無需單獨設置每個價格源。在喂價機制方面,預言機網路通常採用多層數據聚合:1. 數據源聚合:從各大交易平台收集原始價格數據。2. 節點運營商聚合:每個節點從多個數據源獲取並處理數據。3. 預言機網路聚合:多個節點的數據再次聚合得到最終結果。價格更新通常由兩個因素觸發:偏差閾值和心跳閾值。不同的價格預言機可能會有不同的參數設置。盡管這種設計提供了較高的安全性和便利性,但也存在一些局限性。由於價格更新機制的特點,數據更新可能會相對緩慢,從幾分鍾到幾小時不等。因此,這類預言機服務主要適用於對價格實時性要求不高的應用場景。
分布式價格預言機:設計原理與實現機制解析
分布式價格預言機系統的設計與實現
爲了解決單點故障問題,一些預言機服務採用了分布式設計。以提供比特幣美元價格的服務爲例,它聚合了31個獨立的價格預言機來爲用戶提供數據。
這種聚合器的設計允許多個鏈下預言機通過調用特定方法來提供價格數據,從而響應用戶的請求。這些預言機通常是一些外部擁有帳戶(EOA),它們不僅可以爲比特幣/美元價格提供數據,還可能爲其他貨幣對如以太坊/美元提供服務。
鏈上合約在處理預言機提供的數據時,會進行一系列的驗證步驟:
最後,合約會對得到的結果進行進一步的驗證,比如與其他價格源進行比較,確保偏差在可接受範圍內。
一些平台還提供了更高級的聚合服務,如Feed Registry。這種服務聚合了多個價格預言機,使用戶可以更方便地訪問不同代幣的價格數據,而無需單獨設置每個價格源。
在喂價機制方面,預言機網路通常採用多層數據聚合:
價格更新通常由兩個因素觸發:偏差閾值和心跳閾值。不同的價格預言機可能會有不同的參數設置。
盡管這種設計提供了較高的安全性和便利性,但也存在一些局限性。由於價格更新機制的特點,數據更新可能會相對緩慢,從幾分鍾到幾小時不等。因此,這類預言機服務主要適用於對價格實時性要求不高的應用場景。