1. 首页 > 自媒体

Vitalik最新演讲:如何应对51%攻击,PoS是出路吗?

Vitalik最新演讲:如何应对51%攻击,PoS是出路吗?

如何应对51%攻击是过去十年来讨论很多话题,在史丹佛区块链大会上,以太坊联合创始人Vitalik Buterin发表了题为《越过51%攻击》的演讲,他首先介绍了不同类型的51 %攻击,例如最常见的回滚交易攻击,此外还有审查攻击、轻客户端攻击、劝阻攻击,以及最严重的覆巢式攻击,他认为这对工作量证明(PoW)加密货币仍是一个很大威胁。

而%容错共识、及时性检测器(TD)等技术来检测攻击链以及审查攻击,可以使权益证明(PoS)货币基本消除51%攻击带来的威胁。他还称,「与其让攻击者针对PoW,我们的目标是让链转向PoS。」

2 月19 日到21 日,由高性能隐私区块链Findora 团队成员、应用加密学小组(Applied Crypto Group) 成员、Bulltetproofs 证明机制提出者Dan Boneh 与Benedikt Bünz 联席举办,邀请了包括Vitalik Buterin、 Ben Fisch 等来自知名美国院校,以及Facebook、瑞波、Visa 等机构的行业知名人物。PANews 作为官方合作媒体,参与本次活动的报导。

以下是Vitalik 演讲实录,由巴比特编译。

51% 攻击能做什么?51% 攻击有不同的种类,它们可以对不同的应用执行不同的操作,并产生不同的结果和后果。你可能熟悉的一种51% 攻击是回滚区块。你进行了一笔交易,把钱发送到了一家交易所,然后用这些币换取了另一个币,你提走这些换得的币,然后进行一次51% 攻击,恢复你的存款交易……

这就是过去10 年来,我们一直在讨论的主要的51% 攻击类型,也是我们考虑最多的一类。

一、其他类型的51% 攻击

交易审查攻击

实际上,交易审查也是另一种51% 攻击!鉴于layer 2 协议和DeFi 都是最近的大趋势,交易审查变得尤其危险。在很多layer 2 协议的环境中(包括plasma、通道、通用状态通道、闪电网络、Optimistic Rollup、交互计算、TruBit 等),审查就意味着盗窃!

因此,如果你能够审查挑战交易,那么你就可以从人们那里偷到钱。这不适用于zk Rollup,但这种攻击确实适用于人们现在正在考虑的绝大多数协议。在DeFi 的背景下,审查尤其危险,因为它是一种工具,你可以通过它操纵市场,然后获取价值。

如果你能审查每一笔接触Uniswap 的以太坊区块链交易,然后等待一天,那么以太币的价格可能会有点波动,我就能从这次攻击中提取出大量的套利价值。

可以说,审查是危险的,在DeFi 协议和layer 2 协议中,交易审查也可以被视为与盗窃相等。

轻客户端攻击

很多人都在运行轻客户端,如果你运行的是轻客户端,那么51% 攻击可能会导致这些轻客户端接受包含完全无效交易区块的链。错误的签名、格式错误的交易、未经授权的签名(从一个账户中窃取资金并将其转移到其他帐户),他们可以得到网络接受的可用区块。

数据不可用攻击

这里谁熟悉数据可用性问题?好吧,虽然不是所有人,但有很多人了解了它。这里的想法是,你可以在发布区块头(block header)的地方创建一条链。轻客户端可以看到这条链,但不能在区块体(block bodies)中发布部分或全部数据。

这是糟糕的,原因是,如果数据没有发布,那么它可能是正确的,也可能不是,而且又没有办法生成证据向其他人证明它可能是正确的,并且你拒绝了人们可能要创建未来交易的信息。也就是说,不可用的区块也是很危险的。

劝阻攻击

劝阻攻击(Discouragement attack)是一个术语,它指恶意破坏其他参与者,导致其他参与者失去收入,并驱使他们与你合谋,或者被迫退出。1/3 上面这些算力的自私挖矿就是这样的一个例子。也就是说,51% 攻击也是非常强大的劝阻攻击。

关于区块链的不可篡改性

所以说,51% 攻击是非常强大的,这类攻击对于区块链的不可篡改性而言是个威胁。

谁还记得这个?一家交易所被盗走了一堆钱,他们考虑推动比特币区块链为期一天的逆转,以便拿回这些钱。如果这样的事情是可能的,那么区块链内部的东西就可能被还原,区块链就失去了其成为区块链的关键属性,这是可怕的。

另外,51% 攻击不是民主的,它们是富豪统治的,所以作为一种民主方法,对他们而言是没有什么好处的。

二、现实中发生过的51% 攻击,以及最糟糕的51% 攻击场景

