作者:zkSync. 编译:Cointime.com QDD
区块链的扩展
当前,以太坊每秒处理约12笔交易。为了支持未来全球金融活动在链上进行,我们需要能够每秒处理数百万笔交易。然而,由于其去中心化的本质,区块链很难扩展。横向扩展一直是最理想的方案。就像互联网上不同的服务器托管不同的网站一样,多个独立的链可以并行托管不同的应用程序。
已经进行了许多试验,尝试实现横向扩展,如Polkadot、Cosmos、Near,甚至现在已过时的Eth2.0愿景,它们都具有多个分片或多个链。所有这些解决方案都解决了互操作性问题,因为分片和桥接器是一起设计的,两者都是生态系统的重要组成部分。然而,所有这些解决方案中的分片在彼此之间始终无法完全信任。
与此同时,以太坊社区通过在链上验证链下计算、发明Plasma、乐观Rollups和其他解决方案来解决了信任问题。现在清楚的是,零知识证明是未来的趋势,因为它们提供了加密安全性。以太坊将对每个人开放。DA层和ZK Rollups将共同提供一个安全且可扩展的生态系统。但是,Rollups如何相互操作呢?现在我们已经找到了构建模块,是时候重新审视整个系统了。
问题:当前的桥接解决方案
当前的桥接解决方案状况混乱。有一些好的解决方案,如原子交换,可以在不同的区块链之间实现无信任的资产交换。不幸的是,它们不适用于一般的消息传递。
为了在链之间传递信息,引入了基于经济激励的桥接器。这些桥接器要求运营者锁定资金,根据仲裁过程可以对其进行削减。
设计空间非常广阔,存在几个潜在问题,包括:
1. 仲裁过程不是无信任的;dapp开发者必须考虑其中的风险。
2. 这些桥接器通常不能在链之间传输真实的资产;它们只能释放已锁定的资金。这使得该过程非常昂贵。然而,可以通过使用一般的消息传递和铸造合成资产来解决此问题。但是,合成资产比原始资产更不安全,且不能与之互换。
3. 链可以进行硬分叉。这是它们的权利,但却危及整个桥接生态系统。可以通过为每个桥接器单独锁定资金来减轻这种风险,但由于流动性碎片化,这使得该过程变得更加昂贵。这也适用于启用零知识的桥接器。
4. 最后,即使经济激励是合理的,仍然可能发生黑客攻击。如果在智能合约中发现漏洞,则整个生态系统中的每个桥接器都将受到影响。随着采用的增长,跨链活动将成为每个链活动中不可或缺的一部分。在这个阶段,如果发现漏洞,那么每个链都将希望进行硬分叉以保护其桥接器。桥接器只能在两侧共识的情况下进行硬分叉。这意味着生态系统需要一个共同的社会共识。
解决方案:超链+超桥接器
Hyperbridge一词来源于传统的Web,用户可以使用超链接导航网站。同样,我们的Rollups将通过超桥接器连接,连接超链的分形树状结构。
使用L1上的共享桥接器合约以及Rollups之间的本地桥接器可以解决上述所有问题。
1. Rollups具有可信的桥接器。
2. 本地桥接器可以轻松地在生态系统的成员之间燃烧和铸造本地代币进行转移。
3. L1作为唯一的真理源,因此Rollups无法进行硬分叉。
4. 生态系统可以通过在L1上的治理框架协调共同进行硬分叉,类似于L1对漏洞的反应。
超桥接器本身将是一组智能合约系统,验证在其他链上发生的默克尔证明交易。原始资产锁定在L1上的共享桥接器合约中。这意味着流动性在整个生态系统中是统一的。
不幸的是,并非所有的Rollups都能利用这些特性。特别是,乐观Rollups具有非常慢的L1终态,使得无信任桥接变得极慢。
这就是ZK的神奇所在。ZK Rollups的L1结算速度很快(最多几分钟),而且由于有效性证明的加密特性,我们可以安全地连接链。
超链用户体验
由于我们的目标是将数十亿用户引入Web3,用户体验必须是首要考虑的因素。用户将在不同的链上拥有钱包,通过跨链钱包管理进行统一。这仍然是一个研究热点,正如Vitalik最近的帖子中所展示的。这些解决方案将集成到账户抽象中,并在我们的链上得到本地支持。
用户的钱包将显示他们的所有资产,而中继器将处理桥接、燃烧和铸造资产以在目标链上使用。超链将具有唯一的标识符,当与ENS/Unstoppable域名配对时,接收地址将类似于电子邮件地址。当然,默认情况下将使用传统的以太坊地址与超链标识符一起使用。
桥接将成为协议的一部分,因此将内置在钱包中,与转账一起。桥接时间将是证明解决时间,这将在1-15分钟之间,具体取决于超链。由于唯一需要的中继器是外部基础设施,因此桥接的成本将很小,与gas费用相当。
想象一下跨链的Uniswap交易。你使用钱包开始交易。然后,中继器将1个ETH传输到Uniswap链,ETH将被兑换成DAI。最后,中继器将DAI转回你原来的链上。这三个步骤都是同一“半原子”交易的一部分。所有这一切都在几分钟内完成,感觉就像你没有离开原始链一样(除了稍长的确认时间)。
在更便宜的链(如validiums)上设置钱包时,用户必须相信托管组织不会丢失他们的资金。与中心化交易所不同,这些资金不能被盗窃,只能被冻结,这也会对托管组织造成损失!风险将在钱包中明确显示。
在资金转移后,用户可以在目标超链上正常使用资金。由于帐户抽象,这两个交易可以合并为单个交易。对于大多数交易来说,这是完全安全的,但由于证明的延迟,可能会有一些交易被插队。
(超)可扩展性
有效性证明为生态系统提供了基本的可扩展性。拥有单个区块链就像运行单个CPU,同时运行多个超链提供了并行处理的能力。
共享的证明机制使生态系统具有超级可扩展性。如果每个超链都想独立地将其证明结算到L1上,那么L1上的总负载仍将与超链的总数成正比。共享的证明聚合了不同超链的证明,在单个证明中将其全部在L1上结算。
共享的证明将是可选的,超链可以选择不参与。在这种情况下,它们可以将其证明直接结算给以太坊,但费用会更高。它也将是去中心化且广泛可访问的,这意味着运行证明所需的硬件要求将尽可能低。
超链的另一种可扩展性选择是分形扩展,即L3及以上的层次。这些也将成为生态系统的一部分,并与其他超链具有互操作性。在同一L2上结算的L3之间的消息传递速度更快,并且通过强制通过L2进行的事务可以实现廉价的原子性。对于validiums来说,这是一个特别好的解决方案,因为它们不会将数据发送到L1。唯一的缺点是如果L2发生回滚的机会更大。
可扩展性的另一个要求是数据可用性。这将由EIP-4844和最终的Danksharding提供。在此之前,可以使用validiums、zkPorters和外部DA层。
主权
生态系统中的所有超链都将拥有主权。这意味着两件事。
首先,L3及以上的超链将能够退出其L2,并成为自己的L2,或者成为另一个L2上的L3。
其次,超链将能够无需许可地加入和退出生态系统,将其所有资产添加或移出共同池。加入是不言而喻的,每个人都有权利启动新的超链并加入生态系统中的Chain Factory合约。
退出通常不是一个明智的决定,因为这将失去与其他超链的互操作性。然而,生态系统有时可能会通过治理进行升级,在这种情况下,每个超链都有权利退出并进行协调退出。
超链的构建者视角
核心桥接协议
生态系统中的智能合约将使用许多不同的编程语言编写,这是由于我们的VM具有本地的LLVM支持。开发者可以选择使用本地桥接器,无需外部第三方。资产、函数调用、一般消息和历史数据都可以在链之间进行无信任的跨链转移。
此生态系统中有三种类型的桥接器。奉行的L1-L2桥接器、zkPorter分片桥接器和超桥接器将使用类似的接口运行。
L1-L2桥接器是异步的。这意味着在发送交易执行之后,目标链上的交易可能会失败。这需要与传统智能合约不同的智能合约设计。可以查看L1-L2桥接教程以获取更多示例。注意:zkPorter桥接将是同步的,类似于EVM中的原子交叉合约调用。
还有另一个属性,即L1→L2方向是原子的。L2验证者会自动在目标上发起调用。L2→L1不是原子的,是用户(可能是dapp开发者)在目标上发起调用。
超桥接器在技术上类似于L2→L1桥接器,它们是异步的,不是原子的。然而,借助账户抽象、外部中继器和Rollups上的较低费用,用户不需要在目标链上启动调用。这意味着用户体验将感觉像是L1→L2桥接器。
除了跨链调用,还可以在交易内执行跨链视图,从生态系统的其他链上访问任意数据。
备选桥接协议
我们还正在研究在超链之间实现异步原子性,同时保持去中心化。这将使超桥接器类似于L1→L2桥接器,交易将自动调用,但仍将单独回滚。
这个构造使用了相同的组件,即超链、共享证明和DA层,只是配置略有不同。这意味着交易接收的保证将是加密性质的,而不仅仅是由中继器的经济保证。这将使智能合约能够在不同链之间转移资金,即使是大额资金。例如,对于闪电贷所需的大额资金,可以先将其转移到目标链上,在那里可以像通常一样执行操作。
不幸的是,不同超链之间的同步交易是不可能的。共享顺序机制确实允许交易之间存在原子依赖关系,并且与共享构建者配对使用时,构造变得更加强大。但是,此时系统与zkPorter及其多个分片一样集中化。超链可以自由地参与任何外部协议。
模块化:超链定制
ZK Stack提供的主要定制选项如下所述。当然,开发者可以自由实现自己的组件和定制。
事务排序
- 集中化序列器-在这种模式下,将有一个单一的集中操作员,具有传统的REST API,用于接受用户的事务。必须信任操作员维护活性性、不滥用MEV,并且不允许未完成的事务重组,因此操作员的声誉将起到重要作用。这种选项的最大优势是它可以提供最低可能的事务确认延迟(<100毫秒),这对于高频交易等用例至关重要。zkSync Era将以这种模式运行,直到完全去中心化,因此我们将早日为开发者提供经过实战验证的服务器代码。
- 去中心化序列器-在这种模式下,超链将使用共识算法协调哪些事务包含在一个区块中。它可以是任何算法,因此开发者可以重用现有实现(例如Tendermint或具有无许可dPoS的HotStuff)。但是,我们也可以利用底层L1的最终性检查点保证,并实现一种更简单且性能更高的算法。一旦共识实现准备就绪,Era将切换到此选项,并将其代码提供给超链开发者。
- 优先级队列-这意味着没有任何顺序器:所有事务都可以通过优先级队列从底层L2甚至L1链以批量方式提交,利用其更强的抵制审查性。这对于特定目的的治理协议(例如链上投票)可能特别有趣。值得注意的是,无论是使用集中化还是去中心化的顺序器,优先级队列始终可用作紧急机制(即使采用集中化或去中心化的顺序器),以防止恶意顺序器进行审查。
数据可用性
每个超链可以使用智能合约接口来管理其数据可用性(DA)策略。可以使用以下选项之一或一些更复杂的逻辑。例如,要结合zkPorter和validium,DA将需要来自守护者的签名的多数以及来自数据可用性委员会的一定数量的签名。
- zkRollup-这是我们的默认推荐策略:块结束时每个更改的存储插槽的值必须作为calldata发布在L1上。请注意,重复更改(或来回更改导致没有净差异)不会发布。这意味着如果一个块包含了100个在同一个DEX上的ETH/DAI交换,那么pubdata成本将在所有这些交换上部分摊销。以此模式运行的超链严格继承了从以太坊继承的完全安全性和抗审查性质。zkRollup在输出模式下的实现将从第一天开始提供。为了将calldata传播到L1上,它将在共享的L1桥上进行聚合。请注意,如果超链的ZK证明的大小可能很大并且/或者验证起来计算量很大,它只会产生L2成本而不是pubdata成本。
- zkPorter-详细介绍可以在这篇文章中找到。我们已经有了一个工作中的zkPorter守护者测试网,我们正在准备开源。我们预计zkPorter将受到愿意承担更高风险以换取极其便宜交易的用户的欢迎,这将在实现Danksharding之前极其有用,甚至在专业化用例中也是如此。超链开发者可以从zkSync主zkPorter实现中获取DA,也可以启动自己的守护者网络(这对于Reddit或Twitter等现有大型在线社区可能很有趣),或者使用外部DA解决方案(例如EigenDA)。
- validium-忠于我们的价值观,我们通常不鼓励主流用户相信基于validium的解决方案。然而,有些情况下使用validium是完全合理的,例如需要审计性和隐私性的企业链(由于这种情况下数据的可用性由一个中心方控制,只需通过保持数据保密即可使超链保持私有)。由于validium本质上是zkPorter的简化案例,开发者可以轻松部署基于此策略的超链。
- zkRollup(仅输入)-此策略将要求发布完整的事务输入而不是最终的存储更新。可信的状态重构和数据可用性成本在这种情况下将与乐观rollup完全相同(但具有zkRollup的所有好处,包括更好的安全性和更快的退出)。此选项的实现可以从正常zkRollup的实现中轻松推导出来。它可以用于应用程序特定的链,其中事务输入较短但可能会导致数据的大量更改(例如执行金融模拟)。
- zkRollup(自托管)-一种非常有趣的选项!在这种模式下,用户自己托管他们拥有的所有帐户的数据。为了强制执行这一点,需要用户确认签名来进行任何更改-这意味着你不能直接向另一个用户发送资金。相反,你将燃烧资金并创建此燃烧的证明,你可以通过离线渠道向接收方提供。然后,接收方将这些资金兑换到其账户中。这可能听起来很复杂,但可以构建一个漂亮的UI来抽象出用户体验,使其在实际上与在以太坊上发送和接收资金时无异(它将在用户打算花费资金时自动兑换所有接收到的资产,不需要额外的点击)。但是,这里有一个奇迹:自托管的zkRollup对于每个用户交互(包括任意多个事务的批处理)仅需要5个字节的存储空间!这使得在zkRollup模式下,对于任何实际用途,sharded以太坊具有无限的可扩展性(即100%安全和抗审查)。这是将地球上的每个人都引入以太坊的一种方式,而不会有任何安全妥协。这种方法的一个很好之处是它完全兼容我们的zkEVM实现,但仍然可以为用户提供隐私。该实现并不简单,因此我们预计它将是所有其他选项之后的最后一个。与此同时,它比诸如Adamantium之类的替代方法更简单且更强大。
ZK Porters中的逻辑状态分区
每个超链可以有一个或多个逻辑分区,这些分区属于同一个状态但位于不同的子树中,并且实施不同的数据可用性策略。从用户的角度来看,它们将显示为单独的超链实例(具有自己的链ID、单独的钱包连接、区块浏览器视图等),但可以进行同步互操作。
同步性很重要,因为它可以实现分区之间的原子事务,解锁几个独特的用例:
- 透明地读取另一个分区的状态。
- 在分区之间使用闪电贷。
其中一个突出的例子是zkRollup + zkPorter的组合:
隐私性
超链可以通过多种方式增加隐私性:
1. Validium-对于以validium模式运行的超链,向外界提供隐私是默认实现的,只要操作员保持块数据保密即可。这可能是企业用户的有趣选择。
2. 隐私协议-要实现用户级隐私,需要一种专用的L3协议。Aztec或Tornado等项目可以直接在一个或多个超链上实现(利用账户抽象和zkSync上廉价的递归ZKP验证),或者它们可以选择加入独立的专用超链以获得更大的灵活性。
3. 基于用户维护的数据可用性和自证明的链上状态转换的自托管Rollup将在长期内提供终极隐私和无限可扩展性。
所有评论