侧链缺少安全属性,但这并不意味着它们永远不应该被使用。
原文标题:《
Rollup 将成为 Layer 2 世界的国王,那侧链将何去何从?
》
撰文:barryWhiteHat, Layer 2 技术研究者
翻译:洒脱喜
随着去中心化金融(DeFi)应用对以太坊主网造成的第一波冲击,「扩容」的呼声无疑越来越高,其关注度甚至可与当年比特币的「区块扩容」相提并论,而在 DeFi 炒作退潮之后,「Layer 2」关键词的出现频率开始飙升,Vitalik 本人甚至在本月初提出了一个以 Rollup (注:当前最有希望的 Layer 2 技术)为核心的以太坊路线图,简单说,在短期和中期(未来 2 年内),以太坊和 DeFi 的扩容就是以 Rollup 二层网络为主,目前像 Uniswap、Curve、Synthetix 等领先的 DeFi 项目方均已提出将应用迁移至 Rollup 二层网络的计划。
显而易见,向 Rollup 二层网络的迁移已成为一种大趋势,而在这股不可逆的新潮流当中,还有很多其它曾被寄予厚望的 Layer 2 方案,那它们将何去何从?
本文将关注侧链(sidechain),这一最早被提出的 Layer 2 方案之一。
简介
Layer 2 对以太坊的重要性每周都在增长,每个人都知道这一点。
然而,「Layer 2」是一个不精确的标签,现在,当人们说「Layer 2」时,他们往往指的是「非以太坊 Layer 1」。但是,与以太坊 Layer 1 交互的方式是非常重要的。所有被视为「Layer 2」的不同解决方案,可能具有着完全不同的属性。
可以说,Layer 2 应该只指具有特定属性的某些东西(例如,我们可能都同意,存在于 AWS 上的东西并非 Layer 2,但有一些项目可以说具有类似的安全保证,因此被认为是 Layer 2)。但这也许是另一个要讨论的话题了。
在这篇文章中,我想深入研究侧链的性质。
侧链基本上是指一个系统,其中一组验证器将区块链的最新状态 checkpoint 到一个智能合约。然后,桥合约使用这些 checkpoint,以允许用户存款和取款。在一组验证器中,通常有一个 leader 选举过程来确定谁可以创建区块。leader 选举机制的例子包括权威证明(POA)共识和权益证明(PoS)。
侧链在以太坊生态系统中扮演了重要角色。当研究社区还在研究更好的解决方案时,它们一直是可扩展性及可用性的权宜方案。像 xDai 这样的产品,强调了对更好的用户体验的需求,这种需求已渗透到了其他领域。
然而,侧链并没有更广泛的以太坊社区所期望的安全属性 , 但这并不意味着它们永远不应该被使用 。如果使用侧链的人充分意识到某些属性的缺乏,并且仍然想使用它们,那这属于他们的权力。权衡也许是值得的,但当人们对此漠不关心时就会很危险。这篇文章的目的是提供一些信息,如果每个人都知道这些属性,那么它也不会有什么坏处,但如果它能够帮助人们认识到错误的假设,那它就是有意义的。
那侧链缺少哪些安全属性呢?几乎所有的侧链都无法提供:
1.
抗审查性
;
2.
最终性(Finality)
;
3.
关于资金的保证
;
我希望对这些属性进行公开讨论,以使每个人受益。
抗审查
相比精心设计的区块链,侧链的抗审查属性更弱,这一点不应引起争议,否则就不需要区块链了。不过,让我们进一步分解一下。
如果一条侧链中涉及 N 个验证者,并且只要 M 个验证者同意就可以对一笔交易进行审查,那么 N-M 是为了审查一个区块而需要串通验证者的数量。这就导致了一种微妙的平衡,即更难审查交易,会使得审查区块变得更容易。考虑到交易审查和区块审查都是不受欢迎的,这使得侧链从根本上很难具有强大的抗审查属性。
这种担忧延伸到使用权益证明(PoS)共识机制时, 随着所涉及的数字按权益进行加权,这种情况可能会变得更糟,这意味着达到特定阈值所需的不同实体的数目可能甚至更低。
数据可用性保证
我们知道,N-M 个验证者能够创建一个区块。我们还知道,为了验证新状态,所有其它验证者都需要有关于整个状态的数据。所以如果 N-M 个验证者是恶意的,它们可以:
- 创建一个新区块:
- 拒绝与诚实的验证者共享数据;
- 有效地从共识中移除 N - (N-M) = M 个验证者,从而控制系统;
这种情况发生的可能性有多大?这显然取决于很多特定情况的细节,但是我们可从考虑理性验证者与所有其它验证者共享数据的动机开始。对于传统的权威证明(PoA),不这样做可能会造成声誉损失。而基于权益证明(PoS)的侧链,就可能会存在风险。然而,要做到这一点并不容易,因为没有其他人将所有数据都放到链上,就无法证明某些数据是不可用的。这听起来是否有点像是 optimistic Rollup?是的,这意味着具有更好安全属性的侧链,本质上是降为 optimistic Rollup。
在大多数侧链中,验证者会收到某种形式的付款。对于诚实的验证者,这个奖励会在 N 个验证者之间共享。对于不诚实的验证者,同样的奖励由 N−(N−M)=M 之间分享(最重要的是这里 M
要记住的一个总体概念是,判断数据可用性攻击是非常困难的。对于诚实节点,它们通常与同步问题无法区分。
最终性(fnalization)
设想一系列状态转换,如下所示:
state1 => state2 => state3
其中每个 => 涉及到一组事务作为更新状态的一部分应用。所谓最终性是指一旦被应用,一笔交易就无法被撤销。
通过以太坊主网达成共识后侧链 checkpoint 区块。这可能会让人认为,侧链的最终性基本上等于以太坊的最终性。具体的说法为:「为了恢复侧链上的区块,你需要在以太坊上回滚区块」,但事实并非如此。
这是因为最终性是关于恢复交易,而不是用新状态替换旧状态。因此,N-M 个验证者就能够执行以下转换:
state1 => state2 => state3
(用 state1 替换 state3,这样就可以在不需要以太坊主网回滚的情况下恢复假定已确认的 state2)
在侧链端资金所有权的保障
假设存在一个状态 state1 ={Alice:1000,Bob:0}
因此 Alice 有 1000,Bob 则为 0。现在假设 Bob 是恶意的,他有效(或者可有效勾结)地控制了绝大多数的 POA 验证者,那会发生什么呢?
那么,Bob 就可以简单地执行状态转换 state1 => state2,其中 state2 = {Alice:0,Bob:1000}。
这就等于把 Alice 的所有资金偷走,然后将它们交到 Bob 的手中。
因此,侧链的防御减少为:假设 N - M 个验证者永远不会被说服处理这种非法的状态转换。这一点有很多人是知道的,但我认为提醒每个人是有用的。
现在,可能有一些人(验证者)可通过这种方式进行信任,就像我们很多人信任不同的中心化服务提供商一样。有时候这是值得权衡的,很重要的一点,是要清楚这些权衡。
治理作为一种防御措施所存在的问题
有时会有人提出这样一个论点:「我们可以利用治理来解决迄今为止提到的所有问题。」
这当然是有缺陷的,因为它基本上是让整个系统退化为治理。
这一论点让我特别担心的一个原因是,它意味着侧链的其它属性是摆设(在这种情况下,为什么要有这些属性呢?)。例如,如果治理是防止上述问题的最后一条退路,那么这意味着权益证明(PoS)、权威证明(PoA)等实际上并不重要。
侧链的性质在什么情况下是特别有用的?
除了侧链的辅助属性,例如更快的出块时间所导致更好的 UX (实际上数据库也有这个优点),在某些情况下,侧链的特定属性可以说是特别适合的。例如:
- 如果你特别想要 N−M 个验证者能够执行任意状态转换。希望拥有主控制开关的企业应用,就是一个例子;
- 当 M = 0 ,并且你希望 N 个验证者能够执行任意状态转换(例如,在一个四方游戏当中)。虽然这里的一个问题是,1 个验证者可以单方面停止区块链;
最后的想法
在过去,侧链是某些想要保持以太坊兼容性和互操作性用例的唯一可行解决方案。而现在,随着其它 Layer 2 扩容解决方案变得成熟,现在是考虑如何使侧链与这些解决方案更加兼容的好时机。
最后,一些附加的特性 / 属性对侧链来说是很好的,其中包括:
- 无需费用就可实现大规模迁移,以确保用户可以退出,而不会因为成本而被「卡住」;
- 用更强大的反审查功能来取代 leader 选举机制(权益证明 PoS 似乎是一个错误的方向,参见这里);
- 要求协调者将两个状态之间的差异放到链上;
- 添加欺诈证明以防止非法状态转换;
随着 Optimistic Rollup 技术和 optimistic VM (OVM) 的成熟,项目的权衡空间将发生变化。因此,现在似乎是更新侧链属性及其相关权衡的好时机。
感谢 Albert Ni 对本文的审阅和讨论。
来源链接: ethresear.ch