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

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

在區塊鏈技術中,預言機是爲智能合約提供外部數據的關鍵基礎設施。它充當了連接區塊鏈內部和外部世界的橋梁,使智能合約能夠獲取鏈下信息。

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

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

Chainlink是當前市場佔有率最高的預言機項目。它通過去中心化方式,安全地向區塊鏈提供現實世界的數據。Chainlink圍繞LINK代幣構建了一個經濟激勵驅動的生態系統。其預言機功能主要通過LINK代幣的轉帳來觸發,這屬於請求/響應模式的實現。

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

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

在請求預言機服務之前,用戶需要確認該預言機的可信度。預言機的可信度通常可以根據其歷史表現、聲譽系統和抵押機制等因素來評估。

當預言機收到服務請求後,會進行一系列安全檢查,包括驗證代幣類型、檢查數據長度和function selector等。通過檢查後,預言機會生成唯一的requestId,設置過期時間,並發出OracleRequest事件。該事件包含了請求的詳細信息,如數據格式、回調地址和方法ID等。

鏈下節點監聽到OracleRequest事件後,會解析請求信息,通過API獲取所需數據,然後調用fulfillOracleRequest方法將數據提交到鏈上。這個過程中會進行多重驗證,確保數據的準確性和時效性。最後,預言機通過回調函數將結果返回給請求合約。

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

對於開發者而言,Chainlink還提供了更便捷的方式來獲取常用幣對的價格數據。每個交易對都有獨立的Price Feed(也稱爲Aggregator),開發者可以直接調用這些Feed的接口來獲取最新價格信息,無需自行指定數據源URL。

Price Feed通常提供了幾個核心方法:

  • decimals():返回價格數據的精度
  • description():返回交易對名稱
  • version():指示Aggregator類型
  • getRoundData(_roundId):獲取特定輪次的價格數據
  • latestRoundData():獲取最新價格數據

大多數應用場景下,合約只需調用latestRoundData()方法即可獲取最新價格。對於以美元計價的交易對,價格精度通常統一爲8位小數,簡化了不同代幣間的精度處理。

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

通過這種方式,Chainlink爲區塊鏈應用提供了可靠、實時的外部數據訪問能力,極大地拓展了智能合約的應用範圍和潛力。

LINK-5.67%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 9
  • 分享
留言
0/400
rugpull_survivorvip
· 07-28 13:40
看着清爽,还是得干了link
回復0
无常损失恐惧症vip
· 07-27 09:59
预言机玩家零肉臊子
回復0
空投碎片收集者vip
· 07-26 03:39
link真的是yyds
回復0
StableGeniusvip
· 07-25 15:51
实际上,如果你看看节点运营商,这个系统相当集中…无语
查看原文回復0
MissingSatsvip
· 07-25 15:51
预言机我只信link,其他都别碰
回復0
SerumDegenvip
· 07-25 15:50
在$LINK上损失了一半的投资组合,但仍然唱多... 说实话,要么是预言机,要么就是死亡
查看原文回復0
空投舔狗vip
· 07-25 15:49
预言机行情好到飞起!
回復0
Degen_Whisperervip
· 07-25 15:47
我靠 link真滴牛批
回復0
LidoStakeAddictvip
· 07-25 15:35
别家预言机还有活路吗
回復0
查看更多
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)