鏈下計算,尚在征途的擴容良方——區塊鏈技術引卷之十三

買賣虛擬貨幣

通證通研究院 × FENBUSHI DIGITAL 聯合出品

文:宋雙傑,CFA;田志遠;王澤龍;金佳豪

特別顧問:沈波;Rin

導讀

鏈下計算(Offchain Computation)是區塊鏈鏈下擴容的解決方案之一,目前已經提出了多種鏈下計算方案並且正在逐步落地。

摘要

當前區塊鏈普遍面臨鏈上資料處理能力不足的短板,制約了區塊鏈進一步應用的可能性。以此為背景,鏈下計算作為擴容方案之一被提出,其基本思路是將原本置於鏈上處理的各類事務,移至鏈下處理,而鏈上僅保留驗證的部分,以此間接提升鏈上的資料處理能力。

鏈下計算主要包括可驗證的鏈下計算、“飛地型”鏈下計算、鏈下安全多方計算、激勵驅動型鏈下計算四種方式。它們各自存在優劣勢,有些方案較為新穎,較少甚至沒有專案部署,如zk-STARKs、Bulletproofs等,有些方案則已經過了大型專案的檢驗和認可,如zk-SNARKs。

可驗證的鏈下計算涉及到兩類角色:驗證者與證明者,前者位於鏈上,後者位於鏈下。

“飛地”型鏈下計算基於TEE(可信執行環境,用於確保機密性和完整程式碼執行)。在該計算模式中,鏈下計算專門於可信的“飛地”中進行。

安全多方計算可以實現在各方均不知道完整資料內容的情況下,透過聯合它們對各自部分資料的計算結果,得到最終結果。

激勵驅動型鏈下計算假設參與計算的各方都是理性的經濟人。該模式主要涉及到兩類角色:處理計算任務的求解者、重新計算求解者所處理過的計算任務並檢驗其是否有誤的驗證者。但在一些方案中會引入更多的角色。

目前,多種鏈下計算方案已經取得進展或正在落地,鏈下計算作為區塊鏈的擴容方案之一,未來將獲得進一步的發展和應用。

風險提示:技術進展不及預期、鏈上鍊下通道安全

目錄

1  鏈下計算,鏈上驗證

2  鏈下計算的四種主要模式

2.1  可驗證的鏈下計算

2.2  “飛地”型鏈下計算

2.3  鏈下安全多方計算

2.4  激勵驅動型鏈下計算

3  尚在征途,逐步落地

正文

鏈下計算是區塊鏈下擴容的解決方案之一。

1鏈下計算,鏈上驗證

新交易的發生導致鏈上的“狀態”發生了改變,區塊鏈可以被看作是處理一個“狀態轉換”函式的機器。鏈下計算是一種將計算“狀態轉換”函式的過程由鏈上轉移至鏈下,而後相應的結果交由鏈上驗證的模型。

首先,任意鏈下節點從區塊鏈中檢索相關的狀態作為輸入。與鏈上對資料完全公開的處理模式不同,鏈下計算過程中的相關資訊可以是公開的,也可以是私密的。

基於輸入值,鏈下的節點計算出“狀態轉換”函式的結果,而後將其傳送至鏈上。公開的輸入無需隱藏計算過程,而私密輸入的計算過程則需要保持私有。鏈上對該函式值進行校驗,如果函式值正確,則其被記入鏈上的狀態。

為什麼需要引入鏈上驗證的環節呢?因為鏈下計算“狀態轉換”函式並提交結果時,可能存在造假或者欺詐的情況,引入鏈上的驗證者(Verifier)則可以有一個校正的B計劃。

2鏈下計算的四種主要模式

2.1  可驗證的鏈下計算

要實現可驗證的鏈下計算模型,有三種演算法可以作為路徑:

(1)概念

這一模式涉及到兩類角色:驗證者與證明者(Prover),前者位於鏈上,後者位於鏈下。該模式的運作過程同鏈下計算的基本定義類似,在此不贅述。

(2)主要特性

非互動性。證明者能夠在一條資訊中(即一次鏈下到鏈上的傳輸過程),使驗證者信服。互動性強的方案將產生多筆區塊鏈事務,增加區塊鏈網路的負擔並抬高驗證成本。

低廉的驗證成本。特殊情況下,如對機密性的資訊進行檢驗時,相對較高的驗證成本是可接受的;否則正常情況下,鏈下計算+鏈上驗證的成本應該低於純粹的鏈上計算成本。

