Chainlink:預言機如何連接區塊鏈與現實世界

robot
摘要生成中

預言機系統在區塊鏈中的重要性及Chainlink的實現機制

預言機是區塊鏈領域中的關鍵基礎設施,它能夠爲鏈上智能合約提供外部信息。作爲連接智能合約和區塊鏈外部世界的中間件,預言機發揮着至關重要的作用,其主要功能是爲區塊鏈上的智能合約提供數據。

舉個例子,如果我們在以太坊網路上部署了一個需要獲取某天原油交易量數據的智能合約。由於智能合約本身無法直接訪問鏈下的現實世界數據,因此需要通過預言機來實現這一功能。在這種情況下,智能合約會將所需日期的原油交易量寫入事件日志。隨後,鏈下會啓動一個進程來監控並訂閱這個事件日志。當監聽到交易中的請求時,該進程會通過提交鏈上交易,調用合約的相關方法,將指定日期的原油交易量信息上傳到智能合約中。

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

Chainlink是目前區塊鏈領域市場佔有率最大的預言機項目。它是一個去中心化的預言機系統,旨在以最安全的方式向區塊鏈提供現實世界中產生的數據。Chainlink在基本預言機原理的基礎上,通過LINK代幣構建了一個經濟激勵驅動的良性生態系統。Chainlink預言機需要通過LINK代幣的轉帳來觸發,而LINK是以太坊網路上的ERC677合約。基於LINK ERC677代幣實現的預言機功能屬於請求/響應模式。

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

ERC677代幣標準是Chainlink爲滿足預言機服務場景需求而提出的。它在標準ERC20的基礎上增加了transferAndCall方法,將支付和服務請求合二爲一。當用戶通過transferAndCall進行轉帳時,除了ERC20的轉帳功能外,還會判斷接收地址是否爲合約地址,如果是,則調用該地址的onTokenTransfer方法。

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

在Chainlink的實現中,當預言機消費者使用transferAndCall方法支付費用並請求服務時,預言機合約的onTokenTransfer方法會首先進行一系列安全檢查。這包括驗證轉帳是否爲LINK代幣、檢查數據長度是否超過限制,以及驗證函數選擇器等。檢查通過後,會通過delegatecall來調用當前oracle合約的oracleRequest方法。

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

oracleRequest方法會生成一個唯一的requestId,設置過期時間,並將相關信息添加到commitments映射中。最重要的是,它會發出一個OracleRequest事件,該事件包含了請求數據,採用CBOR(簡潔二進制對象表示)格式編碼。

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

鏈下節點會監聽這些OracleRequest事件。當檢測到新的請求時,節點會解析事件中的信息,通過API調用獲取所需數據,然後通過調用oracle合約的fulfillOracleRequest方法將數據提交到鏈上。這個方法會進行一系列驗證,然後調用請求者合約的回調函數,將結果返回給消費者合約。

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

對於開發者來說,如果只需要使用已有的幣對價格,可以直接使用Chainlink提供的Price Feed(也稱爲Aggregator)。每個交易對都有一個單獨的Price Feed,實際上是一個AggregatorProxy合約。這些合約提供了幾個查詢方法,包括獲取價格精度、描述、版本以及最新價格數據等。在大多數應用場景中,合約可能只需要讀取最新價格,即調用latestRoundData()方法。

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

值得注意的是,以USD爲計價單位的交易對,其價格精度通常統一爲8位,這簡化了不同代幣間精度處理的問題。這種設計讓開發者能夠更便捷地在智能合約中使用實時價格數據,而無需處理復雜的API調用和數據格式轉換。

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

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 7
  • 分享
留言
0/400
Degen_Whisperervip
· 8小時前
链克真香 就是贵了点
回復0
午夜快照猎人vip
· 8小時前
Chainlink挺靠谱的啊
回復0
半仓就跑vip
· 8小時前
感觉link还得涨
回復0
GweiTooHighvip
· 9小時前
link又涨了吧?不用猜了
回復0
SelfRuggervip
· 9小時前
link牛叉 买就完事了
回復0
Gwei_Watchervip
· 9小時前
真香 这价格feed是真滴好用
回復0
Permabull Petevip
· 9小時前
link稳得一批
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)