混合层2协议深度指南
本文摘要:现在的Layer2扩展办法基本上是等离子体和状况通道,正渐渐从理论转向实践。

现在的Layer2扩展办法基本上是等离子体和状况通道,正渐渐从理论转向实践。但与此同时,将这部分技术视为完全成熟的ETH扩展解决方法的内在挑战也变得愈加容易。

ETH的成功非常大程度上归功于它很简单的开发经验:你撰写一个程序,发布一个程序,其他人都可以与之交互。另一方面,设计状况通道或plasma应用程序依靠于很多关于特定应用程序的勉励和开发复杂性的明确推理。

国家频道在某些状况下工作得非常不错,比如同一个双向和两人游戏之间的重复支付(正如它在celer中成功达成的那样),但它的广泛用是有挑战性的。Plasma,特别是Plasma现金,可以非常不错地用于支付,但竞价也会带来挑战:即便推行去中心化买卖,顾客也需要存储更多的历史数据,在Plasma上竞价ETH风格的智能合约好像很不简单。

但与此同时,被遗忘的“半层2”协议范畴第三出现,这一范畴承诺在扩展方面不会有太大进展,但具备更易于竞价和更有利的安全模的优点。

一篇早在2014年就被遗忘的博客文章引入了“影子链”的定义,这是一种在链上发布块数据的构造,但默认状况下,块不会被验证。取而代之的是,该区块暂时被同意,并且只有在一段时间后(比如,2周)才最后确定。在这两周内,可以对临时同意的区块提出质疑。只有如此才能验证块。假如区块被证明无效,将恢复从区块开始的链,并处罚原出版商的押金。

契约不跟踪系统的完整状况;它只跟踪状况根,用户可以通过处置从头到尾提交给链的数据来计算状况。近期的一个建议ZK rollup用ZK snarks来验证块的有效性,并且在没挑战周期的状况下达成相同的功能。

剖析链上发布的ZK聚合包。数百个影响状况的“内部事务”(如ZK rollup系统的竞价推广账户余额)被压缩到一个包中。指定状况转换的每一个内部事务包含大约10个字节,外加强约100-300字节的snark,这证明了这部分转换是有效的。

在这两种状况下,主链都用于验证数据的可用性,但不会(直接)验证数据块的有效性或实行任何要紧的计算,除非存在挑战。因此,这项技术并非一个惊人的巨大可扩展性增益,由于链上的数据开销最后是一个瓶颈,但它仍然是一个尤为重要的瓶颈。

数据比计算更实惠,而且有很多办法可以显著地压缩事务数据,尤其是由于事务中的大部分数据都是签名,并且可以通过各种形式的聚合将很多签名压缩为一个签名。

zk rollup承诺将每一个事务压缩到10字节,等于500tx/sec,是ETH链本身的30倍;签名无需包含在内,由于它们的有效性是通过零常识证明来验证的。

用BLS聚合签名可以在影子链中获得一样的吞吐量(近期称为lt;optimal rollupgt;,以强调其与ZK聚合的相似性)。马上推出的伊斯坦布尔硬fork将把数据本钱从68/字节减少到16/字节,并将这部分技术的吞吐量再提升四倍(即每秒超越2000个事务)。

那样,像ZK/optimal rollup如此的链上数据技术和像plasma如此的链下数据技术有哪些优势呢?第一,无需半信赖的操作员。在ZK rollup中,因为有效性是通过加密证明来验证的,所以提交的包不可以是恶意的(依据设置,恶意提交的包可能会致使系统中止几秒钟,但这是可能导致的最大风险)。

在最佳大全中,恶意提交者可以发布坏块,但下一个提交者将在发布我们的块之前立即质询该块。在ZK和optimal rollup中,链上发布了足够的数据,其他人都可以计算出完整的内部状况。它们仅需按顺序处置所有提交的增量,并且没有剥夺此属性的“数据延迟攻击”。因此,作为一名运营商可能根本无需许可;所需要的只不过一笔反垃圾邮件押金(比如,10 以太币)。

第二,最佳大全特别容易竞价;最佳大全系统中的状况转移函数可以是在单个块的气体极限内可以计算的任何函数(包括提供验证转移所需的状况部分的Merkle分支)。

从理论上讲,ZK rollup也可以用同样的办法来提高,但在实践中,ZK非常难在通用计算(譬如EVM实行)中遇见麻烦,至少现在是如此。第三,优化大全更容易构建顾客机,由于对Layer2互联网基础设施的需要较少;仅需扫描区块链就可以完成更多的工作。

但这部分优势从何而来?答案在于一个称为数据可用性的高技术性问题。基本上,在Layer2系统中有两种作弊方法。第一种办法是向区块链发布无效数据。