在现实当中,51% 攻击是可以完成的,这是一张来自2015 年香港比特币扩容大会的照片。在这张照片当中,掌控比特币90% 算力的一些人坐在了一起,摆出了一副“我拥有权力” 的姿态,哈哈。

51% 攻击是可以完成的,例如ETC、Bitcoin Gold 等都遭遇过51% 攻击,我肯定我漏说了1-2 个,这些攻击都是已经发生的。

覆巢式攻击(Spawn camp attack)

实际是,我们目前所看到的51% 攻击,并不是最糟糕的。对于这类攻击来说,覆巢式攻击(Spawn camp attack)是最糟糕的噩梦场景。基本上,你需要获得足够的硬件来攻击一条链,等它恢复之后,然后再次进行攻击,因为你仍然持有这些硬件。

最后,社区会受够了这种折磨,他们会更换工作量证明(PoW)算法,由于在短时间内他们没有办法构建ASIC,所以你只需要租用大量的CPU 和GPU 算力继续攻击, 然后,这条链就死了,除非他们切换到权益证明(PoS) 或者完全变成中心化的东西。

三、权益证明(PoS)算法能打破这个循环吗?

这是我在2016 年写的一篇博文,我试图描述什么是权益证明(PoS) 背后的哲学,以及为什么这是我们应该期待存在的,它为什么是一件有意义的事情。权益证明(PoS) 中存在一种不对称性,它与工作量证明(PoW)是不同的,在工作量证明(PoW)中,你只有奖励,因此你对参与攻击或者不参与攻击的惩罚,只有区块奖励这部分。而在权益证明(PoS) 系统中,你的攻击是可以被检测到的,你失去的存款远远大于你可以被罚没的质押金。

它们被放入Casper CBC 和一系列其他基于安全存款和罚没的权益证明(PoS) 算法中。从理论上来讲,这种设计的目标是使51% 攻击变得极其昂贵。基本上,你要攻击一条PoS 链,你需要购买一堆的币,你需要控制系统中超过50% 上面这些的币,然后当你被抓住要攻击时,你就会遭遇罚没,如果你想再次发动攻击,你必须购买更多的币,因为你一直在购买,那么不断上涨的币价,最终会导致你破产,因此,从这个角度来看,与其让攻击者针对PoW,我们的目标是让链转向PoS。

其它类型的攻击呢?

现在我们来讨论第一个问题,PoS 如何解决其它类型的攻击呢?到目前为止,我们一直在关注终局性逆转。这在拜占庭的容错共识理论中是相当普遍的。基本思想是,如果2/3 的一方站在一边,另外1/3 站在另一边…1/3 的验证者必须发出两条相互矛盾的消息,你可以检测到并惩罚它们。不过,这是关于逆转的攻击。

数据无效、数据不可用、审查以及恶意破坏?

让我们一点一点解决,我们不会在意数据的有效性,我们将注意到,如果你有数据可用性的保证,并且保证如果一个区块是区块链的一部分,那么该区块中的所有数据都可以由网络中的一个节点下载。如果你有审查阻力,你发布了一个区块,那么它最终会被包含在内,从这两件事中,你得到了有效性。

原因是交互计算、 Rollup 和这些现有协议。基本上,对于Rollup,你在链上发布所有数据,然后链保证其可用性,你有一些欺诈证明,并保证如果某些计算无效,那么你可以发布一个不可审查的欺诈证明,并得到链上处理。所以数据的有效性并不是那么重要的,因为第一层(layer 1)和第二层(layer 2)的欺诈证明可以解决这个问题。

如果你不能审查别人的区块,那么你就不能阻止它们被纳入区块链。因此,只要激励措施的惩罚是有效控制的,那么恶意破坏(Griefing) 也不会是什么大问题。

我们可以归结为两件事:数据可用性攻击和审查攻击。

数据无效和数据不可用

这是我在2017 年和musalbas 等人共同撰写的一篇论文,我在其中描述了一种基本上允许区块链客户端不实际下载所有数据的情况下,验证区块链数据可用性的方案。

这个方案的简单稻草人版本是这样的:检查一个区块是否可用最愚蠢的方法就是下载完整的东西。但在这里,我们假设一个可扩展的、可能是分片的区块链,其中有超过2 MB/秒的数据会被上传到链上,而客户端将无法下载所有的内容。

对于一个想要检查数据可用性的客户端,我们要做的就是随机抽样测试。它会随机选择一些数据片段,比如30 个片段、40 个片段、80 个片段……它会随机选择位置,要求提供这些位置的merkle 证明,只要你收到你接受的所有位置的有效回

复,那你就会接受该区块,将其视为有效的。

