Chainlink 鏈接區塊和“萬物”

Chainlink 鏈接區塊和“萬物”

現有的區塊鏈通常是一個獨立閉環的系統,它的賬目都是在鏈上自發產生和結算的。要想讓區塊鏈應用到更多領域,預言機是整個生態中必不可少的重要環節。只有當區塊鏈與外界連通,才能賦能實體業務更多的可靠驗證和計算能力。

預言機(oracle mechanism)是鏈外信息寫入區塊鏈的一種機制。

閉環運行的區塊鏈

在區塊鏈賬本上,所有的賬都必須有一個起始,其他的賬都是“起始賬”的延伸。最初的 50 個比特幣就是在比特幣的創世區塊(Genesis Block)上產生的,之後它們在區塊鏈賬本上流通,從 A 賬戶轉賬到 B 賬戶,又從 B 賬戶轉到 C 賬戶。

創世區塊即比特幣的第一個區塊,是比特幣區塊鏈的開始。

又如在以太坊上,我們使用智能合約發行代幣,代幣一般使用鑄造函數(mint)發行到區塊鏈上,鑄造函數(一段程序代碼)的運行結果就是代幣的起始賬目,當鑄造成功後,代幣就具備了在以太坊上流通的特性。

不管是比特幣還是以太坊,現有的區塊鏈系統都具有這種閉環運行的特性,即賬目的產生需要一個起始。如果我們更寬泛的看待這個問題,就會發現區塊鏈上的事物(數據)都是在區塊鏈之上依據一定的規則“憑空”產生的,基於這個“憑空”的開始,才有了後面整個過程。

Chainlink 鏈接區塊和“萬物”

可以看到狀態的起始、變化和最後的終止都運行在閉合的區塊鏈中。因為區塊鏈的閉環運作模式,讓現有的互聯網、傳統的經濟要素都難以接入。那麼,區塊鏈的應用就只存在兩種方式:

  • 在閉環中完全重塑一種新的機制
  • 將現有機制中的要素映射到閉環系統中

重塑

比特幣 ,以太幣是區塊鏈應用的經典案例,它們的產生就是重塑“貨幣”的過程。通過使用區塊鏈構建的代幣系統,可以在不依賴外部數據的閉環中運行。代幣通過挖礦等規則“憑空”產生(消耗電能),得益於區塊鏈共識算法,代幣的所有權不受第三方控制,只要保存好自己手中的私鑰,其他任何人都不能挪動或者銷燬這些代幣資產。這些在區塊鏈上重塑的代幣由於得到社會的廣泛認同,產生了價值,並得以流通。

這種重塑已經產生巨大的能量,對現有的金融乃至社會認識都產生了巨大的影響。而在代幣重塑之上,智能合約和更多創新機制在不斷的孕育和成熟。

鏈上重塑的事物都具備閉環中運行的特點,它們可以不與其他系統進行技術上的交互,它們由人們共同的認識產生了新的價值,成為一種普世的新機制。

映射

映射是一種更通用的區塊鏈應用方式,也是一個必不可少的方式。

想象我們在區塊鏈上設置了一個體育比賽頒獎程序,獎金可能是比特幣或者以太幣。獎金的頒發需要根據鏈外的比賽結果進行結算,因此我們需要將比賽數據映射到鏈上。在頒獎過程中,程序獲得映射數據後才能計算並執行獎金的分發。

另一種場景是資產映射。如房屋一類的固定資產,其產權是在國家統一登記頒發。如果這類資產能映射上鍊,資產的權屬證明和產權交割都會變得極其快捷和方便。

將鏈外數據或實體映射到鏈上,是將區塊鏈應用和外部世界鏈接的重要方式。

重塑和映射,不是二元擇一,不是非此即彼的單項選擇,它們往往相互交織、彼此結合,創造出新的模式。

區塊鏈提供了透明和可信的計算能力,由於其閉環運行的特性,當數據本身就在鏈上產生(如代幣),整個計算的結果自然是準確可信的;但是如果業務涉及鏈下數據,如何確保數據的可信就是一個重大的議題。預言機的功能就是將鏈外數據鏈接到區塊之上,如何建立一種準確和可靠的鏈接機制是預言機設計的根本目標。

注意,預言機並不是映射的唯一方式。很多場景,如房屋產權可能只需要一箇中心化的權威機構直接將數據打包到區塊鏈即可。

Chainlink 如何鏈接外部數據

Chainlink 的目標是建立一套去中心化的預言機,為智能合約提供鏈外數據訪問的能力。

機制概覽

Chainlink 的機制如下圖所示:

Chainlink 鏈接區塊和“萬物”

  • 鏈外數據

鏈外數據可以是互聯網、支付機構、物聯設備或者不同種類區塊鏈(跨鏈)提供的 API 接口。可以是任何可以讀取的數據源。

  • 外部數據適配器

