除了生成有效性证明的不同方法外,ZKRollups的数据可用性策略也不同。数据可用性策略将决定交易批次的哪些组件最终发布在链上。Rollups,包括Optimistic和ZK,通常在每次处理一批交易时将三份数据提交到主网以太坊。首先,Rollups的验证者将新网络状态的根哈希提交给以太坊。(状态是指L2上交易和账户余额的更新记录。)状态记录在一个Merkle树数据结构中,如下图:
根哈希是整个Merkle树的密码承诺,有时也称为状态承诺。虽然并不要求所有ZKRollup都将根哈希提交给以太坊,但为了使发布在以太坊上的数据能够轻松重建和验证在Rollup上执行的交易,他们通常会这么做。
除了用于确认L2区块链新状态的高级根哈希之外,以太坊上还记录了加密证明。在如果是OptimisticRollup的情况下,此证明可以是ZKP或欺诈证明。它可以通过STARKs或SNARKs算法生成。最后,除了这两条数据之外,ZKRollups还向以太坊发布了处理交易批次的压缩版本,也称为Statedelta。Statedelta是一种将大量交易数据以经济高效的特点提交到以太坊的方式,这是ZKRollups独有的。OptimisticRollups是使用其他数据压缩技术来批量处理事务并将它们提交到链上。
此外,某些ZKRollups项目,例如Scroll团队,实际上并不依赖于将Statedelta发布到以太坊来获得额外的数据压缩收益。Scroll开发人员认为即将到来的代码更改,例如以太坊改进提案EIP-4844和danksharding将显著降低将交易数据提交给以太坊的成本,这样Statedelta相对于其他数据压缩技巧的效率提升可以忽略不计。
Rollups使用来自Merkle树最低层的数据,并将其与来自Merkle树最高层(根)的根分布式相结合,能够允许任何人重建和验证在链上提交的交易批次的内容。大多数Rollups的一个决定性特征是能够使用链上提交给以太坊的数据重新创建在L2网络上执行的交易。然而,某些Rollups避免将Statedelta或其他压缩交易数据提交给以太坊,而是将数据发布到其他地方以降低运营成本并提高网络可扩展性。某些开发人员会争辩说,避免将交易数据提交给以太坊并因此破坏交易重建保证的L2网络不应归类为Rollups。
Rollup处理Statedelta的方式决定了网络是可以归类为Validium还是Volition。
上述内容帮助理解以太坊上交易执行的整体框架、EVM和ZKRollups,现在讨论zkEVMs。
zkEVM是一种ZKRollup,它可以模仿与主网以太坊相同的交易执行环境。zkEVM的实现在证明算法和数据可用性策略上有所不同,另外zkEVM的EVM等效级别也不同。EVM等效性有四个主要级别。以下是不同级别的摘要:
为了实现语言级别的EVM等效性,zkEVM必须能够理解并本地编译EVM友好的语言。换句话说,这些类型的zkEVM可以将EVM友好编程语言(如Solidity或Yul)翻译成一种为生成ZKP而优化的定制语言。这被认为是在ZK-Rollups中实现EVM兼容性的最简单和最有效的方法之一。然而,这些类型的zkEVM在为用户和智能合约开发人员提供与EVM交互相同的体验方面最受限制。
与EVM的语言级兼容性意味着需要通过编译器运行Solidity,该编译器将EVM的高级编程语言翻译成定制的低级语言,由专为生成ZKP而设计的虚拟机解释。对于大多数只关心通过Solidity代码与EVM交互的以太坊用户和智能合约开发人员来说,zkEVM的底层行为可能并不重要,只要可以通过zkEVM执行与以太坊主网上相同类型的代码即可。另一方面,为EVM构建的复杂开发工具、框架和测试环境可能需要修改才能在仅具有语言级EVM兼容性的zkEVM上使用。
EVM等价的第二个和第三个级别是字节码级别,这需要ZKRollups才能解释从更高级语言(例如Solidity或Yul)编译下来的EVM字节码。zkEVM可以模仿与EVM相同的高级编程语言和低级字节码,从而实现与EVM更深层次的兼容性。这些类型的zkEVM构建起来更复杂,需要更高级的工程设计。
虚拟机执行EVM字节码的方式是通过称为操作码的特定指令列表,每个操作码命令EVM执行不同的任务。字节码兼容的zkEVM的目标是创建一个ZK系统,该系统可以证明EVM字节码并解析字节码包含的各种操作码。这些类型zkEVM的优势在于它们与基于EVM的应用程序和工具相互兼容。完全字节码兼容的zkEVM将能够支持与基于以太坊的原生应用程序相同的调试工具和开发人员基础设施。然而,实现完全的字节码兼容性通常会导致创建低效且昂贵的ZK系统,而降低成本,提高效率是不得不考虑的问题。
目前,有两种字节码兼容的zkEVM,包括PolygonzkEVM和ScrollzkEVM。在他们当前的设计中,这两个仅实现部分兼容EVM字节码,但是,随着时间的推移,这些实现正朝着完全兼容的方向努力。
EVM等价的第四个也是最后一个级别是共识级别。这是ZKRollups可以实现的对EVM的最高原生兼容性。它有时被称为「enshrinedRollups」,尽管并非所有「enshrinedRollups」都需要基于ZK,也可以是OptimisticRollups。这个想法是由zkEVM生成的加密证明不需要以任何身份在以太坊上重新执行,证明本身可用于验证主网以太坊上生成的区块。从某种意义上说,实现共识级别兼容性的zkEVM是zkEVM的最真实形式。
对于一些开发者来说,能够实现共识级别兼容性的ZKRollups是唯一一种应该称为zkEVM的ZKRollups,而其他具有语言和字节码兼容性的ZKRollup应该分别被认为是EVM兼容的和EVM等效的,但不是一个zkEVM。关于zkEVM的精确定义及其不同级别的EVM等价性,以太坊开发人员之间存在大量争议。事实上,EVM等效是一个范围,上面描述的每个层次都不是严格的类别。zkEVM开发的早期性质意味着为语言级别兼容性而构建的项目也可能提供某种类型的字节码级别兼容性,而字节码级别兼容的zkEVM最终可能会发展成为具有大量共识级别等价性的混合Rollups。
目前,还没有实用性的zkEVM可以实现共识级别的兼容性,开发者仍在不断的研究和开发,以太坊核心开发人员将其描述为「多年工程努力」。有些zkEVM已经实现在语言和字节码级别上的等效,为以太坊上当前主要以应用程序为中心的ZKRollupLayer2生态系统提供了改进思路。构建ZKRollup来执行一般的智能合约和用户交易而不是以应用程序为中心的交易是一项艰巨的任务,到目前为止,只有少数项目在主网上成功启动。
以下是以太坊上五个zkEVM项目的概述:
以上就是万字详解zkEVM:以太坊可扩展性的未来的全部内容,望能这篇万字详解zkEVM:以太坊可扩展性的未来可以帮助您解决问题,能够解决大家的实际问题是非常好学习网一直努力的方向和目标。