所谓共识,就是指大家都达成一致的意思。在生活中也有很多需要达成共识的场景,比如开会讨论,双方或多方签订一份合作协议等。在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点的账本保持一致。如果是在传统的软件结构中,这几乎就不是问题,因为有一个中心服务器存在,也就是所谓的主库,其他的从库向主库看齐就行了。在实际生活中,很多事情人们也都是按照这种思路来的,比如企业老板发布了一个通知,员工照着做。但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来。在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法。
共识算法其实就是一个规则,每个节点都按照这个规则去确认各自的数据。我们暂且抛开算法的原理,先来想一想在生活中我们会如何解决这样一个问题:假设一群人开会,这群人中并没有一个领导或者说老大,大家各抒己见,那么最后如何统一出一个决定出来呢?
实际处理的时候,我们一般会在某一个时间段中选出一个人来发表意见,那个人负责汇总大家的内容,然后发布完整的意见,其他人投票表决,每个人都有机会来做汇总发表,最后谁的支持者多就以谁的最终意见为准。这种思路其实就算是一种共识算法了。然而在实际过程中,如果人数不多并且数量是确定的,那还好处理些,如果人数很多而且数量也不固定,那我们就很难让每个人都去发表意见然后再来投票决定了,这样效率就太低了。我们需要通过一种机制筛选出最有代表性的人,在共识算法中就是筛选出具有代表性的节点。
如何筛选呢?其实就是设置一组条件,就像我们筛选运动员,筛选尖子生一样,给一组指标让大家来完成,谁能更好地完成指标,谁就能有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PoW(Proof of Work,工作量证明)、PoS(Proofof Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等,各种不同的算法,其实就是不同的游戏玩法,限于篇幅,这里暂不进行算法过程的详述,大家只要知道这些都是一种筛选算法就行了。区块链系统就是通过这种筛选算法或者说共识算法来使得网络中各个节点的账本数据达成一致的。
如果您想深入了解更多的区块链的知识,驭凡教育“区块链项目管理咨询师” 课程是您的最佳选择。