前言:分片、侧链和plasma有什么不同?虽然它们都有类似的hub-and-spoke的结构,但实际上它们存在不少差异。本文作者是vitalik buterin,由“蓝狐笔记”社群的“uh”翻译。唯有通力合作,我们才能将手游传奇发布网的价值发挥出来,供应市场的发展需要。
经常有一个问题会提起:分片跟侧链或plasma有什么不同?所有这三种体系似乎都涉及到中心辐射结构(hub-and-spoke),其中有一条中心“主链”作为系统的共识主干,以及一组包含实际用户级交易的“子链”。来自于子链的哈希值通常会定期发布到主链(理论上,没有hub的分片链是可能的,但目前为止还没有完成;本文暂不关注它们,但基本相差无几)。
鉴于这种基本的相似性,为什么采用一种方法而不是其他方法?
将侧链和plasma区分开来很简单。
plasma链是非保管特性的侧链:如果在plasma链出现任何错误,则可以检测到错误,并且用户可以安全地退出plasma链,同时防止攻击者制造长久的损害。用户遭受的唯一代价是他们必须等待挑战期,并在主链上支付更高的交易费用,且主链不具扩展性。
普通的侧链并没有这个安全特性,所以它们没有plasms安全。然而,设计plasma链在很多情况下更加困难。有人可能会认为,对于很多低价值应用而言,为了安全性并不值得增加这些复杂性。
那么如何区分plasma和分片?
关键的技术差异跟紧耦合的概念相关。紧耦合是分片的属性,但不是侧链或plasma的属性,即是说,主链的有效性(以太坊20中是“信标链”)与子链的有效性不可分割。也就是,根据定义,将无效主链区块指定为依赖性的子链区块无效,更重要的是,根据定义,包含无效子链区块的主链区块也无效。
在非分片的区块链中,按照规范链的观念(即每个人都接受的链代表“真实”历史)定义,这些区块是安全可用且有效。例如,就比特币和以太坊的来说,人们通常说的规范链是“最长有效链”。
在分片区块链中,根据定义,规范链是最重的有效且可用的链,这种观点也适用,其中有效性和可用性要求同时适用于主链或分片链。然而,分片系统面临的新挑战是用户无法直接完全验证任何给定链的有效性和可用性,因为数据太多。
分片链的工程挑战是,通过为用户提供最大限度的去信任和实用的间接方法来验证哪条链是完全可用且有效,以便于他们可确定哪条链是规范链,从而克服上述的限制。
在实践中,这包括如下技术:如委员会、snarksstarks、渔夫机制、以及欺诈和数据可用性证明等。
如果链结构并无这种紧耦合属性,那么,它就算不上是layer-1的分片方案,而是基于没有可扩展性的layer-1链基础上的layer-2系统。
plasma不是紧耦合系统:无效的plasma区块绝对可以将其区块头提交到以太坊主链,因为以太坊主链对于它是否代表无效的plasma区块全然不知,甚至以太坊主链连它是不是plasma区块也不清楚。它看到的只是包含一些数据的交易。然而,单个plasma链的失败结果只会局限于plasma链内。
·分片:为确保系统每个部分的整体有效性和可用性而非常努力地尝试。
·plasma:接受本地发生的错误,但试图限制其后果。
然而,如果你试图分析这一个过程:用户执行“间接验证”过程来确定他们所观察的链是否完全有效和可用(且不下载所有数据和执行事务),那么,在这个时候,你会发现它跟plasma的工作方式有更多相似性。
例如,为防止可用性问题,它们采用了共同的技术是渔夫方案:如果节点看到区块的特定片段不可用,它可以对此发布声明进行挑战,创建任何人都可以发布该数据的时间段。如果区块在足够长的时间内没有遭遇挑战,该区块和其引用作为依赖的全部区块可以被恢复。这看上去跟plasma基本类似,在plasma中,如果区块不可用,用户可以向主链发布消息,以实现退出其状态。
这两种技术最终都会以同样的方式承受压力:如果在分片系统中有太多错误方面的挑战,那么,用户无法追踪是否所有可用性挑战都得到了解答。同样,如果plasma系统中有太多可用性挑战,那么,主链会不堪重负,因为退出会填满链的区块。
就这两种情况,似乎从名义上来说,系统有了扩展性(o(c ^ 2),其中c是一个节点的计算能力),但是在发生攻击时,扩展性降至o(c)。但是,相对来说,分片对这个问题有更多的防御。
首先,现代分片设计使用随机抽样的委员会,因此,即使一个委员会也无法轻易主导产生虚假区块,除非谁拥有链上所有验证者组的大部分验证者(或许大于13)。
其次,有比渔夫更好的处理数据可用性的策略:数据可用性证明。使用数据可用性证明的方案中,如果区块不可用,那么,客户端的数据可用性检查将失败,客户端会看到区块不可用。如果该区块无效,那么,即使单个欺诈证明也会让整个区块确信这一事实。
o(1)大小的欺诈证明能让客户端相信o(c)大小的区块无效性。因此,o(c) 数据足以让客户端确信o(c^2)数据的无效性。(这是最糟糕的情况,其中客户端在处理n个姐妹区块,它们全部有相同的父块,其中只有一个是有效的;在更有可能的情况下,单一欺诈证据就足以证明整个无效链的无效性。)因此,从理论上讲,相对于plasma链,分片系统不容易被dos攻击淹没。
再次,在面临大规模和多数攻击者时,分片链提供了更强的保证(超过13或甚至12的验证者)。plasma链总是能被发生在主链的51%攻击所成功攻击;分片链则不能。这是因为,数据可用性证明和欺诈证明发生在客户端,而不是链上,因此,它们不能被51%的攻击所审查。
第四,分片链提供的防御更容易概括;plasma的退出模型要求将状态分成不连续的部分,每个部分都符合单个行为者的利益,而分片链依赖于数据可用性证明,欺诈证明、渔夫和随机抽样,在理论上都是通用的。
因此,在layer2提供的有效性和有用性之间确实有很大的不同,它们有限且复杂,因为它们需要对激励进行明确的推理,并且要了解哪一方对那部分状态有兴趣,还需要保证是由承诺完全满足它们的layer1系统所提供。
但是,plasma链也有大的优势。
首先,它们可以被迭代,并且新设计能被快速实施,这是因为每个plasma链可以单独部署,且无需协调生态系统的其余部分。
其次,从本质看,分片更脆弱。这是因为它试图保证一定量的数据的绝对和总体可用性和有效性,并且,必须在协议中设置该数量;太少的话,系统的可扩展性比它本来应该的要低;太多的话,整个系统会面临破坏风险。
可扩展性的最大安全级别也依赖于系统的用户数,这是一个不可预测的变量。另一方面,plasma链允许不同的用户在这方面做出不同的权衡,并允许用户更灵活地调整以适应环境的变化。
单个运营者plasma链也能用于提供比分片系统更多的隐私,分片系统的所有数据都是公开的。即使不需要隐私,它们也可能更高效,因为分片系统的全部数据可用性要求需要额外的冗余级别作为安全余量。另一方面,每个数据片的数据要求可以最小化,从长远看,每个单独的数据片可能只需要复制几次,而不是像分片系统中那样复制一千次。
因此,从长远看,一个混合系统,它既有分片底层又有基于底层的plasma链,能够提供更多的可扩展性,这似乎是最可能的方法,更能服务于不同群体的用户需求,而不是单独依赖于这种或那种策略。
遗憾的是,在足够的推进级别下,plasma和分片陷入相同的设计。两者在某些关键方面有不可减少的差异(例如,在分片系统中客户端进行的数据可用性检查在plasma中并不能移动到主链,因为这些检查只有在它们是主观上完成且基于私人信息时才有效。)
但这两种扩展性解决方案(包括状态通道)都有光明的前景。(作者特别感谢jinglan wang的评审和反馈)