外部數據適配器是鏈外數據的“翻譯”,將外部數據轉化為 Chainlink 節點中的統一數據結構。適配器可以用任何語言編寫。

  • Chainlink 節點

Chainlink 節點會訂閱區塊鏈產生的事件。Chainlink 收到指定的事件後,會進行任務調度,使用數據適配器獲取鏈外數據(一般情況下 Chainlink 可直接讀取開放的 API,在特殊情況下才會使用外部數據適配器)。Chainlink 節點需要包含一個熱錢包用於交易發送,將外部數據寫回產生事件的區塊鏈上。

  • 區塊鏈節點

為 Chainlink 節點提供可監聽的事件,同時負責廣播 Chainlink 節點的數據寫入交易。

數據的請求和寫入

Chainlink 使用了請求響應模式,即當客戶端發起一個請求後,Chainlink 接收請求,執行外部數據功功能,並將數據寫回鏈上。

當前的 Chainlink 主要構建在以太坊網絡上。請求響應機制需要在以太坊網絡上部署「客戶端合約」和「Oracle 合約」。客戶端合約用於數據請求的發起和數據結果的消費;Oracle 合約會產生請求事件,供 Chainlink 進行監聽,同時也作為 Chainlink 寫回數據的中轉站。

Chainlink 鏈接區塊和“萬物”

交易過程如上圖所示:

1.發起數據請求到客戶端合約

2.客戶端合約向 Oracle 合約發起調用,Oracle 合約接受交易後產生事件

3.Chainlink 監聽到 Oracle 合約產生的事件,進行外部數據獲取,並將數據寫回鏈上

4.數據通過 Oracle 合約寫入客戶端合約

最終,客戶端合約中的數據更新為本次請求獲得的最新數據結果。

多數據聚合

上節介紹的請求響應過程只有一個 Oracle 合約和一個外部數據源,這時並不能完全保證數據的準確性和可靠性。為了獲得更高的準確性和可靠性,可以使用更強大的多數據源客戶端。

Chainlink 鏈接區塊和“萬物”

多數據源客戶端也是以太坊上的一個智能合約,相比普通客戶端,它的一次交易會向多個 Oracle 合約發起請求,每個 Oracle 合約都會產生各自的事件。通常,一個 Oracle 合約代表著一個數據提供者,每個 Oracle 合約之後的數據提供者監聽到事件後,各自去獲取不同的外部數據,數據提供者將數據回寫到自己的 Oracle 中。最終,會有多條數據結果匯聚到客戶端合約。

在多數據源客戶端合約,我們可以編寫一系列的聚合規則。比如:收到多個數據後去掉異常值,計算剩餘數據的均值作為結果。合約的聚合規則可以靈活定製,想要向哪些數據提供者發起請求也可以進行配置。

Chainlink 對數據提供者有一套的罰沒機制,並希望構建強大的聲譽系統對數據提供者進行評估。這些功能將在 Chainlink 節點上實現,新的功能還在不斷的開發和改進中,本文不再詳述。

該機制目前較大的缺點可能是成本問題,客戶端對每一個 Oracle 的請求都會收取 0.1 的 LINK 幣作為費用,多個 Oracle 聚合時成本較高;同時請求響應模式也有一定的延遲,從請求發出到數據寫回通常需要經過幾個區塊的間隔;最後一點缺憾是不同的客戶端請求同一個數據會造成同一數據重複寫入區塊,造成一定的資源浪費。

不論如何,Chainlink 創建了一種智能合約主動獲取鏈外數據的機制,這些鏈外數據幾乎可以來自任何數據源。同時,Chainlink 提供了一種去中心化的解決方案(多個 Oracle 的聚合),提高數據準確性和可靠性。

打破邊界

任何的數據源,不管是來自互聯網,API 產生的行情、新聞、輿論數據;還是各種物聯設備,使用傳感器獲取的定位、速度、溫度、照片,人類的心跳、血壓;不管是任何數據實體、物理對象乃至智能設備採集的人類體徵,都可以藉助預言機發送到智能合約,創建出由數據驅動的智能合約。

支付、交易、保險、治理、遊戲所有的一切都在使用傳統賬本理念,它們都通過中心化的價值協商進行價值交換。為了保證賬本準確性,保證整個價值交換系統的可靠性,我們耗費了大量的資源去構建複雜的規則,以求解決多方的衝突和糾紛。這套傳統機制的效率或許已經接近極限,其效用幾乎達到了最大化,最終所產生的摩擦仍舊消耗著巨大資源。打破邊界,使用區塊鏈的共識機制,藉助預言機和智能合約,我們或許可以創建一個互聯、安全、數據驅動的全新價值交換體系,在一個新起點之後,或許會少一些衝突和糾紛,釋放更多的創造力。

預言機打破了區塊鏈和外部世界的邊界,將區塊鏈可靠的驗證和計算能力賦能更多應用。


分享到:


相關文章: