如何摧毁比特币网络
比特币评论家在讨论比特币系统可能瘫痪的种种可能时,付出的努力足以让人们感到惊讶。但,很少有人会拿美元的缺点来作为案例进行解读,这些‘观点’对污名化比特币,有着深远的影响。他们用过去的那些对比特币千篇一律的“担忧”,来“警告”人们要远离比特币。最近又出现了关于对比特币网络进行空块攻击的观点,@Michael对这个观点进行了激烈的辩论。
要知道,在3年前我就写过关于算力集中化、空块攻击的文章。这次也不例外,我们还是看到一些比特币评论家在发表同样的观点,来获取注意力。几乎每一轮牛市,我们都可以看到相同的情况发生。 实不相瞒,我非常讨厌和那些污名化比特币的人,就一些雷同的问题一遍遍的辩论。但是,考虑到有相当一部分新人刚刚进入比特币世界,我决定在这篇文章当中就‘空块攻击’进行反驳。
什么是空块攻击所谓的空块攻击,就是指大多数算力只打包空(没有交易)区块,拒绝非空(有交易)区块。 本质上,这些矿工的行为是拒绝链上所有的正常区块,实施一次软分叉。假定这些矿工在比特币网络当中拥有51%以上的算力,去进行空块攻击,甚至其他矿工在不知情的情况下,继续打包非空块(正常挖矿),最后他们会获得最长的比特币区块链。如果只有空块产生的情况下,比特币网络所以的交易都会停滞,按照这个逻辑,比特币网络也就瘫痪了。 那么谁有可能来实施这样的攻击呢?因为在中国境内的矿池拥有超过51%的算力,通常情况下,中国矿工会被假象成这个坏角色。按照逻辑推理,中国矿工可以采用多种方式掌控51%以上的比特币算力,对比特币网络实施空块攻击,让比特币网络瘫痪。 这是一个粗浅的逻辑推理,这个剧本的问题是,在比特币的评论家看来,他们认为中国矿工要实施空块攻击没有任何阻力。这个逻辑类似于,在一个人口众多的城市投放***,还不会引起人们的反抗一样幼稚。 如果真是这样,让我们看看比特币网络会做出一些什么样的对抗。想要在比特币网络实现空块攻击有两种方案:直接攻击和间接攻击。直接攻击,就是获取51%以上的设备算力,然后实施攻击。间接攻击,就是矿池强行控制算力只挖空区块。我们先讨论第二种实施难度更低的“间接攻击”。
多数矿池都不会发起攻击大多数算力都是被集中在矿池运营商,同时不同的矿池运营商之间存在竞争,来获得矿机所有者的业务。如果中国矿池因为某些原因控制矿池的算力来实施空块攻击,那么这些矿机所有者会毫不犹豫的将自己的矿机算力从矿池切换出去。 为什么会这样呢?因为矿池去挖掘空块的收益会低于挖掘正常区块的收益。目前,单个区块的奖励是在6.25个BTC,手续费大概在0.75BTC左右。当攻击发生时,只要把你的矿机算力切换到中国之外的矿池,就可以多赚到11%的收益。换句话说,攻击者将不得不放弃自己业务中11%的收益,这显然不符合常理。 因此,想要发起攻击的矿池需要向矿机所有者支付11%的收益。但如果他们真的这样做,矿机所有者们就会知道自己的算力被用作空块攻击,这时候他们会要求更多的补贴来提高矿机所有者的忠诚,也就是攻击矿池需要放弃超过11%的收益。 攻击矿池也并没有那么容易从空块当中获得BTC,对矿机所有者进行补偿。因为在只有空块产出的情况下,攻击矿池也没办法将 BTC 发送出去。这些矿池发起空块攻击,本质上是淘汰掉原有的矿机持有者的业务。给矿机所有者发放补贴的方式不仅要超越打包空块的机会成本,还包括他们的整个矿池业务。也就是说,发起空块攻击并不是一件低成本的事情。他们不得不在支付补贴的情况下,还要承担整个业务的损失,并且很有可能付出更多。
控制51%的设备算力非常困难另一种直接的方式就是获得大量的矿机设备,同样的,这也不是低成本的方案。 政府可以通过扣押矿机设备,或者自行挖矿。 政府会采取什么样的方式去控制算力设备呢?矿机因为其便携的特性,会总是游离于各个廉价的水电站之间(保证挖矿利润)。政府要如何知道这些矿机设备在哪里?他们需要庞大的政府资源,来登记在各地活动的矿机设备。 不仅于此,他们需要在控制如此巨大的一笔财产之后还不会打草惊蛇。这是非常困难的事情,特别是在“空块和正常区块”之间的算力战争当中,矿机设备显得格外有价值。如我们所推断,只有少数设备在挖矿正常区块,获得大量的收益(因为算力减少)。因此,在这样的算力战当中,每一个矿机所有者,都会将自己的设备卖到海外,或者尽快通过走私等渠道转移矿机。 所以,政府的行动不能是单个矿场进行扣押,他们需要将这些矿场一次性的抓捕。只要稍微走漏风声,任何一个矿机持有者都第一时间将自己的设备运送出国。其他人甚至从一些迹象就可以发现,比如政府登记注册的矿机设备有一大片的算力撤出,并且这些设备算力去挖那些没有收益的空块。所以,想要一网打尽,这个行动需要大量的劳动力、大量的秘密工作以及高度协调的配合,很可能需要动用军事力量,甚至产生暴乱。 那如果政府从市场购买设备呢?政府作为一个如此重量级的买家进入到矿机市场,势必会导致市场的需求猛增。如果矿机价格上涨,会导致大量的矿机供应商进入市场。政府的采购进度,需要超越自然市场的供应,并且在某个特定时刻超越全球算力设备,并且不能有丝毫懈怠。因为只要在任意时刻,他们停止拥有超过51%的算力,空块攻击就会失败。 那算力设备供应商能否自己拥有51%的算力?供应商他们自己同样会因为需要制造大量的设备,导致和整个供应链对零部件产生竞争。他们需要提高零部件的利润来获得零件,这又会导致大量的零部件供应商进入市场,最后导致更多的算力设备供应商参与竞争。也就是说,他们要跑赢整个自由市场的竞争,这不仅需要大量的资金,还需要大量的技术和业务能力。
一个国家拥有51%以上算力会发生什么
这里让我们暂时撇开前面的观点,假想一下比特币评论家的想法实现的可能情况。如果一个国家掌控51%以上的比特币算力,无论是他们自己制造矿机,还是在市场购买,或者扣押矿场。这会导致什么样的结果发生? 现在他们可以通过发动空块攻击导致整个网络瘫痪。那其他的网络(节点)算力会做些什么?首先,他们将很可能制造混乱,空的区块开始产生,正常区块开始被剔除。其他的算力理所当然的在网络上发现有空块攻击,然后拒绝接受这类空块。 拒绝空块对于每个网络全节点来讲,都是比较容易实现的。有一个称之为“无效区块”的PRC命令,本质上是在提醒“不要接受这样的区块,以及在此之上建立的任何区块”。攻击者会努力地创建整个分支,让多数节点对单一命令无效。这必须要每个独立的节点来完成,但是考虑到空块实际上没有需要验证的交易,打包起来会更快,这会导致一些节点运营商转向挖掘空块。 对于少数算力阵营这边,他们的正常区块被空块摧毁,他们知道,如果不去挖无效区块将无法获得收益。从博弈论的角度来看,大部分网络算力会因为经济效应,形成一部分新的少数共识。换句话说,去中心化节点运营商因为利益捆绑,会逐渐的形成一个多数的中心节点。
区块之间的战争如果真的走到这个极端地步,比特币系统会硬分叉为两条链:一条空块链,一条正常区块链。 正常的区块链需要处理交易,又因为失去大部分算力,会运行的很慢。而空块链,因为没有交易,反而算力强大,会运行的非常快。这是两条独立的链,而每一个有经济意义的节点都会切换到正常链上来,因为只有这条链可以处理交易。 不仅如此,由于正常链的算力下降,导致大量的交易需要处理,这会导致正常区块链上的交易费增加,矿工更加有利可图。如果这一幕发生,大量的算力也会因为收益切换到正常链这边进行挖矿。可能会出现一些新的矿机供应商加入,或者旧的矿机重新上线,甚至从空块链切换到正常链。 同时,空块阵营需要继续生产新的设备来保持51%以上算力,来对抗正常链阵营。只要在任意时间点,正常链的算力超过空块链,空块链将会被淘汰,本质上空块攻击也就失败了。 即使正常区块链一直处于低算力状态,这些算力也情愿按部就班的运行,同时空块链继续添加自己的无用区块。因为没有一个人可以在空块链买入和卖出,也没人在空块链上面发送或者接收资产。对于这样一条没有意义的链,任何人都会认识到哪条链,才是真的比特币网络,自然也就不会对空块链付出太多的注意力。
结论考虑到这些可能出现的问题,任何民族/国家都会考虑权衡这些方案是否值得去实施。即使他们拥有无限的资金,也无法操控全球范围内的新挖矿设备,所以失败的可能性极高。不可否认的是,这样的失败会导致一个国家臭名昭著,这也是政府官员极力避免发生的局面。 就我个人而言,我是比较欢迎这个攻击出现的,我认为这对于比特币是非常有意义的。这不仅会针对民族/国家敌人进行自我测试,而且这样做的威权政府很可能会将比特币合法化为其敌人,并在比特币获胜后,将其自身合法化。