域修网 区块链 详述有效性证明Rollup和Cairo VM技术特性

详述有效性证明Rollup和Cairo VM技术特性

详述有效性证明Rollup和Cairo VM技术特性

概要

  • 有效性证明 Rollup 以安全和去中心化的方式增加以太坊吞吐量,也是最具潜力的方式;zkEVM 和 Cairo VM(CVM)是有效性证明 Rollup 中所使用到的两种虚拟机 (VM) 类型。

  • zkEVM 专注于以太坊兼容性,但牺牲了性能和可扩展性。

  • Starknet 采用的 Cairo VM 将性能和可扩展性置于兼容性之上。

Rollup 是今年关于扩展以太坊的热门话题。在各种类型 Rollup 中,我们相信有效性证明 Rollup(以下简称 VR,或称为 zk-rollup),是以安全和去中心化的方式增加以太坊吞吐量,最有希望的扩容方案。这种扩容方案的核心是采用有效性证明进行可验证计算。下面来了解其运行原理:

  • 和在以太坊主网上处理每笔交易不同,运营者将交易放到链下环境执行。链下环境就是 L2,即在以太坊之上运行的操作层。

  • 在大批量交易处理完成后,L2 运营者将结果返回至以太坊状态中,同时还有一个有效性证明用于验证链下执行的完整性。该证明保证同一批次中的所有交易都有效,并由链上验证合约自主验证。该操作允许以太坊将结果应用于其状态。

有效性证明 Rollup

请注意:有效性证明 Rollup 常被错称为零知识证明 Rollup (zkRollup),这并不准确。大部分有效性证明 Rollup 不采用零知识证明,也不用于确保隐私。因此,术语「有效性证明 Rollup」更准确。

链下虚拟机

在继续深入前,我们需要回答第一个问题:什么是虚拟机(VM)?简而言之,虚拟机是一个可以运行程序的环境,比如 Mac 上运行 Windows 操作系统。VM 在对某些输入执行计算后,在状态之间进行转换。以太坊虚拟机(EVM)就是运行以太坊智能合约的 VM。

零知识虚拟机(zkVM)是程序执行环境,与程序输出一起生成可轻松验证的有效性证明。有效性证明用于证明程序已正确执行。当使用「zkEVM」一词时,通常是指运行以太坊虚拟机(EVM)并能够证明 EVM 执行的 Rollup。这个术语可能会造成误会,因为 EVM 本身无法生成这些证明;相反,证明是由一个单独的证明器机制产生,该机制将 EVM 的执行结果作为其起点。此外,上述证明都是与有效性相关,而与隐私无关。因此,准确来说不能称为零知识证明。而为了保持一致性,在本文中仍使用传统术语「zkEVM」。

尽管所有有效性证明 Rollup 都旨在采用有效性证明来扩展以太坊,而不同方案在 VM 执行链下交易方面做出了不同选择。许多有效性证明 Rollup 选择** EVM 设计(因此称为「zkEVM rollup」),尝试在 L2 rollup 上**以太坊。Starknet 采用的是 Cairo VM(CVM),是专为优化有效性证明效率而设计的全新 VM。

上述两种方式各有利弊和取舍,但 zkEVM 牺牲性能以求以太坊兼容性,而 Cairo VM 将性能置于兼容性之上,优先考虑可扩展能力。

了解 zkEVM 运作方式

zkEVM 是一种有效性证明 Rollup,旨在 L2 区块链上完全引入以太坊体验。目的是将以太坊开发者环境**到 Rollup 中。借助 zkEVM,开发者编写或移植智能合约到扩容方案时,无需调整代码或弃用原本的 EVM 工具(以及智能合约)。

这种方式有一个关键缺陷,即降低了有效性证明的扩展能力。由于重心放在与以太坊兼容,导致 zkEVM 速度更慢且资源密集度更高。与 CVM 不同,EVM 在设计时没有考虑证明效率。因此限制了在提高效率和可扩展性的优化使用,最终影响系统的整体性能。

EVM 的可证明性

zkEVM 方式的核心挑战在于 EVM 根深蒂固的原始蓝图,起初的设计并不是为了在有效性证明环境中运行。因此,努力都放在实现以太坊功能上,就无法释放有效性证明的全部潜力,导致效率不尽人意。这种低效率最终拖了系统整体性能的后腿。EVM 与有效性证明的兼容性受到以下因素的阻碍:

  • EVM 采用基于堆栈的模型,而有效性证明更高效地用于基于寄存器的模型。EVM 基于堆栈的性质使其本质上更难证明其执行的正确性,并为其本地工具链提供直接支持。

  • 以太坊存储布局重度依赖于 Keccak 和大型 Merkle Patricia 树,这两者都是非有效性证明友好型,带来巨大证明负担。例如,Keccak 对于 x86 架构非常快速(通常用于运行 EVM),但需要 9 万个步骤来证明(需要特殊内置)。而 Pedersen(零知识友好型哈希函数)只需要 32 个步骤。即使采用递归压缩,zkEVM 中使用 Keccak 消耗证明器资源仍旧很高,成本最终还是得由用户承担。

因此,各类 zkEVM 旨在为以太坊工具提供不同程度的支持,但 zkEVM 与以太坊兼容性越高,性能也就越低。(有关更多 zkEVM 类型的信息,请参阅文章结尾处)

了解 Cairo-VM 运作方式

zkEVM 解决方案在「让 EVM 适用于有效性证明 Rollup」方面投入了大量开发时间,将兼容性置于长远性能和可扩展性之上。还有另一个选项:采用全新的专用虚拟机,并新增一个额外层用于支持以太坊工具。这就是 Starknet 采取的措施,Starknet 于 2021 年 11 月推出了一个无需许可的有效性证明 Rollup。Starknet 是首个在完全可组合性**中,实现通用智能合约平台的有效性证明 Rollup。

Starknet 采用 Cairo-VM(CVM),并创造同名高级语言 Cairo。Cairo-VM 是为高效生成程序执行的有效性证明而设计。

通过 Cairo(VM 和编程语言)可实现:

  1. 优化有效性证明,每条指令都有一个有效代数表达式

  2. 用于编写可证明程序的现代类 Rust 语言

  3. 高级 Cairo 语言和 Cairo 汇编(VM 指令)之间的中间表达式(Sierra),可以高效执行 Cairo 代码

开发一种全新语言可以根据特定需求定制,可以包含以前所不具备的功能,满足新需要。

Cairo 和编码多元化

为了创建某些计算的有效性证明,首先必须将该计算表达为描述计算的一系列数学约束。这个过程非常复杂,难点在于优化计算以提高效率,而且需要特定工具。

Cairo 语言设计之初就是为了简化这一任务,以便 StarkEx 能轻松增添功能和复杂的商业逻辑。将 Cairo 程序编译成代数机器代码,即一串数字,由单个固定的 VM 执行。有了 Cairo,生成描述计算的数学约束这个复杂过程(对于有效性证明来说非常棘手)得以抽象化,进而以一组固定的约束条件(总共不到50个约束)来表示。这样,开发者无需理解底层数学和基础设施,仅需用熟悉的语法编写代码,就能利用有效性证明扩展应用程序。

Starknet 致力于创新,这点在代码多元化处理方法上展现得淋漓尽致。Cairo 采用 STARK 技术实现最佳扩展功能,不仅限于使用 Cairo 本地环境编写合约。开发者还可以选择最适合的方式:

  • 在 Cairo 本地编码:Cairo 1.0 受 Rust 启发,更加符合开发者使用习惯且更加安全,编写程序逻辑变得更加容易且不易出错。

  • Solidity 兼容性:Solidity 开发者可以编写支持 Cairo VM 的代码。这种方式提供了与以太坊相似的开发者体验,并支持 Solidity 智能合约迁移至 Starknet。迁移实现方式有两种:

  • 转译:转译是将一种编程语言的源代码转换成另一种语言的过程。Nethermind 团队构建了 Warp 转译器,用于将 Solidity 代码转译为 Cairo。Warp 让 Solidity 智能合约可移植至 Starknet,使其有效成为第四类 zkEVM。目前已用于转译和部署 Uniswap 合约,只需极小的改动即可实现。

  • Starknet 上的 zkEVM:Cairo VM 能用于证明另一个 VM 的执行。Kakarot 是采用 Cairo 编写的 zkEVM,可用于在 Starknet 上运行以太坊智能合约。Cairo VM 和 zkEVM 并不是竞争关系,与其在两者之间做出选择,不如采用两者兼得的方式!

尽管 Cairo 问世时间不长,但根据 TVL 排名,Cairo 是第四受欢迎的智能合约编程语言,估值超 3.5 亿美元。

总结

zkEVM 旨在将以太坊开发者环境**到 Rollup 中,并允许开发者使用熟悉的以太坊工具。但这种方式限制了有效性证明的潜力,且资源密集。

专为有效性证明设计的 Cairo VM 不受到 EVM 的限制。Cairo VM 支持 Cairo 1.0。Cairo 1.0 受 Rust 语言启发,更加符合开发者使用习惯且更加安全,形成强大的工具,旨在利用 STARK 证明高效扩展以太坊。

看到 Cairo 每周都在发展,Kakarot zkEVM 和 Warp 这种开发者选择越来越多,令人兴奋。随着 Starknet dApp 投入生产,展现出 Cairo 的强大力量,我们坚信未来 Cairo 会催生出前所未见的优秀项目。

上文概述了 SATRK 扩展的三种路径,毫无疑问未来几个月还会有更多创新诞生。开发者现在对扩展区块链有了前所未有的掌控权。

zkEVM 类型

Vitalik 将 zkEVM 主要分为四个类型:

  • 第一类完全等效以太坊:不改变以太坊生态系统的任何部分。

  • 第二类完全等效 EVM:能和现有 dApp 兼容,并对以太坊的设计做出部分调整以加快证明生成。

  • 第三类大致等效 EVM:支持大部分 EVM 操作码,移除部分 zkEVM 难以实现的功能(如预编译和哈希函数)。

  • 第四类等效高级语言:用 Solidity/Vyper 编写智能合约代码,并将其转译成有效性证明友好型语言。