所有語言
分享
作者:Siddharth Rao, IOSG Ventures
本文為IOSG原創內容,僅做行業學習交流之用,文中所提及的項目與IOSG無利益關係,不做任何投資建議,請讀者在閱讀本文時保持客觀,仔細甄別信息,DYOR。若讀者需轉載及引用本文內容,請聯繫IOSG團隊獲取授權及轉載須知。感謝IOSG Ventures投研和投后團隊的辛苦協作!👍
特此感謝 Lurk Labs 的 John Burnham 對本文提出的寶貴意見與建議。
關於以太坊虛擬機(EVM)的性能
在以太坊主網上的每一個操作都要花費一定的 Gas,如果我們把跑基礎應用所需的計算量都放在鏈上,要麼 App 會崩潰,要麼用戶會破產。
這催生了 L2 :OPRU 引入了排序器來捆綁一堆交易,然後提交到主網上。這不僅有助於 app 承接以太坊的安全性,同時也給予了用戶更好的體驗。用戶可以更快地提交交易,手續費也更加便宜了。雖然操作變 得便宜了,但它仍然使用原生 EVM 作為執行層。和 ZK Rollups 類似,Scroll、Polygon zkEVM 使用或將使用基於 EVM 的 zk 電路,zk Proof 將在其證明器上進行的每一筆交易或者一大包交易中生成。雖然這能讓開發者建立 "全鏈上 "的應用程序,但它是否仍能高效且經濟地運行高性能的應用程序呢?
這些高性能應用都有哪些?
人們首先想到的是遊戲、鏈上訂單簿、Web3 社交、機器學習、基因組建模等。所有這些都需要大計算量,在 L2 上運行也會非常昂貴。EVM 的另一個問題是,計算的速度和效率不如現在的其他系統,如SVM (Sealevel Virtual Machine)。
雖然 L3 EVM 可以使計算更便宜,但 EVM 本身的結構可能不是執行高計算的最佳方式,因為它無法計算并行運算。在上面每建一個新的層的時候,為了保持去中心化的精神,就需要建立新的基礎設施(新的節點網絡),這仍然需要同樣數量的提供者來擴展,或者是一組全新的節點提供者(個人/企業)來提供資源,或者兩者都需要。
因此,每當更先進的解決方案被建立時,現有的基礎設施就要被升級,或者在上面建立一個新的層。為了解決這個問題,我們需要一個后量子安全、去中心化、無需信任、高性能的計算基礎設施,可以真正高效地使用量子算法為去中心化的應用進行計算。
像 Solana、Sui 和 Aptos 這樣的 alt-L1s 能夠實現并行執行,但由於市場情緒,流動性短缺市場上缺乏開發人員,他們不會對以太坊產生挑戰。因為缺乏信任,而且以太坊用網絡效應建立的護城河是里程碑式的。到目前為止,ETH/EVM 的殺手並不存在。這裏的問題是,為什麼所有的計算都應該在鏈上?是否存在一個同樣無需信任、去中心化的執行系統?這是 DCompute 系統能夠實現的。
DCompute基礎設施要做到去中心化、后量子安全,也要做到無信任,不需要或者說不應該是區塊鏈/分佈式技術,但驗證計算結果,正確的狀態轉換和最終確認是非常重要的。EVM 鏈的運行就是如此,在保持網絡的安全性和不可篡改性的同時,去中心化的、無需信任的、安全的計算可以被移到鏈下。
我們在這裏主要忽略的是數據可用性的問題。這篇文章並非不關注數據的可用性,因為像Celestia 和 EigenDA 這樣的解決方案已經在朝這個方向發展。
1: 只將計算外包(Only Compute Outsourced)
(來源:Off-chaining Models and Approaches to Off-chain Computations, Jacob Eberhardt & Jonathan Heiss)
2. 將計算與數據可用性外包
(來源:Off-chaining Models and Approaches to Off-chain Computations, Jacob Eberhardt & Jonathan Heiss)
當我們看到 Type 1時,zk-rollups 已經在做這個,但它們要麼受限於EVM,要麼需要教導開發者學習全新的語言/指令集。理想的解決方案應該是高效的、有效的(成本和資源)、去中心化的、私密的和可驗證的。ZK證明可以在AWS服務器上構建,但它們並不是去中心化的。像Nillion和Nexus這樣的解決方案正在嘗試以去中心化的方式解決通用計算的問題。但這些解決方案是無法驗證的,如果沒有ZK證明的話。
Type 2 將鏈下計算模型與保持分離的數據可用性層結合起來,但計算仍然需要在鏈上進行驗證。
讓我們來看一下今天可用的不完全可信和可能完全無信任的不同去中心化計算模型。
TEE(可信執行環境)就像計算機或智能手機內部的一個特殊盒子。它有自己的鎖和鑰匙,只有特定的程序(稱為可信應用程序)才能訪問。當這些可信應用程序在TEE內部運行時,它們就受到其他程序甚至操作系統本身的保護。
這就像一個只有幾個特殊朋友可以進入的秘密藏身處。TEE最常見的例子是安全隔離區,它們存在於我們使用的設備上,例如蘋果的T1芯片和英特爾的SGX,用於在設備內部運行關鍵操作,如FaceID。
由於TEE是隔離的系統,認證過程無法被破壞,因為認證中存在信任假設。可以將其想象為存在一個安全門,你相信它是安全的,因為Intel或Apple建造了它,但世界上有足夠多的安全破壞者(包括黑客和其他計算機),可以破壞這扇安全門。TEE不是“后量子安全”的,這意味着擁有無限資源的量子計算機可以破解TEE的安全性。隨着計算機迅速變得更加強大,我們必須在構建長期計算系統和密碼學方案時牢記后量子安全性。
SMPC(安全多方計算)也是區塊鏈技術從業熟知的一種計算方案,在SMPC網絡中大致的工作流程會有如下3部分組成:
步驟1:將計算的輸入轉換為份額(shares),並分佈在SMPC節點之間。
步驟2:進行實際的計算,通常涉及SMPC節點之間的消息交換。在此步驟結束時,每個節點將擁有計算輸出值的一個份額。
步驟3:將結果份額發送到一個或多個結果節點,這些節點運行LSS(秘密分享恢復算法)以重構輸出結果。
想象一個汽車生產線,汽車的構建和製造組件(發動機、車門、后視鏡)被外包給原始設備製造商(OEM)(工作節點),然後有一個裝配線,將所有組件組裝在一起製造汽車(結果節點)。
秘密分享(Secret sharing)對於保護隱私的去中心化計算模型非常重要。這可以防止單個參与方獲得完整的"秘密"(在這種情況下是輸入),並惡意產生錯誤的輸出。SMPC可能是最容易和最安全的去中心化系統之一。雖然目前不存在一個完全去中心化的模型,但從邏輯上講這是有可能的。
像Sharemind這樣的MPC提供商為計算提供MPC基礎設施,但提供商仍然是集中的。如何確保隱私,如何確保網絡(或Sharemind)沒有惡意行為?這就是zk證明和zk可驗證計算的由來。
NMC是由Nillion團隊開發的一種新的分佈式計算方法。它是MPC的升級版,其中節點無需通過通過結果交互來進行通信。為此,他們使用了一種稱為一次掩碼(One-Time Masking)的密碼原語,利用一系列稱為遮蔽因子(blinding factors)的隨機數來掩蓋一個Secret,類似於一次性填充。OTM旨在以高效的方式提供正確性,這意味着NMC節點不需要交換任何消息來執行計算。這意味着NMC不會有SMPC的可擴展性問題。
ZK可驗證計算(ZK Verifiable Computation)是對一組輸入和一個函數生成零知識證明,並證明任何系統執行的計算都會是正確執行的。儘管ZK驗證計算是新生事物,但它已經是以太坊網絡擴展路線圖中一個非常關鍵的部分,
ZK證明有各種各樣的實現形式(如下圖所示,根據論文“Off-Chaining_Models”中總結):
(來源:IOSG Ventures, Off-chaining Models and Approaches to Off-chain Computations, Jacob Eberhardt & Jonathan Heiss)
上面我們對zk證明的實現方式有了基本的了解,那麼使用ZK證明驗證計算需要什麼條件呢?
首先,我們需要選擇一個證明原語,理想的證明原語生成證明的成本低,對內存的要求不高,並且要易於驗證
其次,選擇一種zk電路,設計用於通過計算生成上述原語的證明
最後,在某個計算系統/網絡中通過提供的輸入對給定的函數進行計算並給出輸出。
開發者的難題 - 證明效率困境
另外一個不得不說的事情就是構建電路的門檻還是很高,讓開發者學習Solidity已經不是一件容易的事情,現在要求開發者學習Circom等來構建電路,或者學習一門特定的編程語言(如Cairo)來構建zk-apps,這似乎是一個遙不可及的事情。
(來源:https://app.artemis.xyz/developers)
如上面的統計數據显示,將Web3的環境改造得更適於開發,似乎比將開發人員引入新的Web3開發環境更具可持續性。
如果ZK是Web3的未來,Web3應用程序需要使用現有的開發人員技能來構建,那麼ZK電路就需要這樣設計:支持由JavaScript或Rust等語言編寫的算法執行的計算生成證明。
這樣的解決方案確實存在,筆者想到的是兩個團隊:RiscZero和Lurk Labs。兩個團隊都有一個非常相似的願景,即他們允許開發人員無需經歷陡峭的學習曲線即可構建zk-app。
Lurk Labs還處於早期階段,但該團隊已經在這個項目上工作了很長時間。他們專註於通過通用電路生成Nova證明(Nova Proof)。Nova證明是由卡耐基梅隆大學的Abhiram Kothapalli和微軟研究院的Srinath Setty以及紐約大學的 Ioanna Tziallae 提出的。與其他SNARK系統相比,Nova證明在進行增量可驗證計算(IVC)方面具有特殊優勢。增量可驗證計算(IVC)是計算機科學和密碼學中的一個概念,旨在實現計算的驗證,而無需從頭開始重新計算整個計算。當計算時間長且複雜時,需要針對IVC對證明進行優化。
(來源:IOSG Ventures)
Nova證明不像其他證明系統那樣“開箱即用”, Nova 只是一個摺疊技巧,開發者仍需要一個證明系統來生成證明。這就是為什麼Lurk Labs構建了Lurk Lang,這是一個LISP實現。由於LISP是一種較低級的語言,它使得在通用電路上生成證明很容易,並且也很容易轉譯成JavaScript,這將幫助Lurk Labs獲得1740萬Javascript開發者的支持。也支持其他通用語言,如Python的轉譯。
總而言之,Nova證明似乎是一個偉大的原始證明系統。雖然它們的缺點是證明的大小隨着計算的大小線性增加,但另一方面,Nova證明有進一步的壓縮空間。
STARK證明的大小不會隨着計算量的增加而增加,因此它更適合驗證非常大的計算。為了進一步改善開發人員的體驗,他們還發布了Bonsai 網絡,這是一個分佈式計算網絡,由RiscZero生成的證明進行驗證。這是一個簡單的示意圖,代表RiscZero的Bonsai 網絡的工作原理。
Bonsai網絡設計的美妙之處在於計算可以初始化,驗證,輸出全部做到鏈上。所有這些聽起來都像是烏托邦,但STARK證明也帶來了問題——驗證成本太高。
Nova證明似乎非常適合重複計算(它的摺疊方案經濟高效)和小型計算,這可能使Lurk成為ML推理驗證的一個很好的解決方案。
(來源:IOSG Ventures)
一些zk-SNARK系統在初始設置階段需要一個可信的設置過程,生成一組初始參數。這裏的信任假設是,可信的設置是誠實執行的,沒有任何惡意行為或篡改。如果受到攻擊,可能會導致創建無效的證明。
STARK證明假設低階測試的安全性,用於驗證多項式的低階性質。它們還假設哈希函數表現得像隨機預言機一樣。
兩個系統的正確實施也是一個安全假設。
SMPC網絡依賴於以下幾點:
SMPC參与者可以包括“誠實但好奇“的參与者,他們可以通過與其他節點通信來嘗試訪問任何底層信息。
SMPC網絡的安全性依賴於參与者正確執行協議並不故意引入錯誤或惡意行為的假設。
某些SMPC協議可能需要一個可信的設置階段來生成加密參數或初始值。這裏的信任假設是可信設置被誠實執行。
與SMPC網絡相同,安全假設保持不變,但由於OTM(Off-The-Grid Multi-party Computation)的存在,不存在“誠實但好奇“的參与者。
OTM是一種多方計算協議,旨在保護參与者的隱私。它通過使參与者在計算中不公開其輸入數據來實現隱私保護。因此,“誠實但好奇“的參与者不會存在,因為他們無法通過與其他節點通信來試圖訪問底層信息。
有明確的贏家嗎?我們不知道。但每種方法都有自己的優點。雖然NMC看起來像是SMPC的明顯升級,但該網絡還沒有上線,也沒有經過實戰測試。
使用ZK可驗證計算的好處是它是安全和隱私保護的,但它沒有內置的秘密共享功能。證明生成和驗證之間的不對稱使它成為可驗證外包計算的理想模型。如果系統使用純粹的zk驗證計算,則計算機(或單個節點)必須非常強大才能執行大量計算。為了在保護隱私的同時啟用負載共享和平衡,必須有秘密共享。在這種情況下,像SMPC或NMC這樣的系統可以與像Lurk或RiscZero這樣的zk生成器相結合,以創建強大的分佈式可驗證外包計算基礎設施。
當今的MPC/SMPC網絡是中心化的,這一點變得尤為重要。目前最大的MPC提供商是Sharemind,它上面的ZK驗證層可以證明是有用的。去中心化MPC網絡的經濟模型尚未跑通。理論上,NMC模式是MPC系統的升級,但我們還沒有看到其成功。
在ZK證明方案的競賽中,可能不會出現贏家通吃的情況。每種證明方法都針對特定類型的計算進行了優化,並且沒有一個適合所有類型的模型。計算任務的類型有很多種,也取決於開發人員在每個證明系統上做出的權衡。筆者認為基於STARK的系統和基於SNARK的系統以及它們未來的優化在ZK的未來都有一席之地。