Proof Of Work,也就是工做量证实。工做量证实系统(或者说协议、函数),是一种应对拒绝服务攻击和其余服务滥用的经济对策。它要求发起者进行必定量的运算,也就意味着须要消耗计算机必定的时间。这种系统要求获得证实的过程是低效且漫长的,但是校验则是高效且迅速,归纳起来就是求解难,验证容易。算法
比特币是第一个区块链应用,同时也是最著名的应用之一,它所使用的共识机制就是POW。那么具体是怎么实现的呢?安全
在比特币中,使用了SHA256这种哈希函数做为求解手段。SHA256有如下特征:网络
实际使用过程当中,每一个节点须要打包的交易数据相同,再从尾部加一个随机数(节点本身选)做为总体输入来求输出值,把结果和当前的挖矿难度对比(要求输出值前x位为0),知足条件则向附近节点广播;不知足则更换随机数继续求解。最快求得解的节点,则能够视为挖矿胜出,取得其余节点的共识。函数
目前比特币已经吸引了全球大部分的运算能力,其余再使用PoW共识机制的区块链应用很难得到相同的计算能力来保障自身的安全,从而没法复制比特币的辉煌;同时因为挖矿形成大量的资源被浪费,共识达成的周期很长,致使了比特币的TPS(transaction per second,每秒执行事务数量)极低,只有个位数。区块链
POS经过区块链系统内部的虚拟资产来管理安全性,根据节点持有的通证数量或者时长来决定节点享有的权利大小。区块链系统的参与者锁定他们在该区块链上持有的虚拟资产(Coin或Token),他们会签署消息以达成一致意见。只有那些已经成为系统一部分的参与者才可以决定下一个区块的内容。.net
PoW共识算法从经济角度,能够天然作到防止区块链分叉(区块链分叉的本质就是网络各节点对区块链的生成产生分歧,没法达成共识)。可是PoS则须要精心设计好相应的规则来防止分叉,例如PoS能够设定惩罚机制,参与挖矿的矿工被要求锁定必定数量的虚拟资产。若是他们被侦测到了存在不当的行为,则系统会没收所有或部分被锁定的虚拟资产。设计
DPoS机制,中文名叫作股份受权证实机制(又称受托人机制),它的原理是让每个通证的节点进行投票,选出集中多数票的节点,例如100个,而后这些节点会行使相似POS的权力。 DPOS利用利益相关方批准投票的权力以公平和民主的方式解决共识问题,全部网络参数,从费用估算到块间隔和交易规模,均可以经过选定的表明进行调整。从某种角度来看,DPOS有点像是议会制度或人民表明大会制度。若是表明不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。视频
Practical Byzantine Fault Tolerance,实用拜占庭容错算法。blog
拜占庭假设是对现实世界的模型化,因为硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,而且这些协议还要知足所要解决的问题要求的规范。这些算法一般以其弹性t做为特征,t表示算法能够应付的错误进程数。不少经典算法问题只有在t小于n/3时才有解,如拜占庭将军问题,其中n是系统中进程的总数。进程
BFT-DPoS,Byzantine Fault Tolerance - Deligated Proof of Stake,带有拜占庭容错的委托股权证实。 EOS的白皮书中,每一个见证人出块时全网广播,其余见证人收到新区块后,当即对此区块进行验证,并将验证签名完成的区块当即返回出块见证人,不需等待其余见证人本身出块时再确认。从当前的出块见证人看来,他生产了一个区块,并全网广播,而后陆续收到了其余见证人对此区块的确认,在收到 2/3 见证人确认的瞬间,区块(包括其中的交易)就不可逆了。交易确认时间大大缩短,从 45 秒缩短至 3 秒左右(主要为等待生产区块的时间)。
EOS原来是采用DPoS,为了效率采用PBFT 和 DPOS结合的BFT-DPoS,理论确认速度大大提高。由于EOS在设计之初就提出了选出21个超级节点做为见证人,并负责全网的出块,因此被人诟病缺失了区块链的去中心化精神。实际上,比特币、以太坊这些前辈,通过了前期的发展后,大部分算力已经集中在各大矿池和机构手上了,因此EOS只是提早把这个生态肯定下来,并写在台面上,才会有这样的非议。
EOS的这种妥协,实际上是兼顾了中心化和效率,是区块链上一个有益的尝试。
圆方圆学院聚集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。 公开课地址:ke.qq.com/course/3451…