什麼是“預言機”?它真能預知未來嗎?

在之前的推送裡,我們就有介紹過智能合約,而智能合約中是怎麼判定現實世界結果的呢?

比如說小卡和小明使用智能合約打賭今天中午12:00深圳是否會下雨,到了時間,智能合約會自動判定結果然後將獎勵劃給勝方,為實現去中心化、不受第三方控制的過程,智能合約是在區塊鏈上的沙盒運行環境(通常是虛擬機)部署的,與外界隔離。

當智能合約在虛擬機中運行時,並不能進行網絡操作、文件I/O或執行其他進程。並且出於運行獨立性和安全性的要求,智能合約之間也只能進行有限的調用。

智能合約允許在沒有第三方的情況下進行可信交易,實現交易的可追踪且不可逆轉性,但是無法與區塊鏈外的數據發生直接聯繫(如外部數據的獲取與調用等)。

那麼問題來了,到了中午12:00時程序如何獲取當時深圳的天氣信息呢?

那就需要一個外部的介質將數據寫入區塊鍊或分佈式賬本中,那麼問題又來了,如果是由第三個人小紅進行結果輸入,如何保證公平性和去中心化?假如小紅被其中一方收買,即使現實沒有下雨也輸入了下雨的結果,那麼智能合約就失去了其意義。

那該怎麼辦?

這時候就需要“預言機”了。難道“預言機”能自動預知未來?不要被它的名字誤導了,其實並不是這樣。

什麼是預言機

其實,“預言機”並不是什麼神秘的魔盒,而是一種機制:將區塊鏈外的信息傳導到區塊鏈內。並且我們需要明確的是,預言機只負責數據的可信獲取,不直接參與交易的執行。

還是以上述的例子,如果小紅一個人容易被收買,那麼如果找來隨機的20人來寫入結果呢?讓他們每個人拿出十塊錢作為保證金,如果按照準確情況寫入結果就能拿回保證金甚至還能獲得額外獎勵,而如果惡意寫入錯誤的結果,就會被扣除保證金作為懲罰。這20個人做的事情就是簡單的預言機做的事情。

此外,從這20個人的組織和工作形式(即是否去中心化)又可以將現有的預言機分為兩類:中心化預言機,如Provable;去中心化預言機,其中又包括可信聯盟預言機,(如Maker DAO 的OSM)和去中心化預言機,如ChainLink、Tellorr、Band、Augur、UMA。

中心化預言機指由單一的特定預言者(Oracle)為服務請求方(User)提供數據,對某一特定的數據服務請求,在請求方指定n個數據來源並向中心化預言者發送合約請求後,服務商從1個或多個數據來源(Sn)的接口調用數據。中心化預言機的好處是高效、成本低,因為單一數據來源的成本遠低於從多個數據來源匯總的成本,且僅從最可信的一個數據源調用數據,保證了整個預言機系統運行的高效。

而去中心化預言機則由多個預言者(Oracle)共同提供數據獲取服務,利用糾刪碼(Erasure encoding)技術處理冗餘答案來提高整個預言機系統的判斷準確率。所有的預言者(On)將在規定時間內將數據源(Sn)提交的答案匯總和處理後,將匯總後的答案反饋給請求方(User)。

總的來說,中心化預言機的商業模式本質上是一個數據服務平台,而去中心化預言機是一個龐大的的數據服務網絡,全網的互通互聯,因其有效整合了系統加盟的多個預言者的資源,從而形成有效的商業合力。

因此不難理解中心化預言機在性價比和用戶體驗上具有先發優勢,而去中心化預言機因在客情和生態的模式上佔優而具有較大的後發優勢,也在web3世界裡成為主流發展方向。

預言機的實現原理和應用現狀

剛剛所打的比方仍然是需要人手進行,實際上預言機是怎麼實現區塊鏈上的“先知”功能的呢?

實際上,預言機在鏈上鍊下信息傳遞過程中扮演著數據來源API接口之間橋樑的角色,從而實現區塊鏈接口與外部數據API接口形成對接。它既可以從原生的鏈上獲取數據,也可以通過爬蟲或者可信第三方機構從鏈下獲取數據。

通俗來說,“預言機”(即oraclemechanism,一般稱Oracle)就是鏈上與鏈下信息交互的橋樑。有了預言機,就可以解決智能合約不能獲取非預先部署好的鏈上信息的痛點,從而在更好地利用區塊鏈技術接入現實世界,發展出更多的業務可能性,比如航班的延誤險、汽車意外保險、商業約定等。

預言機總結

總的來說,預言機是相當於一個數據接口,不參與智能合約的執行、決策,而僅作為鏈上鍊下信息交互的一個橋樑,也可以理解為我們做研究得出結論時所用的參考文獻庫。

當然,它仍存在一些不足,比如說數據來源的真實性、準確率,不管是中心化或非中心化的預言機都是有可能出現錯誤的,並且這種錯誤引用可能給智能合約參與方帶來巨大的不可逆損失。

Total
0
Shares
Related Posts