(3)實現情況

要實現可驗證的鏈下計算模型,有三種演算法可以作為路徑:

1)zk-SNARKs

zk-SNARKs是零知識證明這一演算法的變體,其名稱是:Zero knowledge(零知識)、Succinct(簡要性)、Non-interactive(非互動性)以及Arguments of Knowledge(知識論證)、Proofs(證明)這些詞彙的複合縮寫。

相比零知識證明這一“本體”,zk-SNARKs使得證明者和驗證者間互動極少甚至沒有,並且其驗證成本較低,計算安全性相對較高。

目前,zk-SNARKs依賴於證明者和驗證者之間的初始化可信設定——這意味著需要一組公共引數來構建zk-SNARKs,從而建立私有事務。這些引數被編入協議中,是證明交易有效性的必要因素之一。其潛在的問題是,引數通常由小部分群體制定,可能存在信任問題。此外,在理論上,如果證明者擁有足夠的算力,就可以提交假證據,影響整個系統。這是為什麼量子計算機被認為是這種演算法的威脅的原因。

目前部署zk-SNARKs演算法的知名專案有Zcash、Loopring等。

以太坊也有望部署zk-SNARKs。2019年1月份時,以太坊基金會與初創企業Matter在以太坊測試網路上,聯合釋出了使用zk-SNARKs的側鏈擴容方案。

2)Bulletproofs

該演算法是由倫敦大學學院的Jonathan Bootle與斯坦福大學的Benedikt Bunz於2017年末共同提出,它屬於非互動性的零知識證明可驗證計算方案,相較zk-SNARKs,它的驗證成本更高一些,但是不需要可信的初始設定。

Monero是主要加密通證中率先部署Bulletproofs這一演算法的。據Monero官網所述,2018年夏季,其社羣釋出了針對Monero部署Bulletproofs的審計報告,且Bulletproofs率先在Monero Stagenet上部署,至2018年10月,Monero主網完成了Bulletproofs的部署。

據Monero Research Lab研究人員Sarang Noether的說法,自Bulletproofs部署以來,Monero上事務的平均體積下降了80%,交易費用也顯著下降。

3)zk-STARKs

該演算法由以色列理工學院的Eli-Ben-Sasson教授創造。它是zk-SNARKs的替代品,並且被認為是一種更高效的演算法,但囿於其難以部署的現狀,未來是否會有更高的價效比尚未可知。

與Bulltetproofs類似,zk-STARKs不需要初始化可信設定——因為它使用抗碰撞雜湊函式(collision-resistant hash functions)進行更精簡的對稱加密,並且該演算法消除了zk-SNARKs中存在的數論假設——後者執行成本高且易受到量子計算機的攻擊。

但是相比於zk-SNARKs,它的缺點在於證明可能會更復雜,從而限制了其潛在效能的發揮。

2.2  “飛地”型鏈下計算

(1)概念

這一計算模式基於TEE。在該計算模式中,鏈下計算專門於可信的“飛地”中進行,“飛地”的每一條訊息都可以被可信的外部實體認證並出具證明。啟動計算時,公開的輸入值從區塊鏈上獲得,而私密的輸入值則由鏈下節點選擇性地加入進去。輸出結果的完整性透過鏈上驗證“飛地”的證明進行驗證。一旦驗證成功,新的狀態會被記入區塊鏈。

(2)實現情況

目前Enigma與Ekiden等專案嘗試了該方案。

在Enigma專案中,計算既可在鏈上執行,也可在單獨的鏈下“飛地”中執行。Enigma的特定指令碼語言允許開發者將目標項標記為私密的,進而強制要求以鏈下模式進行計算。

與Enigma相反,Ekiden不支援鏈上計算,區塊鏈僅被用於持久的狀態儲存。程式碼和私有輸入值由僅同“飛地”通訊的鏈下客戶端提供,一旦計算完成,“飛地”將結果直接反饋回客戶端,與此同時,狀態被記錄到區塊鏈中。

2.3  鏈下安全多方計算

(1)概念

安全多方計算可以實現在各方均不知道完整資料內容的情況下,透過聯合它們對各自部分資料的計算結果,得到最終結果(等於利用完整資料進行計算的結果)。

鏈下安全多方計算的實現效果也是如此,區別之處在於引入了鏈上、鏈下的概念:

首先,隱私資料被分為多份,並以私密輸入值的形式分佈在一眾鏈下節點間。區塊鏈當前的狀態值可被作為公共輸入值。然後鏈下節點計算各自部分的鏈下狀態轉換值。

