目前的Layer 2扩展方法,基本上是Plasma和状态通道,正逐渐从理论转向实践。但与此同时,将这些技术视为完全成熟的以太坊扩展解决方案的固有挑战也越来越容易看到。
以太坊的成功很大程度上是因为它非常简单的开发经验:你编写一个程序,发布程序,任何人都可以与它交互。另一方面,设计一个状态通道或Plasma应用程序,依赖于大量关于激励和特定应用程序开发复杂性的明确推理。
状态通道在特定情况下很管用,比如在相同的两方和双人游戏之间的重复付费(如在Celer中成功实现的那样),但更广泛的使用却很有挑战性。Plasma,尤其是Plasma Cash,可以很好地用于支付,但泛化同样会带来挑战:即使实现去中心化交易也需要客户存储更多的历史数据,在Plasma上泛化到以太坊风格的智能合约似乎非常困难。
但与此同时,“半Layer 2”协议这一被遗忘的类别又重新出现了——这一类别承诺在扩展方面不会有太大的进步,但具有更容易泛化和更有利的安全模型的好处。
一篇早在2014年就被遗忘的博客文章介绍了“影子链”的概念,这是一种将区块数据发布在链上的架构,但默认情况下,区块不会被验证。相反,区块是暂时接受的,并且只有在一段时间(例如2周)后才最终确定。在这两周内,可以挑战一个暂时接受的区块;只有这样,区块才会被验证,如果区块被证明是无效的,那么从该区块开始的链就会被恢复,并且原始发布者的保证金将被处罚。
合约没有跟踪系统的完整状态;它只跟踪状态根,用户自己可以通过从头到尾处理提交给链的数据来计算状态。最近的一个建议,ZK Rollup,通过使用ZK- snarks来验证块的有效性,实现了同样的功能,而不需要挑战周期。
剖析链上发布的ZK聚合包。成百上千个影响状态的“内部交易”(比如ZK Rollup系统的帐户余额)被压缩到一个包中,每个指定状态转换的内部交易包含约10个字节,外加一个约100-300字节的SNARK,证明这些转换都是有效的。
在这两种情况下,主链都用于验证数据的可用性,但不(直接)验证区块的有效性或执行任何重要的计算,除非有挑战。因此,这种技术并不是一个令人瞠目结舌的巨大可伸缩性增益,因为链上数据开销最终是一个瓶颈,但它仍然是一个非常重要的瓶颈。
数据比计算便宜,而且有很多方法可以非常显著地压缩事务数据,特别是因为事务中的大部分数据是签名,而且可以通过多种形式的聚合将许多签名压缩为一个签名。
ZK Rollup承诺将每笔交易压缩到仅仅10字节,相当于500 tx/sec,比以太坊链本身获得30倍的增益;签名不需要包含,因为它们的有效性是由零知识证明来验证的。
使用BLS聚合签名可以在影子链中实现类似的吞吐量(最近称为“Optimistic Rollup”,以强调其与ZK聚合的相似之处)。即将到来的伊斯坦布尔硬分叉将把数据成本从68 /字节降低到16 /字节,并将这些技术的吞吐量再提高4倍(即每秒超过2000笔交易)。
那么,像ZK / Optimistic Rollup这样的链上数据技术与像Plasma这样的链下数据技术的好处是什么呢?首先,不需要半信任的运营商。在ZK Rollup中,由于有效性是通过加密证明进行验证的,所以包提交者不可能是恶意的(取决于设置,恶意提交者可能会导致系统暂停几秒钟,但这是可能造成的最大危害)。
在Optimistic Rollup中,恶意的提交者可以发布一个坏块,但下一个提交者将在发布自己的块之前立即挑战该块。在ZK和Optimistic Rollup中,在链上发布的数据足够多,任何人都可以计算完整的内部状态,只需按顺序处理所有提交的增量,而且没有“数据扣留攻击”可以剥夺这个属性。因此,成为操作员可能是完全不需要许可的;所需要的只是一笔保证金(例如10 ETH)用于反垃圾邮件。
第二,Optimistic Rollup尤其容易推广;Optimistic Rollup系统中的状态转换函数可以是在单个块的gas限制内可以计算的任何内容(包括提供验证转换所需的状态部分的Merkle分支)。
从理论上讲,ZK Rollup可以以同样的方式进行推广,但是在实践中,让ZK在通用计算(例如EVM执行)上陷入困境非常困难,至少目前是这样。第三,Optimistic Rollup更容易构建客户端,因为对Layer 2网络基础设施的需求较少;只需扫描区块链就可以完成更多的工作。
但这些优势从何而来呢?答案在于一个被称为数据可用性问题的高度技术性问题。基本上,在Layer 2系统中有两种作弊方法。第一种方法是将无效数据发布到区块链。
第二种是完全不发布数据(例如,在Plasma中,将一个新的Plasma块的根哈希值发布到主链上,但不向任何人透露块的内容。)已发布但无效的数据非常容易处理,因为一旦数据在链上发布,有多种方法可以明确地判断它是否有效,无效的提交是明确无效的,因此提交者会受到严重惩罚。
另一方面,不可用数据则更难处理,因为即使在受到挑战时仍可检测到不可用,但也无法可靠地确定不公开是谁的过错,尤其是数据保留在默认情况下,显示按需只有当一些验证机制试图验证其可用性。
这在“渔夫的困境”中得到了体现,该博弈显示了挑战响应博弈如何无法区分恶意提交者和恶意挑战者:
渔夫的困境。如果您只是在时间T3开始观察给定的特定数据块,那么您就不知道是处于情况1还是情况2中,也不知道是谁的错。
Plasma和状态通道都可以通过把问题推送给用户来解决渔民的困境:如果您作为用户决定与之交互的其他用户(状态通道中的对手,等离子链中的操作员)没有向您发布他们应该发布的数据,则您有责任退出并移至其他交易对手/运营商。
作为用户,您拥有所有以前的数据,以及关于您签署的所有交易的数据,这一事实允许您向链证明您在Layer 2协议中持有哪些资产,从而安全地将它们带出系统。您证明了一个(先前同意的)给您资产的操作的存在,其他人无法证明您批准的将资产发送给其他人的操作的存在,所以您得到了资产。
该技术非常优雅。然而,它依赖于一个关键的假设:每个状态对象都有一个逻辑“所有者”,并且对象的状态在没有所有者同意的情况下不能更改。这适用于基于UTXO的支付(但不是基于账户的支付,您无需征得他人的同意就可以向上编辑其他人的余额;这就是为什么基于账户的Plasma如此困难),甚至可以让它为去中心化的交易所工作,但这种“所有权”属性远不是普遍的。
某些应用程序,例如Uniswap没有一个自然的所有者,即使在那些有所有者的应用程序中,也经常有很多人可以合法地对该对象进行编辑。而且,如果不引入拒绝服务(DoS)攻击的可能性,就不可能允许任意的第三方退出资产,这恰恰是因为人们无法证明发布者还是提交者有错。
还有其他Plasma和状态通道特有的问题。状态通道不允许链外交易给还不是通道一部分的用户(参数:假设存在一种从通道内向任意新用户发送$1的方法。然后,这种技术可以被多次并行使用,将1美元发送给比系统中资金数量还多的用户,已经破坏了系统的安全保证)。
Plasma要求用户存储大量的历史数据,当不同的资产相互交织时,历史数据会变得更大。当一项资产的转让以另一项资产的转让为条件时,就像单阶段订单簿机制中的去中心化交易一样。
因为链上数据的链外计算Layer 2技术不存在数据可用性问题,所以它们没有这些弱点。ZK和Optimistic Rollup非常小心地将足够的数据放到链上,以允许用户计算Layer 2系统的完整状态,确保如果任何参与者消失,一个新的参与者可以轻松地取代它们的位置。
他们唯一的问题是在不进行链上计算的情况下验证计算,这是一个容易得多的问题。在ZK Rollup中,每个交易大约可以获得10个字节的可伸缩性,而在Optimistic Rollup中,通过使用BLS聚合来聚合签名,也可以获得类似的可伸缩性。这相当于现在每秒约500次交易的理论最大值,伊斯坦布尔会议之后每秒超过2000次交易。
但是如果您想要更多的可伸缩性呢?然后,在链上数据Layer 2和链外数据Layer 2协议之间有一个很大的中间地带,使用许多混合方法,可以同时获得这两种协议的一些好处。举个简单的例子,在Plasma Cash上实现的去中心化交换中,历史存储崩溃可以通过在链上发布一个订单匹配的映射(每个订单小于4字节)来防止:
左:如果Plasma Cash用户拥有1枚代币,他们需要存储的历史数据。中间:Plasma Cash用户需要存储的历史数据,如果他们拥有一个代币,用原子交换的另一个代币。正确:如果订单匹配在链上发布,Plasma Cash用户需要存储的历史数据。
即使在去中心化交换环境之外,也可以通过让Plasma链定期发布链上的每个用户数据来减少用户需要存储在Plasma中的历史数据量。你也可以想象一个平台,在某些状态有逻辑“所有者”的情况下,它像Plasma一样工作,而在没有逻辑“所有者”的情况下,它像ZK或Optimistic Rollup一样工作。Plasma开发者已经开始着手这些优化工作了。
因此,对于Layer 2可伸缩性解决方案的开发人员来说,至少在某些时候,他们更愿意在链上发布每个用户的数据:这极大地提高了开发的便捷性、通用性和安全性,并减少了每个用户的负载(例如:不需要用户存储历史数据)。
这样做的效率损失也被夸大了:即使在完全脱链的Layer 2架构中,用户在不同的对手方和提供者之间存取款和移动将是不可避免的和频繁发生的,因此无论如何都会有大量的每个用户链上数据。混合路由为在准Layer 2架构中相对快速地部署完全通用的以太坊风格的智能合约打开了大门。
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:专注区块链发声
评论0条