深度解析:預言機如何連接智能合約與外部世界

robot
摘要生成中

預言機技術深度解析

在區塊鏈生態中,預言機扮演着連接智能合約與外部世界的關鍵角色。作爲一種基礎設施,預言機系統能夠爲鏈上智能合約提供來自鏈外的信息和數據。

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

舉例來說,假設我們在以太坊網路上部署了一個需要獲取某日原油交易量數據的智能合約。由於智能合約本身無法直接訪問鏈下的現實世界數據,這時就需要借助預言機來實現這一功能。具體流程是:智能合約將所需日期的原油交易量寫入事件日志,隨後鏈下會啓動一個監控進程來訂閱該事件。一旦檢測到相關請求,該進程就會通過提交鏈上交易的方式,調用合約的相應方法,將指定日期的原油交易量信息傳遞給智能合約。

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

在衆多預言機項目中,Chainlink佔據了市場的主導地位。作爲一個去中心化的預言機解決方案,Chainlink致力於以最安全的方式爲區塊鏈提供現實世界的數據。它在基本預言機原理的基礎上,圍繞LINK代幣構建了一個通過經濟激勵形成良性循環的生態系統。Chainlink預言機的觸發需要通過LINK代幣的轉帳來實現,而LINK是以太坊網路上的ERC677合約。基於LINK ERC677代幣完成的預言機功能屬於請求/響應模式。

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

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

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

在預言機服務的請求過程中,消費者首先需要確認預言機的可信度,因爲服務提供前需要預付費用。預言機合約的onTokenTransfer方法會進行一系列安全檢查,包括驗證轉帳是否爲LINK代幣、檢查數據長度是否超限、驗證function selector等。通過檢查後,合約會生成唯一的requestId,設置過期時間,並發出包含請求數據的OracleRequest事件。

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

鏈下節點在接收到請求後,會通過調用fulfillOracleRequest方法來響應。該方法會進行一系列驗證,包括檢查調用者權限、驗證請求有效性等。驗證通過後,節點會調用請求者合約的回調函數,將數據返回給請求方。

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

對於開發者來說,如果只需使用已有的幣對價格數據,可以直接調用官方提供的Price Feed接口。每個交易對都有獨立的Price Feed (即AggregatorProxy),提供了包括decimals()、description()、version()、getRoundData()和latestRoundData()等查詢方法。其中latestRoundData()方法返回的answer參數即爲最新價格。值得注意的是,以美元爲計價單位的交易對,其精度通常統一爲8位小數。

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

通過這種方式,開發者可以方便地獲取和使用鏈上預言機提供的實時價格數據,而無需自行處理復雜的API調用和數據驗證過程。

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 5
  • 分享
留言
0/400
AlwaysAnonvip
· 10小時前
喝酒才能想明白的事儿 链克懂个啥
回復0
熊市种菜人vip
· 10小時前
还在抄Chainlink功能呢..
回復0
钱包恐慌症患者vip
· 10小時前
link牛啊 这波稳了
回復0
吃面还是吃币vip
· 10小時前
link链 无敌了属于是
回復0
薛定谔1空投vip
· 10小時前
链克真是yyds!一把梭哈它
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)