鏈下節點發布各自結果並進行組合,然後將其置於鏈上。

鏈下安全多方計算協議需要滿足的一個特性是公共審計,具體的一個例證是,不參與上文過程的審計者可以校驗計算結果的正確性。由此,計算結果的正確性可被鏈上審計者在驗證階段校驗,或由鏈下審計者透過評估鏈上審計者的審計跟蹤(系統活動的流水記錄)來校驗。

(2)實現情況

安全多方計算的實現手段一般來說可分為三類:

1) 基於Yao混淆電路的構造方法;

2) 基於秘密分享的構造方法;

3) 基於同態加密的構造方法。

目前已有較多專案嘗試使用安全多方計算協議,如Defi、Enigma等。

2.4  激勵驅動型鏈下計算

(1)概念

該模式假設參與計算的各方都是理性的經濟人(即參與方以最小的代價最大化自己的利益)。該模式主要涉及到兩類角色:處理計算任務的求解者(Solver)、重新計算求解者所處理過的計算任務並檢驗其是否有誤的驗證者。但在一些方案中會引入更多的角色。

(2)實現情況

激勵驅動型鏈下計算中最知名的解決方案莫過於TrueBit,其基本原理為:

使用者提出計算需求並支付佣金,如果某個鏈下的求解者認為佣金價格符合預期,則進行計算並公佈結果。此外,求解者也需要提供一筆保證金。

相對於使用者與求解者而言的第三方——驗證者(同樣位於鏈下),可重新執行上述計算並檢驗其是否有誤;如若發現求解者給出錯誤結果,則可以發起挑戰,提交到鏈上仲裁。同樣地,驗證者需要提供一筆保證金。

透過鏈上的智慧合約,求解者與驗證者共同進行一個驗證遊戲,而使用者置於鏈上的程式碼則被用於驗證求解者、驗證者雙方答案的真偽,正確一方獲取佣金,另一方則需支付整個驗證過程所產生的gas費用。

TrueBit還設計了累積獎金(Jackpot)機制,用以維護驗證者生態環境。系統會隨機選擇一些交易,要求求解者同時提交正確答案和強制錯誤(Force error,即錯誤的答案),二者之一會上鍊請求驗證,當強制錯誤被驗證者驗證並挑戰時,求解者無需遭受懲罰。所有事務的佣金將被抽取一小部分,匯聚成獎金池,用以在累積獎金機制中支付給挑戰成功的驗證者。

3尚在征途,逐步落地

在可驗證的鏈下計算的三種實現中,由於初始化可信設定的存在,zk-SNARKs的計算成本相對較高,但是在初始化可信設定完成後,其證明難度與驗證的複雜性都很低;zk-STARKs與Bulletproofs兩種演算法不需要初始化可信設定,計算成本相應較低,但證明難度與驗證複雜性卻較高,這是其應用的掣肘所在。

從安全性方面來看,激勵驅動型鏈下計算依賴於系統中至少有一位誠實的參與者的假設,惡意的驗證者能夠用提交錯誤答案的方式挑戰每一個計算步驟,讓所有任務經過鏈上的“挑戰”環節,影響系統整體的速度與安全效能。

“飛地”型鏈下計算的缺點是其依賴於TEE。如英特爾的SGX(Software Guard Extensions,軟體保護擴充套件),一種允許Inter處理器建立一個“小黑匣”作為TEE的技術,曾在駭客攻擊前失去效用。

目前,多種鏈下計算方案已經取得成效或正在落地,如Monero成功部署Bulletproofs後事務體積顯著降低;以太坊在測試網使用zk-SNARKs,TPS有望達到500;首個致力於部署zk-STARKs的專案StarkWare也已在測試當中。

注:通證流通市值、Twitter關注人數資料截至2019年7月20日。

鏈下計算正在進入各大專案的視野,未來將獲得進一步的發展和應用。憑藉各種優異的特性,鏈下計算成功吸引了各方注意,例如Zcash和Menero分別部署了zk-SNARKs和Bulletproofs,以太坊核心開發者對zk-SNARKS在擴容方面的表現表示認同,未來使用該技術的鏈下計算擴容方案或將推及整個以太坊。

附註:

因一些原因,本文中的一些名詞標註並不是十分精準,主要如:通證、數字通證、數字currency、貨幣、token、Crowdsale等,讀者如有疑問,可來電來函共同探討。

免責聲明:

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

推荐阅读

;