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

robot
摘要生成中

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

在區塊鏈生態中,預言機扮演着至關重要的角色。它作爲一種中間件系統,能夠爲鏈上智能合約提供外部信息,從而將區塊鏈世界與現實世界連接起來。預言機的核心功能就是爲智能合約提供所需的外部數據。

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

預言機詳解系列之 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代幣、檢查數據長度是否超過限制、驗證數據是否包含正確的函數選擇器等。

檢查通過後,預言機合約會生成一個唯一的requestId,並將請求相關信息存儲到commitments映射中。最後,合約會發出一個OracleRequest事件,該事件包含了請求的詳細數據。

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

鏈下節點響應機制

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

此方法會進行一系列驗證,包括檢查調用者是否爲授權節點、驗證請求ID的有效性等。驗證通過後,合約會記錄可提取的代幣數量,並從commitments映射中刪除該請求ID。

最後,合約會調用請求者合約的回調函數,將數據返回給消費者合約。對於價格預言機,這通常涉及更新當前價格數據。

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

價格預言機的簡化使用

對於開發者而言,如果只需使用已有的幣對價格數據,無需自行指定API URL,可以直接使用Chainlink提供的Price Feed。每個交易對都有一個獨立的Price Feed(也稱爲Aggregator),實際上是一個AggregatorProxy合約。

這些合約通常提供以下幾個主要查詢方法:

  • decimals():返回價格數據的精度位數
  • description():返回交易對名稱
  • version():標識Proxy指向的Aggregator類型
  • getRoundData(_roundId):根據輪次ID獲取歷史價格數據
  • latestRoundData():獲取最新價格數據

在大多數應用場景中,合約可能只需讀取最新價格,即調用latestRoundData()方法。該方法返回的answer參數即爲最新價格。

值得注意的是,大部分應用讀取token價格時都以USD爲計價單位。在這種情況下,價格數據的精度通常統一爲8位小數,這簡化了不同token間精度處理的問題。

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

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 8
  • 分享
留言
0/400
Anon32942vip
· 07-15 12:05
预言机这个我懂!囤了点link
回復0
跨链深呼吸vip
· 07-15 11:26
预言机救了我的小钱包
回復0
rugdoc.ethvip
· 07-12 12:36
预言机也没整明白啊
回復0
HackerWhoCaresvip
· 07-12 12:32
link就是未来哈
回復0
MetaverseHermitvip
· 07-12 12:23
link牛哇牛哇
回復0
薛定谔钱包vip
· 07-12 12:17
预言机真香...代币稳了
回復0
Gas_Wastervip
· 07-12 12:14
妈妈 今晚的预言机真香
回復0
bridge_anxietyvip
· 07-12 12:07
得出来了真香
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)