高扩容性


高扩容性

区块链系统通过依靠基石原则 "不要相信,要验证 "来实现不可破坏的公平性。同时,为了使区块链保持去中心化,运行验证器节点的资源要求必须保持相对较低。将这两个想法联系起来,我们就可以看到广泛接受的可扩容性定义。

Tips

扩容性=在不降低安全性和去中心化的情况下处理更多的交易。

可扩展性可以通过多种方式提高,从提高验证者的效率到引入概率性信任假设(乐观滚动所做的)。这些方法中的大多数提供了线性的可扩展性提升,但有一种方法很突出:简洁的零知识证明(ZKPs)。无论处理多少交易,它们总是产生大约O(1)的验证成本。这意味着基于ZKP的扩展--即validiums和(在某些条件下)zkRollupsopen in new window--可以是超可扩展的。

Tips

超级扩展=处理无限多的交易而不降低安全性和分散性。

换句话说,超可扩展性意味着突破了区块链的三难困境。

超可扩展性!

理论上,鉴于足够的硬件,有可能聚集任意大的交易区块,并为每个这样的区块产生一个简洁的ZKP(更确切地说:计算完整性证明)。然而,在实践中,没有一个单一的区块链系统能够满足无限的市场需求。以下是一些原因。

  • 顺序交易处理将始终是一个瓶颈。至少有一些交易需要与共享状态的相同存储槽进行交互,无论多少并行性都无法帮助。
  • 去中心化的p2p网络和共识机制也会有自己的瓶颈。
  • 数据的可用性将有一个瓶颈,至少在高级分片在L1级别实现之前是如此。
  • 用户对相互冲突的要求有不同的偏好:去中心化的程度与延迟,隐私与透明,通用的可组合性与超高的安全性与超低的成本,等等。没有一个特定的选择可以对所有的使用情况都是最佳的。

幸运的是,ZKPs提供了一种美丽的方式来建立一个异质但同时又是超可扩展的区块链系统。这个想法被称为分形缩放open in new window。 许多不同的ZKP链(在zkSync世界中,我们称之为超链)被平行运行,并将其区块证明汇总到一个最终区块中,并在L1上结算。每个Hyperchains将类似于整个系统(即它可以在上面有无限多的其他Hyperchains。L3,L4,以此类推)。

超链!

分形缩放是必要的,但不是实现超扩展的充分条件。你需要一个额外的组件。

Tips

超桥 = 本机桥,可以在任何两个超链之间进行传输,而不消耗第三个超链的资源。

分形扩展总是可以通过底层连接链的原生桥,但在这种情况下,基链最终会变成大多数传输的十字路口,从而成为中心可扩展性的瓶颈,违背了并行超扩展性的理念。因此,它不可能保证在任何给定的两条链上的用户之间进行廉价的直接传输。

为了实现底层链的零成本开销,每个超链必须。

  • 实现原生的超桥,可以实际燃烧和铸造实际的代币,而不是它们的虚拟代表(与传统的桥相反),在超链的状态中存储铸造的索赔承诺。
  • 信任所有其他超链上的超桥的实现--因为如果一个超桥被破坏,恶意的链可能会扰乱代币供应(因此所有的超链必须实现完全相同的电路)。

Fractal scaling

Fractal scaling!

Hyperscaling

Hyperscaling!

通过超桥,你可以以正常的传输成本将资产从一个超链转移到另一个超链,就像超链接可以将你从一个网页带到另一个网页,只需一次点击即可(无需在每层导航中分别点击)。

智能合约也可以使用超链,以不信任的方式向任何超链发送资产和任意信息,并保证最终交付(只要目标超链是活的)。

通过超桥的通信总是异步的:为了在接收的超链B上处理一个消息,发送的超链A必须最终确定其状态,一直到最早的超链,也就是A和B的共同基础。超链可以每秒敲定区块(与L1相比,这很便宜),而硬件加速使区块证明的生成非常快。

关于技术上的深入研究,请看优秀的Slush论文open in new window,它非常详细地探讨了超桥实现的细微差别。

什么是超链?

超链是zkEVM的类似分形的实例,在L1主网上平行运行并有共同的结算。