第二是根本不发布数据(譬如在plasma中,新plasma块的根哈希值发布到主链上,但块的内容不向其他人透露),发布但无效的数据很容易处置,由于一旦数据发布到主链上,就有不少办法可以了解地判断它是不是存在是有效的。无效投稿显然是无效的,因此投稿者将遭到严惩。

另一方面,不可用的数据更难处置,由于即便遭到质疑,仍然可以测试到不可用的数据,但确定不披露的过错者是不靠谱的,特别是在数据默认状况下仍然是按需提供的状况下,只有当一些验证机制试图验证其可用性时。

这反映在“渔民困境”中。游戏展示了挑战-响应游戏怎么样区别恶意提交者和恶意挑战者

渔民的困境。假如你只不过在T3开始察看一个给定的块,你不知晓它是在案例1还是案例2中,或者它是哪个的错。

plasma和status channel都可以通过将问题推给用户来解决渔民的困境:假如你决定与之交互的其他用户(status channel中的对手和plasma链中的运营商)没发布他们应该发布给你的数据,则你有责任退出并转移到其他对手/运营商。

作为一个用户,你拥有所有以前的数据,与有关你签署的所有事务的数据,这一事实允许你向链证明你在第2层协议中拥有什么资产,从而安全地将它们从系统中取出。你已经证明存在一个操作(先前约定)将资产提供给你,而别的人没办法证明存在一个你批准将资产发送给别的人的操作,因此你获得了资产。

技术很高雅。然而,它依靠于一个重要的假设:每一个state对象都有一个逻辑上的“所有者”,未经所有者赞同,对象的状况不可以更改。这适用于基于utxo的支付(但不是基于竞价推广账户的支付,在这样的情况下,你可以在未经他人赞同的状况下编辑别的人的余额;这就是基于竞价推广账户的plasma这样困难是什么原因),甚至允许它适用于去中心化的交易平台,但这种“所有权”属性远未普及。

有的应用程序(如Uniswap)没自然所有者。即便在那些拥有所有者的应用程序中,也常常有很多人可以合法地编辑对象。除此之外,假如不引入拒绝服务(DOS)攻击的可能性,就不可能允许任何第三方退出资产,由于大家没办法证明发布者或提交者是错误的。

还有其他等离子体和状况通道特有些问题。state通道不允许对不是该通道的用户进行链外事务(参数:假设有一个办法从通道向任何新用户发送$1)。然后,这项技术可以并行多次用,向用户发送的1USD比系统中的金额还多,这就打破了系统的安全保障)。

Plasma需要用户存储很多的历史数据。当不一样的资产交织在一块时,历史数据会变得更大。当一种资产的转移以另一种资产的转移为条件时,它就像单阶段订货簿机制中的去中心化买卖一样。

由于第2层没数据可用性问题,所以它们没这部分弱点。ZK和optimal rollup很小心地在链上放置足够的数据,允许用户计算第2层系统的完整状况,确保假如任何参与者消失,新的参与者可以轻松地替换它们。

他们唯一的问题是验证计算而不进行链上计算,这是一个容易得多的问题。在ZK rollup中,每一个事务可以达成约10字节的可伸缩性,而在最佳rollup中,通过用BLS聚合来聚合签名可以达成类似的可伸缩性。这等于理论上的每秒最多500个事务,伊斯坦布尔会议后每秒超越2000个事务。

但假如你想要更多的可伸缩性呢?然后,在链上数据层2协议和链下数据层2协议之间有一个非常大的中间地带。用多种混合办法,可以同时获得两种协议的一些优点。举个容易的例子,在plasma cash上达成的去中心化交换中,可以通过在链上发布订单匹配的映射(每一个订单少于4字节)来预防历史存储崩溃

左图:假如plasma cash用户拥有币代,他们需要存储历史数据。中间:等离子现金用户需要存储的历史数据,假如他们有一代币和另一代币与原子交换。正确:假如订单匹配在链上发布,plasma cash用户需要存储历史数据。

即便在去中心化的交换环境以外,用户需要存储在plasma中的历史数据量也可以通过让plasma链按期在链上发布每一个用户的数据来降低。你还可以想象如此一个平台:当某些状况下有逻辑所有者时,它的工作方法像plasma;当没逻辑所有者时,它的工作方法像ZK或optimal rollup。Plasma开发职员已经在进行这部分优化。

因此,对于Layer2可扩展性解决方法的开发职员来讲,至少在某些状况下,他们更想在链上发布每一个用户的数据:这大大提升了开发的便捷性、通用性和安全性,降低了每一个用户的负载(比如,用户无需存储历史数据)。

如此做的效率损失也被夸大了:即便在Layer2构造中,用户在不一样的买卖对手和提供商之间存取和转移资金也是不可防止和频繁的,因此无论怎么样每一个用户链上都会有很多的数据。混合路由为在准第2层构造中相对迅速地部署完全通用的ETH样式的智能合约打开了大门。