如果你接受使用此方案的区块,那么你很可能知道该区块是有效的。如果只有不到50% 的数据可用,比如这里左边的所有数据都可用,这里右边的所有数据都可用,那么至少有一个检查将很有可能是失败的。

通过这种方案,攻击者就能够欺骗少数特定的客户端。但是,如果攻击者欺骗了足够多的客户端,以至于它们下载的子叶数据占到了总数据的一半,那么这些客户端就可以继续从那里重建数据。

这并不能证明区块是完全可用的,它可能缺少了一部分,但它确实证明至少有一半的区块是可用的。如果我们有一些技术可以从50% 的数据中恢复整个数据块,那就太好了。

擦除编码(Erasure coding)

这就是擦除编码的用武之地,所以我们要取数据,假设它是一个多项式求值,我们将在更多的点上求值相同的多项式,现在,任何50% 的数据都足以恢复所有数据。有了这个方案之后,你就可以验证区块是有用的,并且区块是潜在非常大的尺寸下是可用的,同时个人要下载20-200 KB 的数据。

这是第一部分。这包括数据可用性攻击,它是以太坊2.0 分片解决方案的一部分,这至少允许我们赋予分片区块链同样的可用性保证。

证明正确性

那如何证明一个根(root)是此擦除编码的根呢?你如何证明自己没有把垃圾数据卡在里面?你可以使用欺诈证明,例如这个2D 的,如果你编码错误,然后有人可以做一个简短的欺诈证明,你可以将它广播到网络,然后网络就可以拒绝该区块。这个2D 方案是在2017 年开始研究的。最近则有一些关于编码merkle 树的东西,你在merkle 树中编码每一个level ,这有很好的特性。

也有一些方法不依赖于欺诈证明,比如使用STARK 或SNARK 来证明merkle 根的计算是正确的,而另一种可能则涉及多项式承诺—— 你会得到你的数据,你会把它讲解为多项式的求值,你会计算出多项式,然后你在一大堆点上做一大堆多项式承诺的opening(开口),你的数据可用性检查将是要求80 个位置而不是80 个opening(开口),或者如果你使用聪明的代数得到某种多开口(multi-opening),你就可以获得更高的效率。

这些方案的好处是,它们不依赖于欺诈证明,因此用于验证区块数据的方案已被发表了,它们不再有任何额外的内置延迟假设。

分片:越过委员会

目前存在的分片区块链,通常会依赖于委员会,其想法是,你有一大堆节点,你随机抽取一些节点,你需要其中的大多数或绝大多数节点在某个区块上签名,以便网络接受该区块是有效的。

问题是,任何一种基于委员会的方案,都将受到超过某个阈值不良行为者的审查。如果我们要谈论抵抗51% 攻击,那么我们就要谈论一个系统,在这个系统中,即使大多数人开始攻击,那么少数人应该能够继续操作系统本身。

固定阈值的分片方案,并不能真正帮助到你。所以这里的解决方案是,协议需要更充分地依赖一组数据可用性检查方案,而不是依赖于委员会。

关于审查

在场的各位,有哪些人想阻止审查呢?可以,有很多人,所以,现状不是很好。这是nrryuya 的一篇文章,他在形式化验证以太坊方面做了一些工作,他写了一篇文章说,在目前的以太坊2.0 设计中,有一些策略可以让大多数人审查区块,这种审查与单区块延迟是不可区分的,很难去确定谁该负责。

这里的攻击是相当卑鄙的,攻击者攻击一些验证者,并使它们为另一个区块投票,使用其他验证者为自己的区块投票,该区块实际上包含了要审查的内容… 但他们自己的选票不足以超过51%,所以他们试图审查的内容,实际上永远不会被包含在内。这是多层次的间接作用。在以太坊1.0 和以太坊2.0 中,一个进行51% 攻击的恶意方可以进行审查,而当审查力度足够大时,就很难确定是否需要对此采取措施。

纳入叔块

这是我们目前能做的最基本的事情:纳入叔块。这里的想法是,在以太坊1.0 中,不属于区块链的区块可以稍后被包含进来,而新的方案则是,我们添加了协议规则,该规则表示叔块中的交易也会被处理。

所以,你就有了这样一条区块链,其中,叔块也被纳入在里面。

想法:及时性检测器(TD)

想像一下,如果我们至少可以有在线的客户端,那么在网络上的客户端可以下载东西,并定期与其它客户端通信。让它们检查是否看到一个区块准时到达。

如果它们看到某个区块是按时到达的,并且它们看到该区块在很长一段时间内没有被某条链接受,那么该区块将自动被取消资格。如果一个区块没有准时到达,那么你可以用它来进行51% 回滚攻击。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/zmt/14779.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456