鏈下計算,尚在征途的擴容良方——區塊鏈技術引卷之十三通證通研究院 × 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 等,讀者如有疑問,可來電來函共同探討。

往期回顧:

本文爲通證通研究院( ID:TokenRoll )原創。未經授權,禁止擅自轉載。轉載請後臺回覆關鍵詞【轉載】鏈下計算,尚在征途的擴容良方——區塊鏈技術引卷之十三

來源鏈接:mp.weixin.qq.com