預言機(Oracle)是一種餵價(資料互通)服務,可作為區塊鏈與外部世界之間的橋樑。它可以將鏈下資料傳入區塊鏈網絡,使鏈下資料能夠被智慧合約使用;或將鏈上資料傳出給鏈下客戶,讓他們根據鏈下資訊採取行動。主流的區塊鏈預言機包括 Chainlink、UMA Oracle、Witnet、Band Protocol 等。
預言機合約是一種智能合約。其在鏈上接收來自其他智能合約的資料請求,將請求傳遞給預言機節點。在收到預言機節點回饋後又將資料結果廣播給請求者。
預言機節點是預言機服務的鏈下組成部分。其從外部來源獲取、驗證資訊並將資訊傳輸給預言機合約。
鏈上是一個封閉的系統,智能合約是不能存取區塊鏈以外的網路和資訊的。因為鏈下資料來源是可操作、可篡改且不透明的,而這不利於區塊鏈節點之間形成共識,即不利於區塊鏈網路的安全性。
舉個例子,假設一個智能合約需要根據當前 ETH-USD 匯率執行交易,其從傳統價格 API 取得該資料。從不同資料來源得到的資料可能會不一致(更不用說 API 可能會被棄用或被駭客入侵),這意味著執行相同合約程式碼的節點會得到不同的結果。也就是說,這可能會導致網路無法達成共識,而區塊鏈作為去中心化運算平台的價值也會被削弱。
因此,對於區塊鏈而言,當智慧合約輸入特定值只能產生一個特定的結果這一點非常重要。
此外,鏈上智能合約需要與鏈下資料結合才能實現各種各樣的應用,例如預測市場、保險等。
為了解決這些問題,Oracle 將外部資料上傳並儲存在區塊鏈上。由於鏈上資料不可更改且公開可用,因此鏈上節點可以安全地使用鏈下資料來執行交易,並且不會破壞共識。
對於去中心化借貸市場而言,協議需要知道資產(例如ETH)當前市場價格來決定使用者抵押品的價值。這樣他們才可以評估一個使用者的借貸能力、檢查其部位是否安全。
在使用者索賠時,保險協議需要鏈上/鏈下資料來驗證可保事件的發生與否。例如,當某些天氣現象發生時,保險協議需要向購買農作物保險的使用者支付補償。這裡的天氣資料就由預言機提供。
跨鏈預言機是指在不同區塊鏈之間讀寫訊息的預言機。其為區塊鏈協議提供了一個中間件,使它們無需花費時間和開發成本即可連接到任何區塊鏈。
你可能對以下資訊有興趣:
- 什麼是 Chainlink?
- 什麼是 DeFi?