区块链的交流学习中,被提及的一个很频繁的词汇就是共识算法,它是构筑区块链信任特性的基础。在区块链世界,共识一般都是通过特定的数学算法实现,那到底什么是共识算法?目前普及的共识算法有多少种?相信在这篇文章中大家可以得到一定的谈资。

 

所谓共识,简单理解就是指大家都达成一致的意思。其实在现实生活中,有很多需要达成共识的场景,比如开会讨论,双方或多方签订一份合作协议等。而在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点的账本保持一致。如果是在传统的软件结构中,这几乎就不是问题,因为有一个中心服务器存在,也就是所谓的主库,其他的从库向主库看齐就行了。在实际生活中,很多事情人们也都是按照这种思路来的,比如企业老板发布一个通知,员工照着做。但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来。

 

所以在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法。

 

共识算法其实就是一个规则,每个节点都按照这个规则去确认各自的数据。我们暂且抛开算法的原理,先来想一想在生活中我们会如何解决这样一个问题:假设一群人开会,这群人中没有一个领导或者说老大,大家各抒己见,那么最后如何统一出一个决定出来呢?实际处理的时候,我们一般会在某一个时间段中选出一个人,那个人负责汇总大家的内容,然后发布完整的意见,其他人投票表决,每个人都有机会来做汇总发表,最后谁的支持者多就以谁的最终意见为准。这种思路其实就算是一种共识算法了。然而在实际过程中,如果人数不多并且数量是确定的还好处理,如果人数很多且数量也不固定,那就很难通过这种方式投票决定了,效率太低。我们需要通过一种机制筛选出最有代表性的人,在共识算法中就是筛选出具有代表性的节点。

 

那如何筛选呢?其实就是设置一组条件,就像我们筛选运动员,筛选尖子生一样,给一组指标让大家来完成,谁能更好地完成指标,谁就能有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PoWProof of Work,工作量证明)、PoSProof of Stake,权益证明)、DPoSDelegate Proof of Stake,委托权益证明)、PBFTPractical Byzantine Fault Tolerance,实用拜占庭容错算法)等,各种不同的算法,其实就是不同的游戏玩法。网络上对于各种共识算法都有很多介绍,主要是以下三种

PoWProof of Work,工作量证明)

—主要代表:比特币

所谓的比特币挖矿就是通过计算符合某一个比特币区块头的哈希散列值争夺记账权。这个过程需要通过大量的计算实现,简单理解就是你进行的计算量大(工作量大),你就有大概率获得记账权。

缺点:耗能;

 

PoSProof of Stake,权益证明)

—主要代表:点点币

简单理解就是根据资产的多寡分配获取记账权的概率,类似股份公司中的股东。缺点:权利集中

 

DPoSDelegate Proof of Stake,委托权益证明)

—主要代表:EOS

PoS的改进,通过社区选举产生记账者,类似股份公司中的董事会。

缺点:目前未明

 

其实共识算法还有很多种,而且随着各个项目的不断涌现,共识算法也在不断改进中,比如PoI(账户重要度证明)、PoP(账户参与度证明)等等。



分享到: