在區塊鏈的世界裡,智能合約要存取現實數據,離不開預言機(oracle)機器。其實,這一點很多人都低估了。



智能合約,對於區塊鏈內部的數據非常強大,但完全無法存取外部世界的資訊。例如,想將今日的原油交易量反映到合約中,這個資訊在鏈外,因此需要某種中介。這就是預言機的角色。

這個預言機的運作機制,其實就是簡單的請求-回應方式。智能合約向外部發出「請提供這個數據」的請求,預言機捕捉到請求,取得現實世界的數據後再傳回鏈上。這一連串的流程,就是預言機的基本運作。

在區塊鏈行業中,佔有壓倒性份額的專案是 Chainlink。Chainlink 是一個去中心化的預言機,專注於以最安全的方式將現實世界的數據供給區塊鏈。它以 LINK 代幣為核心,並透過激勵設計建立生態系。

要運行 Chainlink 的預言機,必須轉移 LINK 代幣。這些 LINK 以以太坊網路上的 ERC677 標準實現。這點很重要,因為標準的 ERC20 不能同時完成支付和服務請求。因此,Chainlink 提出了獨特的 ERC677。

ERC677 的核心方法是「transferAndCall」。它允許在轉帳的同時,完成服務請求,兩者在一個交易中完成。用戶執行 transferAndCall 時,除了 ERC20 的轉帳外,還會自動調用接收地址的 onTokenTransfer 方法。

預言機收到請求後,首先會進行多重安全檢查。確認發送方是否真的是 LINK 合約,資料大小是否合適,函數選擇子是否正確。通過驗證後,會產生一個唯一的 requestId,並記錄在事件日誌中。

這個事件會被鏈外的節點監控。節點從事件中讀取必要資訊,通過網路 API 取得現實世界的數據。之後,調用 fulfillOracleRequest 方法,將數據傳回鏈上。這一流程,構成了預言機的完整循環。

在實作層面,Chainlink 提供了現有交易對的價格預言機,也就是 Aggregator。使用它,開發者不需自行指定 API。像 ETH/USD 這樣的主要交易對,已經準備好,只需調用 latestRoundData() 方法,即可取得最新價格。

大多數應用只需讀取最新價格數據即可。尤其是以美元計價的價格,精度統一設為 8 位數,無需複雜處理。也就是說,利用預言機實現價格預言的流程,比想像中簡單。

正因如此,DeFi 協議和複雜的金融商品才能得以成立。沒有預言機,區塊鏈與現實世界的橋樑就無法建立。Gate.io 也可以看到許多利用預言機的專案,如果有興趣,可以去看看。
ETH-5.79%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 打賞
  • 回覆
  • 轉發
  • 分享
回覆
請輸入回覆內容
請輸入回覆內容
暫無回覆