預言機:區塊鏈與現實世界的橋梁 Chainlink如何實現數據傳輸

robot
摘要生成中

預言機系統在區塊鏈中的角色與實現

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

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

舉例來說,如果我們在以太坊網路上部署一個需要獲取特定日期原油交易量的智能合約,由於合約本身無法直接訪問鏈下數據,就需要通過預言機來實現。在這種情況下,智能合約會將所需信息寫入事件日志,然後鏈下進程會監聽這個事件。當檢測到請求時,該進程會通過提交鏈上交易,將指定日期的原油交易量數據傳輸給智能合約。

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

在衆多預言機項目中,Chainlink佔據了市場的主導地位。Chainlink是一個去中心化的預言機網路,旨在以安全可靠的方式爲區塊鏈提供現實世界的數據。它通過LINK代幣構建了一個經濟激勵機制,形成了一個良性循環的生態系統。

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

Chainlink預言機的觸發需要通過LINK代幣的轉帳來實現。LINK是以太坊網路上的ERC677合約,這種基於LINK ERC677代幣完成的預言機功能屬於請求/響應模式。

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

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

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

在請求預言機服務之前,用戶需要先確認該預言機的可信度,因爲服務提供前需要預付費用。預言機的可信度可以根據其歷史表現、聲譽系統等因素來評估。

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

當預言機接收到服務請求後,會通過onTokenTransfer方法處理。該方法會進行一系列安全檢查,包括驗證轉帳是否爲LINK代幣、檢查數據長度是否合規、驗證function selector等。通過檢查後,預言機會發出OracleRequest事件,該事件包含了請求的詳細信息。

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

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

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

對於開發者來說,如果只需要使用已有的幣對價格數據,可以直接使用Chainlink提供的Price Feed。每個交易對都有一個單獨的Price Feed(也稱爲Aggregator),實際上是一個AggregatorProxy合約。這些合約提供了幾個關鍵方法,如獲取最新價格數據的latestRoundData()。

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

大多數應用場景下,合約只需讀取最新價格。值得注意的是,以美元爲計價單位的交易對,其價格數據精度通常統一爲8位小數,這簡化了不同代幣間的精度處理問題。

通過這種方式,智能合約可以方便地獲取和使用外部世界的數據,極大地拓展了區塊鏈應用的可能性。

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

LINK8.35%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 9
  • 轉發
  • 分享
留言
0/400
末曾在场vip
· 07-25 03:29
欸欸 这可不就是LINK的用处嘛
回復0
Stake_OrRegretvip
· 07-24 19:30
link链 yyds
回復0
MEV猎人老王vip
· 07-24 15:06
LINK早涨知道吗
回復0
心若草莓冰vip
· 07-23 04:14
link绝对扛不住这波行情吧
回復0
not_your_keysvip
· 07-23 03:59
早买早解脱 $LINK 已被严重低估
回復0
GasFeeCriervip
· 07-23 03:59
link还看好吗
回復0
BearMarketBardvip
· 07-23 03:57
币圈无时无刻不在破圈
回復0
gas费烧烤摊vip
· 07-23 03:55
link已经跌麻了
回復0
熊市避雷针vip
· 07-23 03:55
Link牛逼啊!
回復0
查看更多
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)