整理:Sherry、金小佳;校准:肖杰
从数字货币诞生之初,51% 攻击就是大家讨论的热点话题,以工作量证明为共识机制的数字货币,最大的安全隐患就是可能会存在 51% 攻击。如果有人持有超过全网 51% 的算力,那么他就可以发起一次攻击。这个攻击可以让钱被花费两次,或者重新改变已经达成的共识状态。
比特币网络已经运行超过十年,很多时候大家会觉得 51% 攻击好像只停留在理论层面上,很少听到它真实发生。但是这一次,它真真切切的发生了,就是 ETC 的 51% 攻击。
这一期, Fork It 主播们(Terry、Daniel、Kevin)和大家好好的聊一聊 ETC 51% 攻击的来龙去脉。
ETC 51% 攻击的来龙去脉
Daniel:ETC 的 51%攻击是一次有组织、有预谋、精心策划的攻击。2019 年 1 月 6 日,一家叫 Bittrue 的交易所,发公告称它们发现了一笔价值 13000 ETC 的异常提现。也就是充值进来的交易被回滚了,但是交易余额在交易所提现时被发现,被拦截了下来。
进一步追查后,Coinbase 官方发现了更大规模的 ETC 网络重组情况。
知识点:所谓网络重组(Block Reorganization)就是网络中六到八个块甚至更长的块都已经被矿工挖出来了,但是这些块突然全部被移除,产生了一些新的块去代替这些已经被确认过的块。
Coinbase 官方博客在第一时间发布了被怀疑存在问题的三次比较大规模的网络重组。之后一个比较著名的交易所 gate.io 被曝出遭受了 51% 攻击,黑客在这个交易所有两笔金额较大的充值,这两笔充值又通过网络重组被移除,黑客在网络上通过卖掉他们在交易所里的币,或者把充值进交易所的币换成其它币种,最后提现。随后 gate.io 发出公告称,这次攻击造成了大概价值 20 万美元的损失。
这个事件被暴露出来后,一些技术爱好者,尤其是国内慢雾、PeckShield 等安全组织开始调查攻击事件,它们发现 51% 攻击的算力来自一个叫 NiceHash 的网站,黑客可以在这个网站租用到一定规模的算力,然后向 ETC 网络发起攻击。
在那个时候,超过 ETC 网络 112% 的算力是可以被租到的,并且租到的算力可以从事 ETC 挖矿,以及任何你想做的事。黑客就是利用 NiceHash 网站租到了算力才能发起攻击。
ETC 为什么容易被攻击,其实是基于 ETC 的两个特点。
第一个特点是攻击成本小。我们假设 ETC 的主网络算力是 100,现在要租 101 的算力去攻击 ETC 网络,黑客通过攻击导致一个交易所损失了大概 20 万美元,也就是黑客攻击赚到 20 万美元。大家觉得需要花多少钱去租赁一个超过 ETC 主网络的算力发起攻击能赚到 20 万美元?
答案是黑客的攻击成本只要每小时 5000 美元左右。从攻击的那一天到现在,ETC 主网络的算力市值也进一步下降,现在再去租用算力攻击 ETC 网络要比前一次攻击还要便宜。
在之前的 Fork It 2 中,我们知道 ETC 是 2016 年 THE DAO 事件分叉出来的链。在很长一段时间里,ETC 的算力大概是以太坊总网络算力的 1/20,它的币价也是以太坊网络的 1/20 左右,但是随着时间的推移,ETC 的网络算力越来越少,币值也越来越低,到现在刚好达到特别容易受到攻击的状态。
ETC 的另外一个特点就是它的流动性很好。以太坊是被全世界大多数交易所支持的主流数字货币,ETC 和以太坊同根同源,所以交易所对 ETC 的支持非常好。虽然它的价格低,算力低,但鉴于它的流动性,黑客做一次 51% 攻击至少有两种赚钱的方式。
第一种方式是双花攻击:先给交易所转一笔账,然后通过算力攻击改掉这笔转账在链上的共识,此时交易所还保留了这笔转账记录,所以在交易所里会有一笔其实不存在的钱可以套现。另外一种方式是黑客成功实现一次 51% 攻击,会是一个非常大的负面新闻,它可以影响到期货市场,黑客可以通过提前在期货市场做空实现套利赚钱。
PoW 的共识基石动摇了吗?
Terry:其实这次 PoW 51% 攻击不是第一次,有很多小币刚上线就被「打掉了」,所谓的「打掉」,就是利用算力进行攻击。不管是新币种还是小币种,当它们的算力、市值不够高,黑客就可以用相对比较低的成本,攻击一个链,这就显得特别不安全。
那么我就会有一个疑问:这个事件发生之后,出现了很多关于 PoW 的新闻,比较有代表性的就是:「ETC 遭遇 51% 攻击,PoW 的共识基石因此动摇了吗?」(有点标题党)我想问的是,你们对 PoW 共识算法失去信仰了吗?或者觉得它真的是有问题的吗?
Kevin:首先 PoW 是一种防女巫攻击的方式,它的共识算法非常简单,就是选择一个天然的随机数,可以做到完全公平。
知识点:女巫攻击(Sybil Attack):在对等网络中,单一节点通常具有多个身份标识,通过控制系统的大部分节点来消弱冗余备份的作用。
如果网络中存在一个恶意节点,那么同一个恶意节点可以具有多重身份,原来需要备份到多个节点的数据被欺骗地备份到了同一个恶意节点(该恶意节点伪装成多重身份),这样作恶的节点就有可能掌握网络的控制权。
另外一个是开放性,任何节点都可以参与共识,矿工只需要买一个矿机插电,就可以直接进行挖矿。如果网络本身算力非常高,PoW 的优势还是非常明显。而 PoS 约束条件比较多,可能需要保持在线、购买 Token,这过程中会可能有一些包含个人信息的 IP 地址会被暴露。PoW 整个系统保证了每个矿工都要在最长链上提交区块,这使得每个矿工挖到一个块后,有动力尽快地将其广播出去。这些都是比特币 Nakamoto Consensus 非常好的属性。
但是任何一个共识机制都有它的安全模型,都会存在被攻击的可能。只是人们比较了解 PoW 的攻击模型,知道它可以怎样抵御攻击。其它的共识人们并不充分了解,尤其是比较新的公司,包括在很多 PoS 的项目中,采用的方式还是基金会等相关团体持有 Token 的 50%,来保证不被攻击。真正在「野地」里成长出来的 PoS,运作时间还非常短,人们还在摸索的过程中,但它是一个非常值得研究的方向。
Daniel:是的,对于不了解的共识机制,我们更担心的是未知的攻击方式,以及对于这些攻击方式,我们还没有成熟的解决方案。而 PoW,我们非常清楚地知道黑客会以怎样的方式发起攻击。
Terry:Vitalik 曾发 Twitter 说过,他认为 ETH 要转向 PoS 从哲学上来讲是正确的。当然也有很多反对的声音。慢雾科技的创始人说过一个话题,就是无论采用什么算法,只要是在解决拜占庭将军问题,就都有它自己的安全模型。就像 Kevin 说的一样,安全的前提假设不一样,都会有各自的问题,PoS 也有很多没有解决的问题。其实我们对于 PoS 共识算法也有蛮多的理解和认知,我们可以在以后的节目里专门聊一聊 PoS。
但现在我想表达的是把 PoW 换成 PoS,这并不是一个解决问题的办法,或者是说它有可能会引来很多新的问题。从实际解决问题的角度来讲,有人提出了一些真实的解决方案,比如针对链的重组问题,BCH 社区发起了重组保护(在 BCH 中,ABC 0.18.5 版本增加了重组保护,能够排除超过 10 个块的重组)。
现在的 PoW 挖矿方式大致分为两种,一种是通过 ASIC 矿机来挖,比如比特币,另一种是通过 GPU 矿机来挖(下文统称为显卡挖矿),比如 ETC。不得不承认的一点是,显卡挖矿的算力流动性较高,因为它能挖的币种比较多,很容易可以租到算力去攻击某一个币,攻击完某个币以后,就算这个币垮了,矿工还是可以通过挖另外的币获得收益。那么问题来了,显卡挖矿的算力流动性这么高,会不会从某种程度上影响用显卡挖矿的链的安全性?
Daniel:基于事实,整个算力市场是一个存量市场,在当前的市场环境下,很少有人会投资显卡市场去购买显卡,增加算力。相反,更多的矿工会选择把矿机停掉,因为现在所有币种的价格都很低,挖矿不合算。
所有矿工都可以自由选择挖哪一种币,通常理性的矿工会选择那些能盈利、赚钱的币种。最终导致的结果是,所有的币种都会回归到一个相对的盈亏平衡点,或者说挖每一种币种所得到的盈利可能都差不多。所以现在每一个币种背后所支撑的算力都保持在一个稳定的状态。
在这个稳定的状态下,一些币种价值较高,它的算力就越大,想要去租超过主网络的算力进行攻击非常难。而那些因为价值不够高,或者挖矿不经济,导致很少有矿工去挖的币种就非常不安全,攻击者很容易租到算力对其进行攻击。
任何一个项目,尤其是选择 PoW 作为共识协议的项目,在上线的初期算力增长阶段,都会经历一个不安全的阶段,那么如何从一个危险的状态过渡到到安全的成熟阶段就显得特别关键。
ASIC Friendly or Not?
Terry:我们见过很多项目,他们对是否采用 ASIC 矿机来挖矿有着不同的态度,有些是抵触的,有些是中立的,也有些是友好的。那么如果一个小币种用 ASIC 来挖,那么它就更安全吗?
Kevin:这要看你如何界定安全性。小币种对 ASIC Friendly 的诟病态度有两种。一种是假设在很短的研发周期内可以把一个新项目的 ASIC 矿机做出来,而且大家都看好这个项目。那么可能会出现这样的问题:
一般来说一个项目在前期散币最快,而最快的红利期就让给了拥有 ASIC 的矿工,那么这些矿工很可能就是中心化的。甚至可能会出现 ASIC 生产厂商自己在研发出矿机之后,并不用来销售,而是自己挖币,这样会导致 Token 本身非常集中。如果 Token 过于集中,社区就会非常集中,那么以后如果出现需要是用 Token 投票或者是用算力进行线上治理的情况,都可能出现问题。更甚至,如果出现像比特币 ASIC 矿机生产商一样一家独大的情况,生产商能够最先生产出矿机,挖出最多的 Token,之后抛售 Token,把所得到的资金再重新投入生产和研发,就又会领先别人一个身位。所以这一点是大家对 ASIC Friendly 诟病的地方。
另外一种是一些项目会采用其他项目(比如挖比特币的矿机)的 ASIC 挖矿算法,那么市面上已经有大量的 ASIC 矿机在挖比特币,这对于该项目来说非常不安全。因为一旦项目上线,比特币的矿工可以直接对该项目进行降维打击。只要这些比特币矿工本身拥有的算力足够多,就很容易对该项目发起 51% 的算力攻击。
所以说最好的方式是采用一个新的算法,不管是用显卡挖矿,还是用 ASIC Friendly 挖矿。
但是对于采用一个新算法的项目来说,也存在一些问题。如果它用的是显卡挖矿,因为显卡都是一样的,那么黑客就可以通过装挖矿软件对其进行攻击。如果它用的是 ASIC 矿机挖矿,那么已有的 ASIC 矿机在刚开始的阶段就很难直接进行攻击,但是这可能会带来一些其它的问题,比如挖矿中心化。
我们拿 Grin 来举例。Grin 的挖矿设计很有意思,它有两个基于 Cuckoo Cycle(一种由 John Tromp 发明的图论式工作量证明,我们会在下一期 Fork It 中进行介绍)的算法,一个是抗 ASIC(ASIC Resistant,通过显卡挖矿,很难用 ASIC 挖矿),叫 Cuckaroo29;另一个算法是 ASIC Friendly,叫 Cuckatoo31+。
一开始 Grin 通过用大量的显卡进行挖矿,并让矿工把币散出去。因为 Grin 采用了一个新的算法,所以之前存量的显卡虽然能切换算力过去,但是也存在一定难度。同时 Grin 不排斥 ASIC,有一定数量的币由 ASIC 矿机挖出,随着时间的推移,不同挖矿算法挖出来币的比例会逐渐变化。
如果把显卡比作雇佣军, 那么 ASIC 矿机就像禁卫军。优化了的 ASIC 矿机,就不可能再去挖其他项目的 Token,这些设备只能挖一个项目。如果别的矿工想要加入进来,只能通过购买矿机的方式加入。从这个层面上来说,Grin 是个比较好的项目,虽然 ASIC 的矿工可能会有一定的中心化,但是矿工只要在挖 Grin 的 Token,那么他们就有动力去保护这个项目(因为除此之外,它们的芯片也无其他作用)。
Terry:对,假设有一个新项目的新 ASIC 算法被制造出来,并且有很多人在挖这个币,矿工并不一定愿意通过租用算力来攻击它。虽然短期可能会盈利,但是长期来看,如果币没有价值,所有的矿机就只是废铁而已,损失会更大。但是采用显卡挖矿币种的矿工不会考虑这种情况,因为即便这个币被攻击了,矿工还是可以挖其它的币。这也体现了 ASIC 挖矿的忠诚性,它是不同于显卡挖矿的一点区别。
刚才我们也提到了 Grin 的挖矿,一个很有意思的设计,刚开始 Grin 挖矿的 90% 用的是 Cuckaroo29(抗 ASIC),10% 是 Cuckatoo31+(ASIC Friendly)。而这个比例会变动,ASIC 挖矿的部分会越来越大,显卡挖矿的部分会越来越小。这样的变换方式说明 Grin 对 ASIC 是中立的,这一点和我们的看法非常一致。
我听过一个资深矿机生产商的观点,他认为只要项目足够好, ASIC 化是不可避免的。要避免只有两种做法,一种是项目方威逼,只要敢造 ASIC,我就敢分岔,就换算法。还有一种是「骗」,就像 ETH 一直说要转 PoS 那样。我对「骗」的说法不认同,但是我认为既然别人这么讽刺幽默得去说这句话,表达的重点应该是,只要利益足够大,一定可以做 ASIC,不管是友好的还是不友好的。
虽然从技术上我不能去评判是不是所有的算法都可以做 ASIC,但是如果利益足够大,我相信会有人去做这个项目 ASIC 的研究。据我所知的一些小道消息,像 Zcash、门罗等其实都有 ASIC 矿机,只是社区对 ASIC 的矿机态度不同。
Daniel:是的,门罗社区出现 ASIC 矿机之后,就快速达成了一次共识,切换了算法,之前的 ASIC 矿机就变成了废铁。
Terry:OK,这里需要声明一下,我们并没有推荐 Grin 这个项目,我们的节目就算推荐也是推荐它的技术,不过 Grin 这个项目背后的 MimbleWimble 协议确实有很强的传奇色彩。除了 Grin,MimbleWimble 协议的另外一个实现是 Beam 项目,但它在原来的协议基础上做了一些所谓的「改良」,这个「改良」是好是坏,可能需要交给时间来评判。相比之下,我觉得 Grin 更原教旨主义地实现了 MimbleWimble。另外,我听说国内有一些团队也打算实现 MimbleWimble,这可能会引起一个小风潮。
Pick Time
Daniel:最后,又到了我们最喜欢的 Pick Time。我向大家推荐一部电影:《燃点》。我刚带着部门同事去看,我们团队里有一些人有过创业的经验,现在我们以创业者的身份在电影里看创业者的故事,还是会有很多感触和共鸣。可以把它当作一次小型的团建,和同事各自讲述一下自己当年创业的故事,这可能会比电影本身更加有趣。
Kevin:我和大家推荐一家网红店「艾格吃饱了」。我老婆一直很关注美食,她在这家网红店买了一些柿饼,特别好吃。这家网红店的公众号叫「艾格吃饱了」。(当然我们没有被赞助)
Terry:我推荐一张电话卡,叫 Google Fi,但这个电话卡只能在美国才能买到。这种卡的特点是它按流量收费,过了 6G 以后就不会再收费。费用大概是十刀/G,其实在中国这并不便宜。但是对于经常出国的朋友来说,这个卡特别方便,因为它在全世界各地都可以用,包括中国。他唯一的缺点(好有道理的样子~),就是在国内可以不用通过科学上网的方式,就能访问到国外一些「邪恶」的网站(邪恶的笑),大家一定要注意。