Chainlink預言機基本原理(一)

買賣虛擬貨幣
本文我們來從技術上簡述一下Chainlink的基本原理。如果用最短的一句話解釋什麼是Chainlink,可以說Chainlink一個去中心化的預言機專案,所以為了理解Chainlink的工作原理,我們首先要明白什麼是預言機。預言機預言機的英文為Oracle,和著名的資料庫服務提供商Oracle(甲骨文)重名,但是兩者除了名字相同以為並沒有任何關係。Oracle這個單詞是什麼意思,下面是我在vocabulary.com上查到的Oracle的含義:Back in ancient times, an oracle was someone who offered advice or a prophecy thought to have come directly from a divine source. In modern usage, any good source of information can be called an oracle.中文的大概意思是:在古代,oracle是一個提出建議或預言的人,他的建議或預言被認為是直接來自於神。在現代用法中,任何好的資訊來源都可以稱為oracle。
這樣就不難理解了,Oracle傳達了萬能全知的神的旨意,而甲骨文最初就是用來占卜吉凶時的記錄,也在當時也被認為是神諭,傳達了神的意思。說以不管是“預言機”還是“甲骨文”都表達了“資訊源”的意思。計算機領域內的預言機一詞,最早是圖靈提出的。圖靈在圖靈機(Turing Machine)的基礎上,加入了一個稱為預言者(oracle)的黑盒,組成了預言機(Oracle Machine)。所謂預言者,是一個可以回答特定問題集合的實體。即它可以向圖靈機系統內部輸入資訊,幫助圖靈機完成運算。以太坊的智慧合約是“圖靈完備(Turing Complete)”的,某種意義上可以看做一個圖靈機,所以以太坊的設計者借鑑這個概念,把向“圖靈完備的智慧合約”這個圖靈機輸入資訊的也被稱為預言機oracle。所以說“預言機”這個名字並不是區塊鏈技術領域內的獨創概念,它來源於非常早期的計算機抽象設計,在密碼學等領域內也都有類似的概念。而在區塊鏈領域,預言機被認為是可以為智慧合約提供外部資料來源的系統。從傳統技術架構方面來看,預言機是連線智慧合約與區塊鏈外部世界的中介軟體(middleware),是區塊鏈重要的基礎設施,它的作用是為區塊鏈上的智慧合約(Smart Contract)提供資料資訊的。正如以太坊的定義,區塊鏈是一個交易驅動的狀態機(a transaction-based state machine),它能做的事情非常簡單,就是透過向區塊鏈提交事務/交易(transaction),來將區塊鏈從一個狀態轉變成另一個狀態。為了保持共識,EVM的執行過程必須完全確定,並且僅基於以太坊狀態和簽名交易的共享上下文。這產生了兩個特別重要的後果:一個是EVM和智慧合約沒有內在的隨機性來源;另一個是外部資料只能作為交易的資料載荷引入。用通俗的話講,區塊鏈沒有主動獲取資料的能力,它能用的只有區塊鏈自己本身的資料。資料的缺失導致智慧合約的應用範圍非常少,目前大部分的應用都是圍繞著token來展開的。區塊鏈的確定性的意思是,在任何節點上,只要連入到區塊鏈的分散式網路中,它就可以同步所有的歷史區塊,回放出一套完全相同的賬本。換句話說:在沒有網際網路連線的情況下,給定完整的塊,節點必須能夠從頭開始重新建立區塊鏈的最終狀態。如果賬本在形成過程中,依賴於某個外部的API呼叫結果,那在不同時間不同環境下回放的結果就會不一樣。這種情況是區塊鏈所不允許的,所以區塊鏈在設計之初就沒有網路呼叫。

那麼要實現向區塊鏈提供資料,應該怎麼做呢?區塊鏈能留下的只有賬本,而區塊鏈所能輸入的只有交易。我們就從這兩個方面入手。

幾乎每一個合約系統,都會有事件記錄的功能,比如以太坊中的EventLog功能。

下面我們透過一個例子,來介紹一下預言機的基本原理。我們在以太坊鏈上建立一個使用者合約,它需要獲取到某個城市的氣溫資料。當然,智慧合約自己是無法獲取到這個發生於鏈下真實世界中的資料資訊的,需要藉助預言機來實現。智慧合約將需要獲取天氣溫度的的城市寫入到EventLog中,鏈下我們會啟動一個程序,監聽並訂閱這個事件日誌,獲取到智慧合約的請求之後,將指定城市的溫度,透過提交transaction的方式,呼叫合約中的回填方法,提交到智慧合約中。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;