EVM 究竟能否應對高性能應用的挑戰?
作者: Siddharth Rao, IOSG Ventures
原用標題: IOSG Weekly Brief | 解放乙太坊性能:超越 EVM 瓶頸的創新之路 #179
本文為 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)
2. 将计算与数据可用性外包
当我们看到 Type 1 时,zk-rollups 已经在做这个,但它们要么受限于 EVM,要么需要教导开发者学习全新的语言/指令集。理想的解决方案应该是高效的、有效的(成本和资源)、去中心化的、私密的和可验证的。ZK 证明可以在 AWS 服务器上构建,但它们并不是去中心化的。像 Nillion 和 Nexus 这样的解决方案正在尝试以去中心化的方式解决通用计算的问题。但这些解决方案是无法验证的,如果没有 ZK 证明的话。
Type 2 将链下计算模型与保持分离的数据可用性层结合起来,但计算仍然需要在链上进行验证。
让我们来看一下今天可用的不完全可信和可能完全无信任的不同去中心化计算模型。
其他计算系统(Alternative Computation Systems)
安全飞地计算(Secure Enclave Computations)/可信执行环境(Trusted Execution Environments)
TEE(可信执行环境)就像计算机或智能手机内部的一个特殊盒子。它有自己的锁和钥匙,只有特定的程序(称为可信应用程序)才能访问。当这些可信应用程序在 TEE 内部运行时,它们就受到其他程序甚至操作系统本身的保护。
这就像一个只有几个特殊朋友可以进入的秘密藏身处。TEE 最常见的例子是安全隔离区,它们存在于我们使用的设备上,例如苹果的 T1 芯片和英特尔的 SGX,用于在设备内部运行关键操作,如 FaceID。
由于 TEE 是隔离的系统,认证过程无法被破坏,因为认证中存在信任假设。可以将其想象为存在一个安全门,你相信它是安全的,因为 Intel 或 Apple 建造了它,但世界上有足够多的安全破坏者(包括黑客和其他计算机),可以破坏这扇安全门。TEE 不是 “后量子安全” 的,这意味着拥有无限资源的量子计算机可以破解 TEE 的安全性。随着计算机迅速变得更加强大,我们必须在构建长期计算系统和密码学方案时牢记后量子安全性。
安全多方计算 (SMPC)
SMPC(安全多方计算)也是区块链技术从业熟知的一种计算方案,在 SMPC 网络中大致的工作流程会有如下 3 部分组成:
- 步骤 1:将计算的输入转换为份额(shares),并分布在 SMPC 节点之间。
- 步骤 2:进行实际的计算,通常涉及 SMPC 节点之间的消息交换。在此步骤结束时,每个节点将拥有计算输出值的一个份额。
- 步骤 3:将结果份额发送到一个或多个结果节点,这些节点运行 LSS(秘密分享恢复算法)以重构输出结果。
想象一个汽车生产线,汽车的构建和制造组件(发动机、车门、后视镜)被外包给原始设备制造商(OEM)(工作节点),然后有一个装配线,将所有组件组装在一起制造汽车(结果节点)。
秘密分享 (Secret sharing) 对于保护隐私的去中心化计算模型非常重要。这可以防止单个参与方获得完整的” 秘密”(在这种情况下是输入),并恶意产生错误的输出。SMPC 可能是最容易和最安全的去中心化系统之一。虽然目前不存在一个完全去中心化的模型,但从逻辑上讲这是有可能的。
像 Sharemind 这样的 MPC 提供商为计算提供 MPC 基础设施,但提供商仍然是集中的。如何确保隐私,如何确保网络 (或 Sharemind) 没有恶意行为? 这就是 zk 证明和 zk 可验证计算的由来。
Nil Message Compute(NMC)
NMC 是由 Nillion 团队开发的一种新的分布式计算方法。它是 MPC 的升级版,其中节点无需通过通过结果交互来进行通信。为此,他们使用了一种称为一次掩码(One-Time Masking)的密码原语,利用一系列称为遮蔽因子(blinding factors)的随机数来掩盖一个 Secret,类似于一次性填充。OTM 旨在以高效的方式提供正确性,这意味着 NMC 节点不需要交换任何消息来执行计算。这意味着 NMC 不会有 SMPC 的可扩展性问题。
零知识可验证计算
ZK 可验证计算(ZK Verifiable Computation)是对一组输入和一个函数生成零知识证明,并证明任何系统执行的计算都会是正确执行的。尽管 ZK 验证计算是新生事物,但它已经是以太坊网络扩展路线图中一个非常关键的部分,
ZK 证明有各种各样的实现形式(如下图所示,根据论文 “Off-Chaining_Models” 中总结):
上面我们对 zk 证明的实现方式有了基本的了解,那么使用 ZK 证明验证计算需要什么条件呢?
- 首先,我们需要选择一个证明原语,理想的证明原语生成证明的成本低,对内存的要求不高,并且要易于验证
- 其次,选择一种 zk 电路,设计用于通过计算生成上述原语的证明
- 最后,在某个计算系统/网络中通过提供的输入对给定的函数进行计算并给出输出。
开发者的难题 – 证明效率困境
另外一个不得不说的事情就是构建电路的门槛还是很高,让开发者学习 Solidity 已经不是一件容易的事情,现在要求开发者学习 Circom 等来构建电路,或者学习一门特定的编程语言 (如 Cairo) 来构建 zk-apps,这似乎是一个遥不可及的事情。
如上面的统计数据显示,将 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 对证明进行优化。
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 推理验证的一个很好的解决方案。
谁是赢家?
一些 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 的未來都有一席之地。
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。