在讲到区块链技术时,很多人都会指出区块链的各种各样的缺点,而很多观点是因为缺乏对区块链更深层的了解,而本文中的几篇文章就将通过对共识机制的介绍来反驳一个常见的错误观点。
错误观点:区块链技术的应用会浪费大量的电力和算力成本,所以不具备应用前景。
错误辨析:该错误观点将比特币与区块链混淆,因为比特币新区块的产生需要矿工挖矿,这需要矿机进行大量的计算,同时也会浪费电力。但这是因为比特币采用的是POW共识算法,但除了POW之外,还有许多其他的共识算法,目前常见的共识算法有POW,POS,DPOS,PBFT,DBFT等多种。
0.共识算法是什么
共识算法,指的是证明区块的正确性和拥有权,帮助各个节点达成共识的算法。
1.POW共识算法(本系列文章3.1)
POW共识算法,即proof of work(工作量证明),指的是通过与或运算,计算出一个满足规则的数值,最快计算出该数值的人获得本时间段的记账权。POW算法最知名的应用莫过于比特币了。
2.POS共识算法(本系列文章3.2)
POS共识算法,即proof of stake(权益证明),这指的是一类算法,特点是根据每个节点所持有的代币的比例和时间,等比例地降低挖矿的难度,从而加快寻找随机数的速度。POS算法的提出在PPS币的白皮书中。
3.DPOS共识算法(见本系列文章3.3)
DPOS共识算法,即Delegated Proof of Stake(股份授权证明机制)。这种共识算法类似于董事会投票,持币者决定出一定数量的节点,由这些节点代理全网所有节点进行信息的验证和记账。引入本算法的有比特股(BTS)、EOS。
4.PBFT共识算法
PBFT共识算法,即Practical Byzantine Fault Tolerance(实用拜占庭容错机制)。这种共识算法指的是在不同计算机之间进行交互,尝试形成共识。在计算机交互中形成的不同共识中,最终选择超过全网2/3节点认可的共识。
4.1. 算法介绍
PBFT最早是为了解决拜占庭将军问题(Byzantine failures)而提出的,所谓的拜占庭将军问题,其内容为:有一座富饶的城堡——拜占庭,城堡周围有10个小部落,每个小部落各有1名将军。每名将军都打算扩展自己的领地,而拜占庭只有超过5个将军共同攻打才会沦陷,否则进攻者就会被拜占庭消灭,其领地会被其余部落的人瓜分。
现在我将上述问题换个方式来讲述……没错,回到本系列文章中一直提到的班级中去:
在一个班级中,老师每天都给学生们留下大量的作业,同学们每天都很疲倦。从本质上来说,大多数同学都想不做作业,但倘若自己哪天不完成作业,而其他同学都完成了作业,那自己就会受到老师的惩罚。唯有班上超过半数以上的同学都不做作业时才可以采用“法不责众”条例,不受惩罚。
终于有一天,大家提出建立以下机制,来保证班级上大多数同学行为的统一:班长在某天向班上其余同学分别发出不做作业的通知,之后同学之间互相通信自己得到的信息,然后根据多数信息的指示来行动。这种制度能够保证在班上“表面同学”(即试图扰乱大家信息的同学)数量不超过全班人数的1/3时,班级可以达成一致行为。
为了方便讲解,假设班上只有1个班长,2名同学,共3个学生。当3个学生中有一个“表面同学”时,会发生如下情况(其中A代表不做作业,B代表做作业,箭头表示信息的传递):
倘若班长试图扰乱信息,则两名同学收到的信息均是(A,B),因为指示的数量是相同的,两名同学无法做出判断,因此最后同学们为了不受惩罚,均会选择完成作业。
倘若同学1试图扰乱信息,则同学2收到的信息为(A,B),同学2会陷入迷茫之中,最终为了规避惩罚,而选择做作业。
但假设班上有1名班长,3名同学,共4名学生。当学生中有一个“表面同学”时,会发生如下情况:
倘若班长试图扰乱信息,则他会向3名同学分别发出做作业(即指令A)或不做作业(即指令B)的信息,因为无法判断向某个同学发出的具体信息,此处用X、Y、Z表示指令A或者B。显然在同学互通信息之后,每个人得到的指令均是(X,Y,Z),因而最后每个同学得到的消息都是两个A与一个B或是两个B与一个A。不论是哪种情况,每个人都按照数量占多数的指令行动,最后同学们都会形成一致的行动。
倘若同学1试图扰乱信息,则他在接收到指令A时会与其他同学声称自己接收的指令是B,但最终同学2和同学3接收到的信息均是两个A一个B,因此他们两个人会与班长一起不做作业,也能保证“法不责众”条例的使用。
因此在班上同学数量为3f+1时,如果“表面同学”的数量不超过f,则班上的同学可以达成一致的行动,在不想做作业的时候可以保证“法不责众”条例的顺利使用。
将上述例子推广到区块链中,班长是拥有记账权的节点,他发出的指令是指当前区块中的信息,同学就是普通节点,同学们最后做出的行为就是赞同或者质疑区块中信息的正确性。当3f+1个节点中,被破坏或是心存恶念的节点数量不超过f时,所有节点总是能达成一致的共识。
4.2.PBFT的优缺点
实用拜占庭容错机制(PBFT算法)真正摆脱了代币,不用去证明自身付出的工作量,也不用证明自身具有的资产,便能通过信息交互的方式达成共识,形成的区块具有最终性。
但PBFT的缺陷也很明显,当节点数量增加时,信息需要交互的次数会呈现指数级的增长,只能使用于私有链或者联盟链上,而无法用到公链上。
关于共识算法,其实还有很多其他的种类,例如DBFT、POA等,没有说哪种共识算法一定是最好的,只有最适合某项应用的共识算法。而关于共识算法的介绍到此也就告一段落了。从下一章起,我们将提到区块链的另一个常见问题:区块容量大小及解决方案。欢迎大家继续关注。
此民彼名,偶有小故事的科普向头条号,欢迎关注互动。
本文暂时没有评论,来添加一个吧(●'◡'●)