Chainlink預言機技術解析:連接區塊鏈與現實世界的橋梁

robot
摘要生成中

預言機技術解析:以Chainlink爲例

在區塊鏈生態中,預言機扮演着關鍵的基礎設施角色,它爲鏈上智能合約提供外部信息。作爲連接智能合約和區塊鏈外部世界的橋梁,預言機的主要功能是爲智能合約提供數據。

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

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

Chainlink概述

在區塊鏈預言機領域,Chainlink佔據了最大的市場份額。Chainlink是一個去中心化的預言機項目,其主要作用是以安全可靠的方式向區塊鏈提供現實世界的數據。Chainlink在基本預言機原理的基礎上,圍繞LINK代幣通過經濟激勵建立了一個良性循環的生態系統。Chainlink預言機需要通過LINK代幣的轉帳來觸發,而LINK是以太坊網路上的ERC677合約。基於LINK ERC677代幣完成的預言機功能屬於請求/響應模式。

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

ERC677代幣的transferAndCall機制

Chainlink在設計預言機框架時,首要考慮的是用戶如何向提供服務的預言機支付費用。由於標準ERC20代幣無法滿足支付後提供服務的需求,Chainlink提出了適用於預言機服務場景的ERC677標準。

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

值得注意的是,在請求預言機服務之前,用戶需要先確定該預言機是否可信,因爲預言機在提供服務前需要預先收取費用。

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

鏈上oracle請求處理

當預言機的消費者使用transferAndCall方法支付費用並請求服務時,預言機合約中的onTokenTransfer方法會首先進行一系列安全檢查。這些檢查包括驗證轉帳是否爲LINK代幣、判斷數據長度是否超過限制、檢查函數選擇器是否正確等。

所有安全檢查通過後,合約會通過delegatecall來調用oracle合約的oracleRequest方法。該方法會生成一個唯一的requestId,設置過期時間,並將相關信息存儲到commitments映射中。最後,它會發出一個OracleRequest事件,該事件包含了請求數據,採用CBOR(Concise Binary Object Representation)編碼格式。

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

鏈下節點響應

鏈下節點監聽到OracleRequest事件後,會解析出請求的具體信息,通過網路API調用獲取所需數據。然後,節點會調用oracle合約的fulfillOracleRequest方法,將數據提交到鏈上。

fulfillOracleRequest方法首先會進行一系列檢查,包括驗證調用者權限、檢查請求的有效性等。檢查通過後,它會記錄可取款的數額,從commitments映射中刪除該請求,並調用請求者合約的回調函數。

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

價格預言機示例

以Chainlink提供的TestnetConsumer合約中的requestEthereumPrice方法爲例,該方法實現了從指定API獲取ETH/USD交易價格的功能。它通過調用sendChainlinkRequestTo方法發出請求,觸發oracle合約的onTokenTransfer方法。

鏈下節點在獲取到請求信息後,會通過API調用獲取價格數據,然後通過fulfillOracleRequest方法將數據提交到鏈上。最終,數據會通過回調函數返回給消費者合約。

對於開發者來說,如果只需要使用已有的幣對價格,可以直接使用Chainlink提供的Price Feed(即AggregatorProxy)。每個交易對都有一個單獨的Price Feed,提供了多個查詢方法,包括獲取價格精度、交易對描述、最新價格數據等。

大多數應用場景下,合約可能只需要讀取最新價格,即調用latestRoundData方法。通常,以USD爲計價單位的交易對價格精度統一爲8位,這簡化了不同代幣精度處理的問題。

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

LINK-3.64%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 4
  • 轉發
  • 分享
留言
0/400
SerumSquirtervip
· 07-23 08:30
价格数据真不便宜
回復0
空气币品鉴大师vip
· 07-21 00:45
link是我真爱好吧
回復0
无情哈拉vip
· 07-21 00:30
link必涨 等着吃肉
回復0
DeFi医生vip
· 07-21 00:27
外围数据病毒威胁大,建议节点定期体检
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)