比特币具有3个特点:去中心化、不可篡改和不可伪造,上一节我们讲了比特币最重要的特性:去中心化。比特币的去中心化是用非对称加密技术和分布式存储实现的。
这一节我们继续讲比特币的第2个特性(即不可篡改特性)及其技术实现的来源。
不可篡改特点
比特币的区块链账本具有不可篡改特点,这一点是用工作量证明机制和最长链机制来保障的。
01、工作量证明机制
首先,篡改是指网络中为了弄虚作假而对账本进行恶意修改。比特币使用的共识机制是 “工作量证明(PoW)”,英文是proof of work,简单来说就是一份证明,用来确认你做过一定量的某种工作。
比如现实生活中的毕业证、驾驶证等,也是通过检验你完成了一定量的知识学习或者驾驶过一定时间的汽车,来证明你拥有此项技能的。
也就是说通过这个结果证明你曾经耗费时间和精力,即工作量来做过这件事。
工作量证明系统可以看成是两个步骤,一个是工作;另一个是对工作的验证。这分别对应两个主体,一个是工作者;另一个是验证者。
系统约定好工作内容,验证者给出工作量,工作者完成工作量,验证者检验工作量是否达标。工作量证明的设计需要达到:工作者是一定要花费一定的时间才能完成工作,但验证者却可以瞬间完成检验。
比特币里的工作量证明函数叫SHA256,中文名叫安全散列算法。具体是什么数学公式我们先不用管了,可以理解成一个很高难度的掷色子游戏---把3个色子扔出4点。这是一种随机性很强,实现起来很难,验证起来很容易的游戏。谁能第一个扔出4点,会第一时间在全网广播---老子成功了!其他节点一看,果然是4点,于是验证写入账本记录。然后继续下一次的掷色子游戏。
POW的共识机制得到全网的认可,它依赖完成任务进行数学运算来获取记账权,用一个极其复杂的数学游戏,保证了获取记账权的公平性。
比特币是高度去中心化的记账系统,如果要篡改记账信息,就要篡改全网51%节点的数据。也就说你必须控制全网51%以上的算力才能做到这个事情。从目前全球的算力发布来看,貌似可能:
很多人对51%攻击忧心重重,而中本聪在比特币诞生之初就已经考虑到这个问题
If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins.
-------比特币白皮书
如果攻击者有能力比其他诚实节点聚集更多算力,他将面临一个选择:到底是用欺诈手段拿回已支付的币,还是应该使用算力获取更多币。
目前(1Mar2018)比特币全球算力前4加一起已经超过51%,要联手篡改记账貌似存在现实可能性。但是这些算力都是私营自利的,最终,矿工们发现,按规矩老老实实地挖矿更划算,因为51%攻击只要发生一次,比特币系统的可信度就荡然无存。要联合4家巨头做一件砸大家饭碗的事情,必定不得人心,不符合利益最大化。
所以,矿池联手做51%攻击的事件不仅没有发生,而且曾经还发生过这样的事情:当某一矿池算力接近40%时,矿工们自动切换至其他矿池。看起来他们在维护算力均衡,但矿工们的实际想法是:如何不让自己挖的币贬值。
所以,多年来51%的攻击未曾实现过,只要自利的人性不改变,比特币51%攻击就很难发生。
02、最长链机制
保证比特币不被篡改的还有另一条护城河--最长链机制。
比特币记账权确认验证,必须经过6个区块确认。后续记账节点会验证当前区块正确后,基于该区块出块。
每一次后续区块的叠加就相当于对前面块的一个认可。比特币白皮书规定,节点永远认为最长链是正确的区块链,并将持续在它上面延长。所有矿工都在最长链上挖矿,有利于区块链账本的唯一性,最大限度保障了比特币记账不被篡改。
最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。
小结
比特币最重要的特性是去中心化,比特币的去中心化是用非对称加密技术和分布式存储实现的。比特币第2个特性是不可篡改,这是用工作量证明机制和最长链机制来保障的。