=nil;是一种zkRollup,通过zkSharding安全地扩展以太坊,提供60,000+ TPS,提供水平扩展、安全性、可审计性和可升级性,提供最快的l1最终性和最便宜的证明生成成本。它的目标是提供一种可靠的解决方案,可以提供安全性和数据可用性。
原文标题:Announcing zkSharding for Ethereum
原文作者:nil
原文来源:nil.foundation
编译:Kate, 火星财经
=nil; 是一个zkRollup,通过zkSharding安全地将以太坊扩展到60,000+ TPS,从而使web3开发人员能够构建可扩展、安全且可组合的应用程序
•=nil; 是一个分片的zkRollup——一个新的L2概念,通过跨分片的协议级并行交易执行来动态和安全扩展以太坊。
•配备zkSharding,=nil; 提供水平扩展,而不影响单一执行层的优势,即统一的流动性和经济安全性。
•=nil; 通过透明和可验证的以太坊数据访问,为应用程序提供与以太坊的完全可组合性。
•=nil; 引入了使用zkLLVM编译的Type-1 zkEVM。
•通过=nil的公开市场竞争保证快速证明生成,Proof Market-一个无需许可的证明生成市场。
如今,第2层解决方案在可扩展性和状态碎片之间权衡。我们引入了第二层(L2)设计=nil;,它在不影响统一执行环境的优势的情况下推动了以太坊可扩展性的极限。该解决方案结合了动态分片机制和对以太坊数据的可验证访问,并由零知识技术保护。关键要素包括:
•zkRollup 与Sharding:=nil; 的核心,是一种可证明的分片协议,在不影响安全性或效率的情况下实现水平可扩展性。这种方法解决了当前垂直扩展(L3、L4等)的一些限制,即数据和流动性碎片化。
•直接访问以太坊数据:从L2应用程序调用以太坊原始数据的能力允许我们重用已经部署的应用程序。从L2直接访问L1数据确保了一个更加统一和无缝的环境。
通过zkSharding =nil; 单片和模块化设计的优势包括:
1.可扩展性
没有可扩展性限制,因为执行是并行的。吞吐量估计约为每秒60k ERC-20传输,大约有400个节点。
通过证明市场的竞争性证明生成提供了最快的l1最终性和最便宜的证明生成成本。
2.统一执行环境
统一的执行环境保证没有安全/流动性碎片,因为每个分片都是整个集群的一部分。
减少从以太坊迁移流动性的需求=nil; 通过强制每个验证器维护完整的以太坊状态,作为部署的一部分,允许应用程序从=nil的zkEVM访问数据,为应用程序提供对其数据的透明访问。
3.安全
状态转换由zkEVM保护,通过zkLLVM编译。它提供了可审计的安全性(例如约束安全性),因为zkEVM电路是用高级语言从生产使用的EVM实现编译的,而不是手工编写的,因此代码很容易检查,。
从第一天开始就去中心化,这要归功于由=nil;实现的去中心化证明生成,证明市场。
4.功能性
一个Type-1 zkEVM,完全EVM字节码等效的zkEVM通过zkLLVM编译。
为对时间、内存和算法复杂性有高要求的应用程序量身定制的环境,通过提高单分片一致性和引入强制的每分片应用程序协同定位来减少延迟。例子包括去中心化交易所、证明市场、去中心化排序器/构建器、共享状态应用程序(又名自治世界等)。
在较低的层次上,=nil; 状态被划分为主分片和几个辅助分片。主分片的作用是同步和整合来自辅助分片的数据。它使用以太坊作为其数据可用层和状态转换证明的验证器,类似于典型的zkRollups操作。
辅助分片作为“工作者”,执行用户交易。这些分片通过跨分片消息传递协议保持统一的流动性和数据,消除了它们之间的任何碎片。
每个分片都由一个验证者委员会监督。这些验证器在分片之间进行周期性的旋转。此外,对分片状态的更新使用zkEVM验证到主分片。
为了说明从用户发起到在以太坊上确认的交易流程,请考虑以下步骤:
1.用户签署交易(tx)并将其分发到网络。
2.用户钱包所在的分片S中的验证器将tx放入内存池中。
3.然后这些验证器创建一个新的区块B(1/S)
4.B的哈希值(1/S)记录在块B(1/M)内的主分片上。
5.B(1/S)的状态转移证明由区块B(2/M)中的主分片生成并验证。
6.B(2/M)的状态转换证明被发送到以太坊进行验证,并与确保数据可用性的必要数据相结合。
7.一旦这个过程完成,tx就会得到以太坊的确认。
这个大纲假设用户的交易没有激活跨分片消息传递协议。然而,在这种情况下,交易流保持不变,不同之处在于用户的交易可以触发在其他分片上创建新交易。
由于所有帐户都分布在多个分片中,这看起来可能类似于应用程序特定的rollup方法中发现的数据碎片问题。然而,关键的区别在于如何处理跨分片通信:它直接集成到整个协议中,而不是由单独的外部桥管理。
为了保证每个辅助分片的安全性,其验证者委员会有义务证明其状态转换到主分片,以确保在较小的验证者组内没有发生欺诈。除了分片维护之外,每个分片验证器委员会还有其他任务。验证器负责跟踪特定类型的事件,即“近分片”内的跨分片消息。近分片是根据分片标识符中的汉明距离确定的。
zkEVM 通过 zkLLVM:Type-1 安全、可审计且高性能 zkEVM
=nil; zkEVM是使用zkLLVM编译的Type-1 zkEVM。为了理解更传统的zkEVM和=nil的zkEVM之间的区别,我们需要讨论与zkEVM基础的电路定义过程相关的限制。zkEVM电路是一个关键部分,负责状态转换证明被认为是正确的,通常用一些自定义的zkDSL或简单的库来定义。这种电路定义方式带来了以下问题:
•安全性:由于电路的大小和EVM逻辑的手动复制而引起的问题。
•可审计性:由于所使用的zkDSL的复杂性和非明确性,限制了可审计性和有限的可检查性。
•可升级性:由于手动约束定义需求而导致的维护和可升级性复杂性。如果EVM发生任何变化-大多数zkEVM电路将需要从头开始重新完成和重新审计。
•兼容性:由于zkEVM和实际EVM行为的差异,实际字节码兼容(又名Type-1) zkEVM电路实现的复杂性常常会给应用程序带来限制。
=nil; zkEVM通过以下方式有效地解决了所有这些挑战:
•安全:应该从实际生产运行的以太坊节点中使用的相同高级代码自动生成电路,以确保不存在算法差异。
•可审计的:电路应该用高级编程语言(又名c++或Rust)表示,这种语言应该以普通开发人员易于阅读的方式编写。
•可升级:电路的定义方式应使 EVM 内的任何更改都应易于翻译/编译为 zkEVM 电路,证明/定义完全相同的行为。此类升级不需要完全重新编译或重新审核。
•字节码兼容(又名Type-1):高级语言的电路编译带来了完整的字节码和EVM行为兼容性,大大缩短了EVM应用程序的上市时间和实现这种兼容性所需的开发时间/工作量。
通过zkLLVM编译的zkEVM在设计上是安全的,利用evmone来确保与以太坊生产使用的EVM完全一致。zkLLVM (c++或Rust)自动编译到电路中,这意味着从电路定义过程中消除了人为错误。
此外,因为=nil; zkEVM是通过zkLLVM编译的,它自然比手动定义的电路更灵活(因此,面向未来),因为它易于调整并且电路生成是自动的。它也更具可审计性,这意味着它的安全性不会以添加到以太坊的最新EIP为代价。
由于主分片和辅助分片的专用任务不同——辅助分片专注于交易处理,而主分片专注于数据同步——它们有不同的数据可用性(DA)方法,这有助于在紧急情况下恢复状态数据。这意味着:
•主分片采用以太坊作为其DA。
•辅助分片可以选择使用以太坊,也可以选择使用不同的DA。
这种安排是通过在开始时启动两种分片来建立的:那些具有单独的外部数据处理解决方案的分片和那些没有的分片。在随后的阶段中,只能合并相同DA类别的分片。这意味着在创建帐户期间,必须将每个帐户映射到特定的DA类别。
此外,该框架可以扩展以包含其他类型的DA。
我们的主要目标之一是优化应用程序的可组合性并防止流动性碎片化,因此,如果没有对以太坊状态的无信任访问,zkSharding方法自然是不完整的。这意味着=nil;通过数据提供者模块提供完整的可组合性和与以太坊的透明集成。
数据提供者独立于分片的数据存储进行操作,将其信息与外部数据库同步,并将以太坊最后监控的数据库状态的指纹(由以太坊的块哈希表示)注入到分片的块中。该数据库的最新状态来自确认模块接收验证,该模块使用带有以太坊Casper FFG共识证明的zkBridge。
=nil; 和zkSharding是产品=nil的巅峰之作。基金会在过去的四年中不断发展。它的目标是成为第一个可组合、可扩展和通用的以太坊L2 zkRollup解决方案。我们很高兴能在接下来的几个月里分享更多的实现细节。一定要关注我们的推特,了解我们的最新进展!
对于有技术倾向的人,我们开发了一个单独的、全面的入门教程,深入研究了=nil;的细节和zkSharding。这本入门教程是理解这种方法背后错综复杂之处的入门读物,提供了所需的所有技术细节和基础知识。