預言機技術:智能合約與現實世界的橋梁

robot
摘要生成中

預言機技術深度解析

在區塊鏈生態中,預言機作爲鏈上智能合約與外部世界的橋梁,扮演着至關重要的基礎設施角色。它的核心功能是爲區塊鏈上的智能合約提供外部數據。

舉例來說,如果我們在以太坊網路上部署了一個需要獲取某日原油交易量數據的智能合約,由於合約本身無法直接訪問鏈下的真實世界數據,這時就需要借助預言機來實現。具體流程是:智能合約將所需日期的原油交易量需求寫入事件日志,隨後鏈下進程會監聽並訂閱這一事件。當檢測到相關請求時,該進程會通過提交鏈上交易的方式,調用合約的特定方法,將指定日期的原油交易量信息上傳至智能合約中。

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

在衆多預言機項目中,某去中心化預言機項目以其市場佔有率位居前列。該項目致力於以最安全的方式爲區塊鏈提供現實世界的數據。除了實現基本的預言機原理外,該項目還圍繞其原生代幣構建了一個良性循環的生態系統,通過經濟激勵來保障系統的可持續發展。在該系統中,預言機的觸發需要通過原生代幣的轉帳來實現,這種基於代幣完成的預言機功能屬於請求/響應模式。

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

該項目採用的是一種改進版的同質化代幣標準,在標準ERC20的基礎上增加了一個transferAndCall方法。這個方法巧妙地將支付和服務請求合二爲一,很好地滿足了預言機業務場景的需求。當用戶調用transferAndCall進行轉帳時,除了常規的ERC20轉帳外,還會判斷接收地址是否爲合約地址,如果是,則會調用該地址的onTokenTransfer方法。

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

在預言機合約中,onTokenTransfer方法首先會驗證轉帳是否使用了指定的代幣,然後檢查請求數據的合法性。通過一系列安全檢查後,合約會生成一個唯一的請求ID,設置過期時間,並將相關信息記錄在commitments映射中。最關鍵的是,合約會發出一個包含請求數據的事件,這些數據採用輕量級的二進制對象表示格式編碼。

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

鏈下節點在接收到請求後,會調用fulfillOracleRequest方法來響應請求。該方法首先會進行一系列驗證,包括檢查調用者的授權、請求的有效性等。驗證通過後,會記錄可提取的代幣數量,並從commitments映射中刪除該請求ID。最後,如果剩餘gas足夠,會調用請求者合約的回調函數。

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

在回調函數中,會再次驗證請求的有效性,並根據具體需求處理返回的數據。例如,對於價格預言機,可能會更新當前價格數據。

對於開發者而言,某預言機項目還提供了更便捷的價格查詢接口。每個交易對都有獨立的價格聚合器,開發者可以直接調用這些接口獲取最新價格數據,無需自行指定數據源URL。這些接口通常包括查詢精度、描述、版本、歷史數據和最新數據等功能,大大簡化了開發流程。

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

值得注意的是,大多數應用場景下,合約可能只需讀取最新價格。而且,以美元爲計價單位的交易對,其價格精度通常統一爲8位,這就避免了處理不同代幣精度差異的麻煩。

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

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 5
  • 分享
留言
0/400
StableNomadvip
· 07-05 02:11
预言机真心离不开
回復0
仓位恐惧症vip
· 07-04 19:56
要涨要跌我先溜
回復0
测试网游民vip
· 07-03 23:26
预言机不简单
回復0
DEX罗宾汉vip
· 07-02 10:21
中间件极其重要
回復0
挖矿退役军人vip
· 07-02 10:05
数据预言机太强了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)