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

區塊鏈 技術 算法 經濟 幣全區塊鏈 2019-08-18
"
"
鏈下計算,尚在征途的擴容良方——區塊鏈技術引卷之十三

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

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

特別顧問:沈波;Rin

導讀

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

摘要

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

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

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

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

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

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

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

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

目錄

1 鏈下計算,鏈上驗證

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

2.1 可驗證的鏈下計算

2.2 “飛地”型鏈下計算

2.3 鏈下安全多方計算

2.4 激勵驅動型鏈下計算

3 尚在征途,逐步落地

正文

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


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

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

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

特別顧問:沈波;Rin

導讀

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

摘要

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

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

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

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

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

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

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

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

目錄

1 鏈下計算,鏈上驗證

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

2.1 可驗證的鏈下計算

2.2 “飛地”型鏈下計算

2.3 鏈下安全多方計算

2.4 激勵驅動型鏈下計算

3 尚在征途,逐步落地

正文

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


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


1

鏈下計算,鏈上驗證

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


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

通證通研究院 × 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

鏈下計算的四種主要模式


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

通證通研究院 × 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,即錯誤的答案),二者之一會上鍊請求驗證,當強制錯誤被驗證者驗證並挑戰時,求解者無需遭受懲罰。所有事務的佣金將被抽取一小部分,匯聚成獎金池,用以在累積獎金機制中支付給挑戰成功的驗證者。


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

通證通研究院 × 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也已在測試當中。


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

通證通研究院 × 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等,讀者如有疑問,可來電來函共同探討。

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

通證通研究院 × 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等,讀者如有疑問,可來電來函共同探討。

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

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

通證通研究院 × 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等,讀者如有疑問,可來電來函共同探討。

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

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

"

相關推薦

推薦中...