提到区块链,大家都会提到“拜占庭将军问题”这个分布式系统中的著名问题。
拜占庭将军问题大概讲的是:拜占庭N个在不同地方的将军围攻一个敌人,忠诚的将军希望通过某种协议达成某个命令的一致(比如约定某个时间一起进攻),但其中一些背叛的将军会通过发送错误的消息阻挠忠诚的将军达成命令上的一致。如果同时发起进攻的将军数量少于M个,那么不足以歼灭敌人反而容易被敌人全部歼灭。怎样做才能保证有多于M个将军在同一时间一起发起进攻?
拜占庭将军问题是分布式系统的一个经典模型,当分布式系统没有可靠的中心协调所有节点时,如何确保大多数节点的数据是一致的?拜占庭将军模型就是描述的这个问题。一个区块链系统能够解决拜占庭将军问题,那么我们就说这个区块链系统满足拜占庭容错。
需要注意一点:
在拜占庭将军问题模型中,将军们被分成了“忠诚的”和“背叛的”两种。这种分类事实上是以将军们是否遵守“共识协议”来区分的。在区块链系统中,当一个节点不遵守共识协议,篡改正确的数据等行为,可以被看作是“背叛的”节点。
作为一个信息系统,从“拜占庭将军问题”角度(即分布式系统的数据一致性角度)分析就足够了。然而我在本系列的第一篇文章中就提到过,区块链不仅仅是一个信息化的工具,区块链是深入到业务内部,能够对商业模式起到决定性作用的一种技术。区块链技术不仅仅是一个信息技术,更是一个“经济技术”。因此,我们就不能只从信息技术角度来分析区块链了。
回到本章的正题,我们怎么从经济学角度来看区块链?这个题目太大了,并且我本人不是经济学专业的,只能尝试着从经济学角度简单分析一下比特币区块链系统。
从经济学角度来看,仅仅是遵守共识协议并不能保证一个经济系统的稳定性。事实上,“中本聪”在设计比特币系统时,已经考虑到了很多经济学方面的问题,因此比特币系统中对矿工有挖矿奖励,矿工还可以获得转账手续费,以确保有足够的算力能够参与整个比特币系统的维护。
经济学的最基本假设:矿工是要追求利益最大化的
首先,对于矿工来说,遵守整个比特币系统技术协议,有可能获得比特币。不遵守,则直接就会被排除在系统之外,没有收益。因此,从“拜占庭将军问题”分类来说,比特币的矿工都是“忠诚的”,这就能够使得整个比特币系统是趋于稳定的。
然而在遵守比特币系统技术协议的前提下,其实还有很多种策略可以选择。这些策略都是在不违背技术协议的行动,但是对整个比特币系统的经济学运行稳定性有影响。比如矿工可以选择对其他矿工发起DDOS攻击,拖慢竞争者的网络,以提高自己挖到区块的概率等。这种情况可以让矿工获得更高的收益,但是一旦所有矿工之间都在相互DDOS攻击,会造成整个比特币网络不可用,交易无法提交生效,进而导致整个比特币的价值降低。
还要注意一点,矿工的身份有时候不仅仅是矿工,同时也是比特币的交易者。在这种情况下,矿工如果发起“双花攻击”,则矿工有可能获取到大量的利益。
举例来说,如果一个矿工Alice需要转账给Bob 1000比特币,此时Alice在比特币网络上广播一个Alice转账给Bob账户 1000比特币的交易,被其他矿工接收到,记入了他们的区块中。然而Alice自己则在区块中记录了另一笔交易——Alice转账给Alice_new账户1000比特币,也就是说,Alice人为制造了一个分叉,在这个分叉点,制造了一笔双花交易(一笔钱花了两次)。
之后Alice一直默默的挖矿,直到产生了6个区块后再次广播挖矿结果。如果Alice能够掌握全网51%以上的算力,那么这笔双花交易最终被全网承认的将是Alice转给Alice_new的这笔交易,而转给Bob的将失效。这时如果1比特币的价格是3000美元,那么Bob有可能损失掉了三百万美元。这是一笔非常大的数字。这也就是我们经常提到的比特币中的“51%攻击”。
由于整个比特币系统是无中心化的,也就是说,我们没有办法记录Alice这个矿工的信用,因此,即便发生了51%攻击,Alice也得不到任何惩罚,相反,Alice还能够继续参与挖矿,并且继续制造51%攻击。当然,如果这种事情频繁发生,整个比特币系统就会变得一文不值,因此,具有超级算力的矿工在发起51%攻击时,也需要考虑是否会把整个比特币系统拖垮。
其实不仅仅是算力超过51%的矿工可以发起双花攻击,如果一个矿工掌握了45%的算力,那么他依然可以发起双花攻击,在我们通常认为6个区块可以确认交易成功的概念下,45%算力发起双花攻击的成功率为(0.45/(1-0.45))的6次方——30%,(考虑到他掌握了45%的算力,那么他单独自己挖自己的分叉,另一个分叉就只有55%的算力了,所以是0.45/(1-0.45))也就是说,如果这个双花交易的额度是1000比特币,那么他收益的期望是300比特币,这种情况下,从博弈论角度来看,矿工发起双花攻击的可能性是极大的。
由于比特币区块链系统的设计中,挖矿难度的变化率是比较慢的,因此,对于算力很高的矿工来说,在准备大幅增加硬件提高算力的同时发起双花攻击,这样的行为有可能让矿工获得很高的收益。当然,这种行为也同样会导致比特币的价值受到损害。
综合上面的分析,我们可以得出结论:虽然比特币区块链系统在技术设计上已经非常成熟,但是一旦采用经济学分析,仍然可以发现无中心化的比特币系统依然存在很高的经济风险,这种风险来源于算力的中心化。目前整个比特币网络中,几个大的矿池已经占有了非常高的算力比例,在这种情况下,比特币系统的价值已经很大程度上依赖于这些矿池的道德水平了。不过,上面的所有分析是假设矿工发起了大额转账交易。而目前由于比特币价格非常高,大额交易是比较罕见的,因此,出现上述风险的概率是很低。