本文探讨了EVM(以太坊虚拟机)的未来发展方向,提出了三种潜在的EVM升级方案:一是优先考虑快速执行和标准工具链,但牺牲ZK证明速度;二是优先考虑快速ZK证明,但牺牲执行速度和标准工具链;三是采用两步法,即先使用区块链友好的VM,再使用ZK-VM,但也会牺牲标准工具链。并分析了每种方案的优缺点,以及对以太坊未来发展的影响,最后建议以太坊社区深入研究这些方案。
这篇文章来自 StarkWare。感谢 Vitalik Buterin、Tomasz Stańczak、Justin Drake、Ventali Tan、Federico Carrone (Fede)、Bobbin Threadbare、Morgan Thomas、Guilamme Ballet、Mamy Ratsimbazafy ( @mratsim)、Alexander Hicks、Kevaundray Wedderburn 和 Jeremy Bruestle 的仔细审查和评论。
我们提供了选择下一个 EVM 的方法的前景。我们看到了三种潜在的途径,每种途径都呈现出不同的权衡:
几年前,Starknet 面临着类似的问题,并选择了第三种方案。我们相信这也是下一个 EVM 的最佳路径。至少,我们建议认真研究这个选项以及其他选项。
以太坊——“世界计算机”——是第一个也是最成功的支持智能合约和通用计算的区块链。在最近的一对有影响力的帖子 [ 1, 2\ ]中,Vitalik 建议“我们用 RISC-V或另一个 VM 替换 EVM,这个 VM 是以太坊 ZK 证明器将用其编写的 VM。”
“我们应该使用哪个 VM?”这个问题是 StarkWare 在过去 7 年中一直在处理的问题,并且随着我们将越来越多的系统投入生产,我们的见解发生了转变和成熟。以下文档基于我们的集体经验,是 StarkWare 对围绕以太坊面临的重大架构问题的重要讨论的贡献:
以太坊的下一代执行层应该是什么样的?
这个问题跨越了多个维度:
下面,我们将分解以执行为中心和以证明为中心的 VM 设计之间的主要权衡,评估区块链安全执行的要求,并解释我们对将这些不同目标融合以形成统一架构的最佳方式的看法。
与传统的计算环境不同,区块链执行必须遵守围绕安全性、确定性和可验证性的严格约束。这些约束会影响我们如何推理底层代码行为(例如,通过清理),运行时隔离(沙箱)以及 VM 是否针对零知识证明进行了优化。本节介绍这些核心概念,并解释为什么它们对于设计安全且可扩展的区块链执行环境至关重要。在介绍这些概念之后,我们将深入探讨针对下一代 EVM 的具体建议。
在执行区块链交易时,会出现安全问题,因为我们希望确保在各种平台上的平稳、安全和一致的执行。安全执行除其他外,还需要:
ZK 友好的 VM 是一种在设计时考虑到高效的零知识证明生成的 VM。关键属性包括:
zkVM 是专门为高效的零知识证明生成而设计的虚拟机。它们优先考虑结构化计算、可追溯性和内存确定性,以实现简洁、可验证的证明。这些系统在实时或低延迟证明至关重要时是理想的选择,例如在 ZK-rollup 或链上可验证性中。
注意: 这篇简短且快速编写的文章省略了许多对讨论至关重要的细微差别,例如:
我们希望以太坊社区比我们在这里讨论的更深入地进行这项研究。
在解释了区块链执行和 ZK 友好性带来的约束之后,我们继续研究可用的架构选择。 broadly,这些分为三类,每类都反映了不同的优先级:优化执行性能和开发者体验;优化可证明性;或通过分层方法结合两者的优势。每个选项都会在性能、安全性、工具、向后兼容性和未来可扩展性之间进行权衡。在接下来的章节中,我们将概述每种路径的含义,高亮显示著名的现实世界示例,并解释这些设计如何应对区块链环境独有的挑战。
如果主要目标是创建一个新的区块链 VM,该 VM 提供高性能和开发者友好的工具,那么应该倾向于使下一个 EVM 尽可能接近已建立的工具链,该工具链在区块链世界之外得到很好的维护。这种方法优先考虑:
但是,上述区块链特定要求导致选择区块链堆栈或修改流行的标准堆栈,以确保满足独特的区块链要求,包括:
为执行优化的现有区块链 VM 示例包括:
如果以太坊的优先级是构建一个 ZK 友好的系统,那么需要一个专门为可证明性设计的 VM。这样的 VM 通常会最大限度地减少电路大小,删除寄存器(或大幅减少其数量),启用递归,并使用简单、良好约束的指令集。
为 ZK 证明优化的现有 VM 示例(适当披露:CairoVM 由 StarkWare 构建,StarkWare 是本文的共同作者)
如果以太坊的目标是结合 ZK 效率、执行性能和语言安全性,那么我们首先应该承认,目前没有在区块链之外广泛使用的、自然的框架。区块链相关的清理和沙箱化要求朝着一个方向发展,而 ZK 友好性则朝着另一个方向发展。明确地朝着一个方向发展将意味着另一个方向没有得到很好的服务。
这是 StarkWare 过去面临的问题,值得回顾我们的经验。在 2020 年夏天部署了我们的第一个产品——StarkEx 之后,我们想改进它并添加新功能。但是我们构建第一个系统的方式,通过手工编写多项式约束,无法安全地扩展。我们的第一个图灵完备的 VM 是 Cairo VM,它是一个 ZK-VM,但不是区块链安全的。在最初,我们设想只有 StarkWare 为其客户(Dex 和交易所)运行此 VM,因此,当我们为这些系统编写代码时,区块链的清理和沙箱化属性在内部强制执行。
但是,当我们选择将 Starknet 开发为通用 L2 时,区块链安全问题浮出水面。为了解决这个问题,我们选择了一种两步法:
这种方法也适合于快速的本机执行。为了获得这一点,可以将 Sierra 代码编译为本机执行(例如,在 x86 机器上)。实际上,Starknet 通过 LambdaClass 构建的 Cairo-native 编译器使用了这种方法。
这种两步法支持:
这种方法的优点是执行安全性和语言结构,而不会影响证明性能。这种方法的缺点是,它是一种非标准的(Starknet 区块链上下文之外的)编程语言和编译堆栈,这意味着开发者体验、现有工具、本机执行性能以及新开发者的入门难度比标准非区块链工具链更差。此外,必须建立 zkVM 和本机执行的等效性。
回想一下,引发这篇文章的是 Vitalik 关于使用 RISC-V 作为下一个 EVM 的建议。引用 Vitalik 的话,他的建议
旨在大大提高以太坊执行层的效率,解决主要的可扩展性瓶颈之一,并且还可以大大提高执行层的简单性——实际上,这可能是唯一的方法。
RISC-V 的优点很多——它是一种通用 ISA,它是开源的,并且具有广泛的工具、良好的开发者体验以及对众多高级语言的支持。在模拟环境中运行绕过了一些与 gas 计量、不安全的操作码等有关的主要挑战。这可能会以牺牲一些生态系统优势为代价,因为大多数 RISC-V 库都假定不受限制的环境。
这导致了以下未解决的问题,我们建议在决定将其作为下一个 EVM 之前回答这些问题:
- 原文链接: ethereum-magicians.org/t...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!