超链可以由任何人开发和无权限地部署。然而,为了保持信任和完全的互操作性,每个超链必须由与主zkSync L2实例完全相同的zkEVM引擎驱动。因此,所有的ZKP电路将保持100%的相同,让Hyperchain完全继承L1的安全性,无论谁部署它们。这确保了零额外的信任/安全假设。

超链将按照模块化方法实现--我们将提供一个类似于Cosmos或Substrate的超链SDK框架,开发者可以单独挑选他们区块链的不同组件或实现他们自己的组件(除了zkEVM核心,因为上面解释的原因)。更多细节请参见下面的[关于超链参数化的问题](#how-can-hyperchains-be-parametrized)。

什么是基链?

Basechain是zkSync Era的主要超链实例(L2实例)。它作为通用智能合约的默认计算层,并作为所有其他超链(L3及以上)的结算层。

基地链除了直接在L1上结算其区块外,没有任何特殊之处。

超级链如何被参数化?

我们的Hyperchain SDK提供的主要定制选项解释如下。当然,开发者可以自由实现他们自己的组件和定制。

序列交易

  • 集中式排序器 - 在这种模式下,将有一个具有传统REST API的集中式运营商接受用户的交易。运营商必须被信任,以保持有效性,不滥用MEV,并且不允许未完成的交易重新排序,所以运营商的声誉将发挥很大作用。这个选项的最大优势是它可以提供尽可能低的交易确认延迟(<100ms),这对HFT等使用情况至关重要。在完全去中心化之前,Basechain将以这种模式运行,因此我们将在早期为开发者提供经过战斗检验的服务器代码。

  • 去中心化的排序器 - 在这种模式下,超级链将协调使用共识算法的区块中包含哪些交易。它可以是任何算法,所以开发者可以重新使用现有的实现(例如Tendermint或HotStuff与无权限dPoS)。但我们也可以利用最终性检查点由底层L1保证这一事实,并实现一种更简单且拥有更高的性能的算法。一旦共识实现准备就绪,Basechain就会切换到这个选项,并将其代码提供给Hyperchain的开发者。

  • 优先级队列 - 这只是意味着没有任何排序器:所有交易可以通过优先级队列从底层的L2甚至L1链上分批提交,利用其更强的抗审查能力。这对于特殊目的的治理协议(如链上投票)可能特别有趣。值得注意的是,优先级队列将始终作为一种逃逸机制(即使采用集中式或分散式的排序器),以保护用户免受恶意排序器的审查。

数据可用性

每个超链可以使用智能合约接口管理其数据可用性(DA)政策。它可以使用下面描述的选项之一或一些更复杂的逻辑。例如,为了结合zkPorter和validium,DA将需要来自监护人的签名的法定人数和来自数据可用性委员会的一些签名。

  • zkRollup - 这是我们默认的推荐策略:在区块结束时,每个改变的存储槽的值必须作为calldata发布在L1上。请注意,重复的变化(或导致没有净差异的来回变化)不会被公布。这意味着如果一个区块在同一个DEX上包含100个ETH/DAI交换,那么pubdata成本将在所有这些交换中被部分摊销。以这种模式工作的超链严格继承了以太坊的全部安全和抗审查属性。输出模式下的zkRollup的实现将从第一天开始。为了将calldata传播到L1,它将在Basechain进行聚合。请注意,如果Hyperchain的ZK-proof的规模可能很大和/或计算量很大,以验证它只产生L2成本而不是pubdata成本。

  • zkPorter - 它在本帖open in new window中有详细解释。我们已经有了一个工作的zkPorter监护人testnet。我们预计zkPorter将受到愿意承担更高的安全风险以换取真正的廉价交易的用户的欢迎,直到Danksharding实现。超链开发者将能够从zkSync主要的zkPorter实现中获取DA,或者引导他们自己的监护人网络(这对现有的大型在线社区如Reddit或Twitter可能很有趣)。

  • Validium - 为了忠实于我们的价值观open in new window,我们通常不鼓励open in new window主流用户信任基于validium的解决方案。然而,在某些情况下,使用validium是完全合理的,例如,需要可审计性和隐私的企业链(因为在这种情况下,数据的可用性是由中央控制的,通过简单地扣留数据来保持这种超链的隐私是很容易的)。由于validium本质上是zkPorter的一个更简单的案例,开发者可以很容易地部署基于这个策略的超链。

  • zkRollup (inputs only) - 这个策略将需要发布完整的交易输入,而不是最终的存储更新。在这种情况下,无信任状态重建和DA成本将与乐观滚动100%相同(但当然有zkRollup的所有好处,包括更好的安全性和更快的退出)。这个选项的实现很容易从正常的zkRollup的实现中导出。它可以由特定的应用链来探索,其中tx输入很短,但可能导致数据的大量变化(例如,执行金融模拟)。

  • zkRollup (self-hosted) - 一个极其有趣的选项!在这种模式下,用户自我托管。在这种模式下,用户自行托管他们拥有的所有账户的数据。为了执行这一点,需要用户确认签名才能进行任何更改--这意味着,你不能直接向另一个用户发送资金。相反,你将烧毁这些资金,并创建一个这种烧毁的证明,你可以通过链外渠道提供给你的收件人。然后收件人将把它们赎回到他们的账户。这可能听起来很复杂,但很容易构建一个漂亮的用户界面,这将抽象出用户体验,使其实际上与以太坊上的资金收发没有区别(它将在用户打算花费资金的时候自动赎回所有收到的资产,不需要额外的点击)。但是,奇迹来了:一个自我托管的zkRollup可以在每个用户互动中以低至5个字节的速度快乐地进行,其中包括一批任意多的交易!这使得分片式以太坊的交易量增加。这使得sharded Ethereum在zkRollup模式下可以无限扩展,达到任何实际目的(即100%安全和抗审查)。这是一种让地球上每一个人都加入以太坊的方法,而且安全方面没有任何纰漏。这种方法的一个好处是,它与我们的zkEVM实现完全兼容,但仍然可以为用户提供隐私。实现起来并不困难,所以我们希望它能在所有其他选项中排在最后。同时,它比Adamantium等替代方法更简单、更强大,我们随后将忽略这些方法。

逻辑状态分区

每个Hyperchain可以有一个或多个逻辑分区,它们是同一状态的一部分,但生活在不同的子树中,执行不同的数据可用性策略。从用户的角度来看,它们会显示为独立的超链实例(有自己的链ID,独立的钱包连接,区块资源管理器视图等),但它们可以同步互通。

同步性是很重要的,因为它可以实现分区之间的原子交易,解锁几个独特的用例。

  • 透明地读取另一个分区的状态。
  • 在分区之间使用闪存贷款。

这方面的一个突出例子是zkRollup + zkPorteropen in new window的组合(这将是zkSync基链的一部分)。

逻辑状态分区!

隐私

超链可以通过多种方式增加隐私。

  1. 有效性。对于在validium模式下运行的超链来说,只要操作者保持区块数据的秘密,就可以实现对外的隐私。这对企业用户来说可能是一个有趣的选择。
  2. 2.隐私协议。为了实现用户级隐私,需要一个专门的L3协议。像Aztec或Tornado这样的项目可以直接在Basechain上实现(利用账户抽象和zkSync上廉价的递归ZKP验证),或者它们可以选择进入独立的特殊用途的Hyperchain以获得更大的灵活性。

超可扩展性用户体验是什么感觉?

超链将有类似于互联网域名的独特的分层标识符。

zksync

reddit.zksync

ethereum.reddit.zksync

账户将有标准的EVM地址,并由Hyperchain的ID增加。

0x60250Fff03f8E8aed6a5B36Fa4F5a5F75fD5d25d @ zksync

0x31a7ca77c0bc7a26a5ee69ea3e65363ead6aa322 @ reddit.zksync

当然,像ENS / Unstoppable domains这样的服务总是可以用来走捷径。

gluk64 @ reddit.zksync

gluk64.eth

因此,向另一个用户发送数字资产的感觉就像发送电子邮件(在几秒钟内异步到达),但现在你可以在上面附加金钱。

同样,从开发者的角度来看,与不同超链上的合约互动将类似于在网络上调用REST API方法。如果调用是由智能合约发起的,那么结果将通过一个异步回调接收。