经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 区块链 » 查看文章
区块链的共识算法
来源:cnblogs  作者:钓叟  时间:2018/11/16 10:07:37  对本文有异议

欢迎访问我的个人站点,老廖的个人博客

前言

??区块链最有价值的地方就在于共识算法,目前各种公链、联盟链群魔乱舞,共识算法林林总总。

??研究了一段时日,也到了总结的时候,用几篇文章将它们梳理一下。

作用、意义

??区块链是当下的大热门,各种各样的区块链项目都会用一定篇幅来描述它的共识机制。那么,共识在区块链中扮演了什么样的角色?有何重要的意义?

??区块链简单而言是一种组织数据的方式,人们对区块链发起的每一次动作 (事务)( Transaction ) 最终的结果都是改变数据,区块链需要保证每一次对数据的修改都是合法的。和传统中心化服务不同,区块链的服务(算力、存储)是由分散、平等(大多数情况)且互不信任的节点提供,那么,区块链世界里的有效和合法则指的是满足大多数 “人” 的认可,认可的过程就是区块链的共识过程。

??对普通用户来说,我们对区块链发起的每一次 Transaction 都是将我们的事务数据用私钥签名后发送到某一个节点,由该节点处理并向全网广播。我们无法假设区块链网络中的节点都是不做恶的,也无法保证网络在任何情况下都不出问题,因此我们引入了共识算法来处理共识过程,保证只有在大多数节点都认可的情况下,事务才会被记录到区块链上,同时数据 (状态) 发生修改。这个共识过程的难题就是拜占庭将军问题,共识算法的出发点就是解决拜占庭将军问题。

拜占庭将军问题

??拜占庭的将军们率领军队进攻一个敌人的城市,由于敌人的城市很大,将军们的军队各自分散,互相之间只能靠派遣通信兵传递消息,同时敌人的实力不弱,至少得一半以上的将军同时发动攻击才能获得战争的胜利。但是将军当中可能有叛徒,叛徒可以随意伪造篡改互相传递的信息,而且通信兵传递信息的方式并不可靠,可能出现信息未送达的情况。这时就引出了一个问题,在这样的前提假设下,如何确保能有一半以上的将军达成进攻的共识?

??这就是 莱斯利·兰伯特(Leslie Lamport) 提出的 拜占庭将军问题(Byzantine failures)。 区块链的节点就类似于将军,要达成的共识则是交易的有效性和记账权利。区块链的共识算法就是在不同的假设前提下,一定程度的解决拜占庭将军问题。

不同的共识算法

??简而言之,共识算法就是达到一个少数服从多数的效果。而不同共识算法的差异性体现在不同的区块链网络中,评价 “多数” 所用的指标不同,有的用算力来评价,有的用 “股权” 来评价,等等。 由此也就衍生出了各种各样的共识算法,如:PBFT,DBFT,POW,POS,DPOS,PAXOS,RAFT 等。

??下一篇文章,再对这里列举出的几个共识算法做详细分析。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号