文章来自 https://vitalik.ca/general/2019/06/12/plasma_vs_sharding.html 2019.06.12
Special thanks to Jinglan Wang for review and feedback
一个经常出现的问题是:分片与侧链或Plasma到底有什么不同?这三个体系结构似乎都涉及一个中心辐射型体系结构,其中一个中心主链充当系统的一致主干,以及一组包含实际用户级事务的子链。子链的哈希散列通常定期发布到主链中(理论上讲,没有中心的sharding是可能的,但到目前为止还没有这样做;本文将不关注它们,但是它们的论据是相似的)。既然这三者有这种基本的相似性,为什么要选择一种方法而不是其他方法呢?
区分侧链和Plasma很简单。Plasma也是一种侧链,但是有一些特殊的属性:如果Plasma运行中出现错误,用户可以安全地退出Plasma,防止攻击者造成任何持久的伤害。用户所遭受的唯一代价是,他们必须等待一个挑战期,并在主链上支付较高的交易手续费。普通侧链没有这种安全特性,所以它们不太安全。然而,在许多情况下,设计Plasma要困难得多,有人可能会说,对于许多低价值的应用程序来说,安全性不值得增加复杂性。
那么Plasma和sharding的区别呢?关键的技术差异与紧密耦合的概念有关。紧密耦合是sharding的特性,但不是侧链或PLasma的特性,这说明主链(指ethereum 2.0中的“beacon chain”)的有效性与子链的有效性不可分割。也就是说,将无效主链块指定为依赖项的子链块在定义上是无效的,更重要的是,包含无效子链块的主链块在定义上是无效的,主链和子链的联系是双向的。
在非分片的区块链中,真正的链(canonical chain。是最长的有效链。)在分片区块链中,真正的链的有效性和可用性要求同时适用于主链和分片链。然而,sharding系统面临的新挑战是,由于数据太多,用户无法直接完全验证任何给定链的有效性和可用性。sharding链的工程挑战是通过给用户提供最大程度的不可信和实际的间接方法来验证哪些链是完全可用和有效的,从而使他们仍然能够确定哪个链是真正的链,从而绕过这个限制。实际上,这包括commitees、SNARKs /STARKs、fishman、欺诈和数据可用性证明等技术。
如果一个链结构没有这种紧密耦合的特性,那么它可能不是第1层分片方案,而是位于不可伸缩的第1层链之上的第2层系统。Plasma并不是一个紧密耦合的系统:一个无效的Plasma区块绝对可以将其头部提交到主以太体链中,因为以太体基层并不知道它代表一个无效的Plasma块,甚至根本不知道它代表一个Plasma块;它所看到的只是一个包含一小段数据的事务。然而,单个Plasma链失败的后果仅限于该子体链内。
Sharding | 验证系统中每一部分的有效性 |
Plasma | 接受局部的错误,但尽量限制其后果 |
然而,如果您试图分析用户执行“间接验证”程序的过程,并且在不下载和执行整个过程的情况,以确定他们正在查看的链是否完全有效,那么您可以发现与Plasma工作方式的更多相似之处。例如,一种用于防止可用性问题的常用技术是fishman技术:如果一个节点看到一个给定的块不可用,它可以发布一个声明来进行挑战,创建一个任何人都可以发布该块数据的时间段。如果一个块不受挑战的时间足够长,则可以恢复引用它作为依赖项的块和所有块。这看起来与Plasma基本类似,在Plasma中,如果一个块不可用,用户可以向主链发布一条消息,以响应退出状态。这两种技术最终都会以为压力而产生类似的结果:如果有太多假的挑战在分片系统中,那么用户将无法跟踪所有的可用性挑战是否被回答,如果有太多的可用性挑战在Plasma系统中主链可能会因为过多的退出交易而不堪重负。在这两种情况下,似乎都存在一个名义上具有O(C^2)可伸缩性的系统(其中C是一个节点的计算能力,因此扩展了子链,使TPS提高了很大的数量级),但是在发生攻击时,可伸缩性将落到O(C)。然而,分片有更多的防御措施。
首先,现代分片设计使用随机抽样的委员会,因此即使是一个委员会也不能容易地主导一个假的块,除非有一个很大一部分(可能是整个验证器集的1/3)。其次,有比fishman更好的处理数据可用性的策略:数据可用性证明( data availability proofs.)。在使用数据可用性证明的方案中,如果块不可用,则客户端的数据可用性检查将失败,并且客户端将看到该块不可用。如果该块无效,那么即使是单个欺诈证据也会使整个块确信这一事实。 O(1)大小的欺诈证据可以使客户相信O(C)大小的块无效,因此O(C)数据足以说服客户O(C ^ 2)数据无效(这是在最糟糕的情况下,客户正在处理所有同一父母的N姐妹区块,其中只有一个是有效的;在更可能的情况下,一个单一的欺诈证据就足以证明整个无效链的无效性)。因此,从理论上讲,分片系统不容易被拒绝服务攻击所淹没,而Plasma无法做到。
其次,分片链为大型和大多数攻击者提供了更强的保证(超过验证器组的1/3甚至1/2)。Plasma是可以被主要链上51%的攻击成功攻击; 一个分片链不会。 这是因为数据可用性证明和欺诈证据发生在客户端内部而不是链内部,因此它们不会受到51%攻击的审查。 第三,分片链提供的防御更容易概括;plasma退出模型要求将状态分成不连续的部分,每个部分都符合任何单个行为者的利益,而依赖于数据可用性证明,欺诈证明,fishman和随机抽样的分片链在理论上是通用的。
因此,在第2层提供的有效性和可用性保证之间确实存在很大差异,这些保证是有限的且更复杂,因为它们需要关于激励的明确推理以及哪一方对哪些状态以及由哪些状态提供保证的第1层系统感兴趣 ,致力于完全满足它们。
但Plasma链也具有很大的优势。 首先,它们可以被迭代并且可以更快地实现新设计,因为每个Plasma链可以单独部署而无需协调生态系统的其余部分。 其次,分片本质上更脆弱,因为它试图保证一定数量的数据的绝对和总体可用性和有效性,并且必须在协议中设置该数量; 系统的可扩展性比它本来的要低,另外整个系统都有破坏的风险。 可扩展性的最大安全级别还取决于系统的用户数,这是一个不可预测的变量。 另一方面,Plasma链允许不同的用户在这方面做出不同的权衡,并允许用户更灵活地调整以适应环境的变化。
单一操作员的Plasma链也可用于提供比分片系统更多的隐私,因为分片的所有数据都是公开的。 即使不需要隐私,它们也可能更有效,因为分片系统的总数据可用性要求需要额外的冗余级别作为安全余量。 另一方面,在Plasma系统中,每个数据的数据存储要求可以最小化,从长远来看,每个单独的数据可能只需要复制几次,而不是分片系统中的几千次。
因此,从长远来看,存在分片基础层的混合系统,以及存在于其上的plasma链以提供进一步的可扩展性,似乎是最可能的方法,更能够服务于不同群体的用户需要而不是唯一的依赖 一种策略或另一种策略。 遗憾的是,Plasma和分片一些相同的设计; 这两者在某些关键方面有着一些相同店(例如,the data availability checks made by clients in sharded systems cannot be moved to the main chain in Plasma because these checks only work if they are done subjectively and based on private information 客户端在分片系统中进行的数据可用性检查不能移动到plasma中的主链,因为这些检查只有在主观上并基于私有信息的情况下才有效)。 但是两种可扩展性解决方案(以及状态通道!)都有着光明的未来。