长话短说
z如今,二层(L2)解决方案在可扩展性和状态碎片化之间进行权衡。我们介绍一种二层设计——=nil;,它在不损害统一执行环境的好处的前提下,拓展了以太坊的可扩展性极限。这一解决方案结合了动态分片机制和可验证地访问以太坊数据的功能,由零知识技术保障。关键要素包括:
通过 zkSharding =nil; 获得了单体和模块化设计的双重优势,包括:
在较低层级上,状态=nil; 被分割为主分片和几个次级分片。主分片的作用是同步并整合次级分片的数据。它使用以太坊作为其数据可用性层,并且作为状态转换证明的验证者,类似于典型的 zkRollups 操作。
次级分片作为“工作节点”,执行用户交易。这些分片通过跨分片消息协议维持统一的流动性和数据,消除它们之间的任何碎片化。
每个分片都由一个验证者委员会监督。这些验证者在分片间定期轮换。此外,对分片状态的更新通过 zkEVM 向主分片进行验证。
为了说明从用户发起到以太坊上确认的交易流程,请考虑以下步骤:
这个概述假设用户的交易不会触发跨分片消息协议。然而,在这种情况下,交易流程保持不变,不同之处在于用户的交易可以触发在其他分片上创建新交易。
将所有账户分布在各个分片中,这似乎与特定应用程序卷展方法中发现的数据碎片化问题类似。然而,关键区别在于跨分片通信的处理方式:它直接集成到整体协议中,而不是由单独的外部桥梁管理。
为了保证每个次级分片的安全性,其验证者委员会有责任向主分片证明其状态转换,以确保在较小的验证者群体中没有发生欺诈。每个分片的验证者委员会除了分片维护之外还有额外任务。验证者负责跟踪特定类型的事件,即在“邻近分片”中的跨分片消息。邻近分片是基于分片标识符中的汉明距离确定的。
=nil; 的zkEVM是用zkLLVM编译的类型1 zkEVM。为了理解更传统的zkEVM和=nil;的zkEVM之间的区别,我们需要讨论与zkEVM底层电路定义过程相关的限制。zkEVM电路是一个关键部分,负责状态转换证明被认为是正确的,通常使用一些自定义的zkDSL或简单的库来定义。这种电路定义方式带来的问题与以下方面相关:
通过zkLLVM编译的zkEVM在设计上是安全的,利用evmone来确保与以太坊生产环境中使用的EVM完全一致。zkLLVM(C++或Rust)自动编译成电路,意味着人为错误从电路定义过程中被移除。
此外,由于=nil; zkEVM是通过zkLLVM编译的,它比手动定义的电路自然更灵活(因此,更具未来证明性),因为它容易调整且电路生成是自动的。它也更易于审计,这意味着它的安全性不会以牺牲包含以太坊最新EIP为代价。
由于主分片和辅助分片在其专门任务方面的不同 - 辅助分片专注于交易处理,而主分片专注于数据同步 - 它们对数据可用性(DA)的处理方式也不同,这有助于在紧急情况下恢复状态数据。这意味着:
主分片采用以太坊作为其DA。
辅助分片可以选择使用以太坊,或者选择不采用独立的DA。
这种安排是通过在开始时启动两种类型的分片来建立的:具有独立的外部DA解决方案的分片和没有的分片。在后续阶段,只能合并相同DA类别的分片。这意味着在创建时,每个账户必须映射到特定的DA类别。
此外,这个框架可以扩展以包括其他类型的DA。
我们的主要目标之一是优化应用程序组合性并防止流动性碎片化,因此自然地,zkSharding方法如果没有对以太坊状态的无信任访问是不完整的。这意味着 =nil; 提供完全的可组合性和透明的与以太坊集成,通过数据提供者模块。
数据提供者模块独立于分片的数据存储运行,将其信息与外部数据库同步,并将以太坊对最后监控的数据库状态的指纹(由以太坊的区块哈希表示)注入到分片的区块中。这个数据库的最新状态通过确认模块获得验证,该模块使用与以太坊的Casper FFG共识证明的zkBridge。
=nil; 和 zkSharding 是=nil; 基金会在过去四年中开发的产品的高潮。其目标是成为第一个可组合、可扩展且通用的以太坊L2 zkRollup解决方案。我们很高兴在接下来的几个月内分享更多的实施细节。请确保关注我们的Twitter,以了解我们的进展!
对于技术倾向的人,我们开发了一本单独的、全面的入门书,深入探讨=nil; 和 zkSharding 的细节。这本入门书是理解这种方法背后复杂性的入口,配备了您所需的所有技术细节和预备知识。
立即深入我们的技术入门书,并在Discord和Telegram上加入讨论。让我们一起探索zkSharding的无限可能!
长话短说
z如今,二层(L2)解决方案在可扩展性和状态碎片化之间进行权衡。我们介绍一种二层设计——=nil;,它在不损害统一执行环境的好处的前提下,拓展了以太坊的可扩展性极限。这一解决方案结合了动态分片机制和可验证地访问以太坊数据的功能,由零知识技术保障。关键要素包括:
通过 zkSharding =nil; 获得了单体和模块化设计的双重优势,包括:
在较低层级上,状态=nil; 被分割为主分片和几个次级分片。主分片的作用是同步并整合次级分片的数据。它使用以太坊作为其数据可用性层,并且作为状态转换证明的验证者,类似于典型的 zkRollups 操作。
次级分片作为“工作节点”,执行用户交易。这些分片通过跨分片消息协议维持统一的流动性和数据,消除它们之间的任何碎片化。
每个分片都由一个验证者委员会监督。这些验证者在分片间定期轮换。此外,对分片状态的更新通过 zkEVM 向主分片进行验证。
为了说明从用户发起到以太坊上确认的交易流程,请考虑以下步骤:
这个概述假设用户的交易不会触发跨分片消息协议。然而,在这种情况下,交易流程保持不变,不同之处在于用户的交易可以触发在其他分片上创建新交易。
将所有账户分布在各个分片中,这似乎与特定应用程序卷展方法中发现的数据碎片化问题类似。然而,关键区别在于跨分片通信的处理方式:它直接集成到整体协议中,而不是由单独的外部桥梁管理。
为了保证每个次级分片的安全性,其验证者委员会有责任向主分片证明其状态转换,以确保在较小的验证者群体中没有发生欺诈。每个分片的验证者委员会除了分片维护之外还有额外任务。验证者负责跟踪特定类型的事件,即在“邻近分片”中的跨分片消息。邻近分片是基于分片标识符中的汉明距离确定的。
=nil; 的zkEVM是用zkLLVM编译的类型1 zkEVM。为了理解更传统的zkEVM和=nil;的zkEVM之间的区别,我们需要讨论与zkEVM底层电路定义过程相关的限制。zkEVM电路是一个关键部分,负责状态转换证明被认为是正确的,通常使用一些自定义的zkDSL或简单的库来定义。这种电路定义方式带来的问题与以下方面相关:
通过zkLLVM编译的zkEVM在设计上是安全的,利用evmone来确保与以太坊生产环境中使用的EVM完全一致。zkLLVM(C++或Rust)自动编译成电路,意味着人为错误从电路定义过程中被移除。
此外,由于=nil; zkEVM是通过zkLLVM编译的,它比手动定义的电路自然更灵活(因此,更具未来证明性),因为它容易调整且电路生成是自动的。它也更易于审计,这意味着它的安全性不会以牺牲包含以太坊最新EIP为代价。
由于主分片和辅助分片在其专门任务方面的不同 - 辅助分片专注于交易处理,而主分片专注于数据同步 - 它们对数据可用性(DA)的处理方式也不同,这有助于在紧急情况下恢复状态数据。这意味着:
主分片采用以太坊作为其DA。
辅助分片可以选择使用以太坊,或者选择不采用独立的DA。
这种安排是通过在开始时启动两种类型的分片来建立的:具有独立的外部DA解决方案的分片和没有的分片。在后续阶段,只能合并相同DA类别的分片。这意味着在创建时,每个账户必须映射到特定的DA类别。
此外,这个框架可以扩展以包括其他类型的DA。
我们的主要目标之一是优化应用程序组合性并防止流动性碎片化,因此自然地,zkSharding方法如果没有对以太坊状态的无信任访问是不完整的。这意味着 =nil; 提供完全的可组合性和透明的与以太坊集成,通过数据提供者模块。
数据提供者模块独立于分片的数据存储运行,将其信息与外部数据库同步,并将以太坊对最后监控的数据库状态的指纹(由以太坊的区块哈希表示)注入到分片的区块中。这个数据库的最新状态通过确认模块获得验证,该模块使用与以太坊的Casper FFG共识证明的zkBridge。
=nil; 和 zkSharding 是=nil; 基金会在过去四年中开发的产品的高潮。其目标是成为第一个可组合、可扩展且通用的以太坊L2 zkRollup解决方案。我们很高兴在接下来的几个月内分享更多的实施细节。请确保关注我们的Twitter,以了解我们的进展!
对于技术倾向的人,我们开发了一本单独的、全面的入门书,深入探讨=nil; 和 zkSharding 的细节。这本入门书是理解这种方法背后复杂性的入口,配备了您所需的所有技术细节和预备知识。
立即深入我们的技术入门书,并在Discord和Telegram上加入讨论。让我们一起探索zkSharding的无限可能!