主页 > 华为无法更新imtoken > Vitalik:混合第 2 层协议的曙光

Vitalik:混合第 2 层协议的曙光

华为无法更新imtoken 2023-03-17 06:48:55

注:原作者为以太坊创始人Vitalik Buterin,以下为译文。

特别感谢 Plasma Group 团队的审查和反馈。

目前layer 2(layer 2)扩容方式(基本指Plasma和state channels)正从理论阶段走向实践阶段,但与此同时,这些扩容技术的内在挑战也越来越容易可见,所以他们距离成为成熟的以太坊扩容技术还有一段距离。 以太坊在很大程度上是成功的,因为它的开发经验非常简单:你编写一个程序,发布它,任何人都可以与之交互。 另一方面,设计状态通道或 Plasma 应用程序依赖于大量关于激励和特定于应用程序的开发复杂性的明确推理。 对于特定的用例,例如相同的两方之间的重复支付和双人游戏(在 Celer 中成功实现)以太坊二层协议,状态通道是合适的,但对于更广泛的应用,这已被证明具有挑战性。 而Plasma(尤其是Plasma Cash)在支付方面可以起到很好的作用,但是面对更多的应用也会面临挑战:即使实现了去中心化交易所,客户端需要存储更多的历史数据,也显得非常困难在 Plasma 上应用以太坊风格的智能合约。

但与此同时,一类被遗忘的“半第 2 层”协议又重新出现了——它在可扩展性方面提供的收益较小,但具有更容易泛化和更有利的安全模型的好处。 在一篇被遗忘已久的博文中,我介绍了“影子链”的概念,这是一种在链上发布块数据但默认不验证块的架构。 取而代之的是,区块被暂时接受,并在一段时间后(比如 2 周)才最终确定。 在这两周的时间里,一个暂时接受的区块可能会受到挑战; 只有这样才能对区块进行验证,如果区块被证明是无效的,则包含该区块的链将被恢复,并且原始发布者的存款将受到惩罚。 合约不跟踪系统的完整状态,它只跟踪状态根,用户自己通过处理从开始到结束提交给链的数据来计算。 最近的 ZK Rollup 提议通过使用 ZK-SNARKs 来验证块的有效性,在没有挑战期的情况下做同样的事情。

p1

以太坊二层协议_以太坊联盟和以太坊的关系_sitehqz.com 以太坊和以太坊贸易的关系

一个上链ZK Rollup包的剖析:数百个影响ZK Rollup系统状态(即账户余额)的“内部交易”被压缩成一个包(package),每个内部交易包含10个字左右的部分,用于指定状态转换,加上一个100-300字节左右的SNARK(证明转换有效)。

在这两种情况下,主链都用于验证数据可用性,但不会(直接)验证块有效性或执行任何重要计算,除非提出挑战。 因此,这种技术并没有显着的可扩展性收益,因为链上数据开销最终会成为瓶颈,但它仍然是一项非常重要的技术。 数据比计算更便宜,并且有很多方法可以非常显着地压缩交易数据,特别是因为交易中的大部分数据都是签名数据,并且可以通过各种形式的聚合将许多签名压缩为单个签名。 通过将每笔交易压缩到仅 10 个字节,zk rollup 承诺每秒处理 500 笔交易,这比以太坊链本身的吞吐量高出 30 倍。 不需要包括签名,因为有效性是通过零知识验证的。 使用 BLS 聚合签名,可以在影子链中实现类似的吞吐量(最近称为“乐观汇总”以突出其与 ZK Rollup 的相似性)。 即将到来的以太坊伊斯坦布尔硬分叉会将数据的 gas 成本从每字节 68 单位降低到每字节 16 单位,从而将这些技术的吞吐量再提高 4 倍(即 TPS 将超过 2000)。

————————————————————————————————————————————————

那么,与链下技术(如 Plasma)相比,链上技术(如 zk/optimistic rollup)有哪些优势? 首先,前者不需要半信任的运营商。 在 ZK Rollup 中,由于有效性是通过密码学证明来验证的以太坊二层协议,包提交者无法实现恶意破坏(根据设置,恶意提交者可能会导致系统停止几秒钟,但这是可以达到的最大伤害)。 在 optimistic rollup 中,恶意提交者可以发布坏块,但下一个提交者会在发布自己的块之前立即挑战该块。 在 ZK rollups 和 optimistic rollups 中,足够的数据被发布在链上,允许任何人计算完整的内部状态,只需按顺序处理所有提交的增量,并且不存在可以剥夺此属性的“数据扣留攻击”。 因此,成为运营商可能是完全无需许可的,所需要的只是用于反垃圾邮件目的的保证金(比如 10eth)。

以太坊联盟和以太坊的关系_sitehqz.com 以太坊和以太坊贸易的关系_以太坊二层协议

其次,optimistic rollups 特别容易泛化; optimistic rollup 系统中的状态转换函数实际上可以是在单个块的 gas 限制内可计算的任何函数(包括提供验证转换周期所需的状态部分的 Merkle 分支)。 尽管在实践中很难(至少目前)使 ZK SNARK 优于通用计算(例如 EVM 执行),但 ZK Rollup 理论上可以以相同的方式进行推广。 第三,optimistic rollup 更容​​易构建客户端,因为它需要更少的 layer-2 网络基础设施,并且可以通过简单地扫描区块链来做更多的工作。

但这些优势从何而来? 答案在于一个称为数据可用性问题的高级技术问题(参见注释、视频)。 基本上,第二层系统中有两种欺骗方法。 第一种是向区块链发布无效数据,第二种是根本不发布任何数据(例如,在 Plasma 中,将一个新的 Plasma 区块的根哈希发布到主链,但不向任何人透露该区块。内容)。 已发布但无效的数据很容易处理,因为一旦数据在链上发布,有多种方法可以确定其是否有效,而无效提交是明确无效的,因此提交者可能会受到严厉惩罚。 另一方面,不可用数据更难处理,因为即使在受到挑战时检测到不可用,也无法可靠地确定未发布数据是谁的错,尤其是在默认保留数据的情况下。 仅当某些身份验证机制尝试验证其可用性时才按需显示。 这在 Fisherman 的困境中得到了说明,它显示了挑战-响应游戏如何无法区分恶意提交者和恶意挑战者:

p2

渔夫困境,如果你只在时间 T3 开始查看给定的特定数据,那么你不知道你是在情况 1 还是情况 2 中,那么谁错了?

sitehqz.com 以太坊和以太坊贸易的关系_以太坊二层协议_以太坊联盟和以太坊的关系

Plasma 和状态通道都通过将问题推给用户,围绕着解决“渔夫困境”问题:如果你作为用户,决定你正在与哪个其他用户交互(状态通道的交易对手,或运营商)等离子链运营商)没有向您发布他们应该发布的数据,那么您有责任撤回并转移到另一个交易对手/运营商。 事实上,作为用户,你拥有所有以前的数据,以及你签署的所有交易的数据,这让你可以向链证明你在第 2 层协议中拥有哪些资产,从而安全地将它们从系统中取出。 你证明存在给你资产的(先前同意的)操作,没有人能证明存在你批准的将资产发送给其他人的操作,所以你得到了资产。

这种技术很优雅,但是,它依赖于一个关键假设:每个状态对象都有一个逻辑上的“所有者”,并且未经所有者同意,不能更改对象的状态。 这适用于基于 UTXO 的支付(但不适用于基于账户的支付,因为在那种情况下你可以在未经他人同意的情况下向上编辑其他人的余额;这就是基于账户的 Plasma 所做的困难的原因),它甚至可以用于去中心化交易所,但这种“所有权”属性是不够的。 一些应用程序(例如 uniswap)没有自然所有者,即使在那些有自然所有者的应用程序中,通常也有多个人可以合法编辑对象。 此外,没有办法允许任意第三方在不引入拒绝服务 (DoS) 攻击的可能性的情况下提取资产,正是因为没有办法证明发行者或提交者有过错。

此外,Plasma 和状态通道也有自己独特的问题。 状态通道不允许不再属于通道一部分的用户进行链下交易(原因:假设有一种方法可以从通道内部向任何新用户发送 1 美元,那么可以并行多次使用这种技术向系统中拥​​有更多资金的用户发送 1 美元已违反其安全保证)。 Plasma 需要用户存储大量的历史数据,当不同的资产可以相互纠缠时(例如,当一种资产的转移以另一种资产的转移为条件时,就像在单一资产的去中心化交易所中发生的那样) -阶段买单)。

由于链上数据计算-链下第 2 层技术不存在数据可用性问题,因此它们不存在这些弱点。 ZK rollups 和 optimistic rollups 非常小心地将足够的数据放在链上,以允许用户计算第 2 层系统的完整状态,确保如果任何参与者消失,新的参与者可以轻松取代他们。 他们唯一的问题是在不进行链上计算的情况下验证计算,这是一个更容易解决的问题。 此外,可扩展性得到了显着改善:在 ZK Rollup 中,每个事务大约为 10 字节,并且在 optimistic rollup 中可以通过使用 BLS 聚合签名来实现类似级别的可扩展性。 这相当于目前理论上每秒最多支持500笔交易,而在伊斯坦布尔硬分叉后,可以达到2000多TPS。

以太坊联盟和以太坊的关系_sitehqz.com 以太坊和以太坊贸易的关系_以太坊二层协议

———————————————————————————————————————————————— —— ——

但是,如果您想实现更大的可扩展性怎么办? 然后,在数据链路第 2 层协议和数据链路外第 2 层协议之间有一个很大的中间地带,并且有很多混合方法可以为您提供两者的一些好处。 举个简单的例子,在 Plasma Cash 上实现的去中心化交易所的历史存储爆炸问题可以通过发布一个映射来防止,该映射表示哪些订单与链上的哪些订单(每个订单小于 4 字节)匹配:

p3

左图:如果 Plasma Cash 用户拥有 1 个硬币,他们需要存储历史数据。 中间:如果 Plasma Cash 用户拥有 1 枚代币,并使用原子互换与另一枚代币互换,则他们需要存储历史数据。 右图:如果在链上发布订单匹配,Plasma Cash 用户需要存储历史数据。

以太坊二层协议_以太坊联盟和以太坊的关系_sitehqz.com 以太坊和以太坊贸易的关系

即使在去中心化交易环境之外,也可以通过让 Plasma 链定期发布链上每个用户的一些数据来减少用户需要存储在 Plasma 中的历史数据量。 我们还可以想象一个像 Plasma 一样工作的平台(就像 ZK rollup 或 optimistic rollup 那样),其中一些状态没有逻辑上的“所有者”。 Plasma 开发人员已经开始着手进行这些优化。

因此,对于第 2 层可扩展性解决方案的开发人员来说,这种混合方案极大地提高了开发的易用性、通用性和安全性,并减少了每个用户的负载(例如,没有用户存储历史数据)。 这样做的效率损失也被夸大了:即使在完全链下的 layer-2 结构中,用户的存款、取款以及跨不同交易对手和供应商的移动将是不可避免的,并且会经常发生,因此,无论哪种方式,都会有很多每个用户的链上数据。 混合路由为在半二层架构中快速部署完全通用的以太坊式智能合约打开了大门。

也可以看看:

介绍 OVM

Karl Floersch 的博文

John Adler 的相关观点