码迷,mamicode.com
首页 > 编程语言 > 详细

区块链主流共识算法

时间:2018-11-29 01:29:14      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:验证   提前   利用   roo   根据   拒绝   nsa   结合   就是   

一.POW(Proof Of Work)

Proof Of Work,也就是工作量证明。工作量证明系统(或者说协议、函数),是一种应对拒绝服务***和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这种系统要求得到证明的过程是低效且漫长的,可是校验则是高效且迅速,概括起来就是求解难,验证容易。

比特币是第一个区块链应用,同时也是最著名的应用之一,它所使用的共识机制就是POW。那么具体是怎么实现的呢?

在比特币中,使用了SHA256这种哈希函数作为求解手段。SHA256有以下特征:

  1. 是一种散列函数,即相邻的x1和x2,求得的f(x1)和f(x2)差别极大。
  2. 不可逆推,给定了f(x)的值,推断不出输入值。
  3. 不存在比穷举更好的方法,可以使f(x)落在特定的范围。

实际使用过程中,每个节点需要打包的交易数据相同,再从尾部加一个随机数(节点自己选)作为整体输入来求输出值,把结果和当前的挖矿难度对比(要求输出值前x位为0),满足条件则向附近节点广播;不满足则更换随机数继续求解。最快求得解的节点,则可以视为挖矿胜出,取得其他节点的共识。

目前比特币已经吸引了全球大部分的运算能力,其他再使用PoW共识机制的区块链应用很难获得相同的计算能力来保障自身的安全,从而无法复制比特币的辉煌;同时由于挖矿造成大量的资源被浪费,共识达成的周期很长,导致了比特币的TPS(transaction per second,每秒执行事务数量)极低,只有个位数。

二.POS(Proof of Stake)

POS通过区块链系统内部的虚拟资产来管理安全性,根据节点持有的通证数量或者时长来决定节点享有的权利大小。区块链系统的参与者锁定他们在该区块链上持有的虚拟资产(Coin或Token),他们会签署消息以达成一致意见。只有那些已经成为系统一部分的参与者才能够决定下一个区块的内容。

PoW共识算法从经济角度,可以自然做到防止区块链分叉(区块链分叉的本质就是网络各节点对区块链的生成产生分歧,无法达成共识)。但是PoS则需要精心设计好相应的规则来防止分叉,例如PoS可以设定惩罚机制,参与挖矿的矿工被要求锁定一定数量的虚拟资产。如果他们被侦测到了存在不当的行为,则系统会没收全部或部分被锁定的虚拟资产。

三.DPOS(Delegated Proof of Stake)

DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个通证的节点进行投票,选出集中多数票的节点,例如100个,然后这些节点会行使类似POS的权力。
DPOS利用利益相关方批准投票的权力以公平和民主的方式解决共识问题,所有网络参数,从费用估算到块间隔和交易规模,都可以通过选定的代表进行调整。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。

四.PBFT(Practical Byzantine Fault Tolerance)

Practical Byzantine Fault Tolerance,实用拜占庭容错算法。

拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意***,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。这些算法通常以其弹性t作为特征,t表示算法可以应付的错误进程数。很多经典算法问题只有在t小于n/3时才有解,如拜占庭将军问题,其中n是系统中进程的总数。

五.BFT-DPoS

BFT-DPoS,Byzantine Fault Tolerance - Deligated Proof of Stake,带有拜占庭容错的委托股权证明。
EOS的白皮书中,每个见证人出块时全网广播,其他见证人收到新区块后,立即对此区块进行验证,并将验证签名完成的区块立即返回出块见证人,不需等待其他见证人自己出块时再确认。从当前的出块见证人看来,他生产了一个区块,并全网广播,然后陆续收到了其他见证人对此区块的确认,在收到 2/3 见证人确认的瞬间,区块(包括其中的交易)就不可逆了。交易确认时间大大缩短,从 45 秒缩短至 3 秒左右(主要为等待生产区块的时间)。

EOS原来是采用DPoS,为了效率采用PBFT 和 DPOS结合的BFT-DPoS,理论确认速度大大提升。因为EOS在设计之初就提出了选出21个超级节点作为见证人,并负责全网的出块,所以被人诟病缺失了区块链的去中心化精神。实际上,比特币、以太坊这些前辈,经过了前期的发展后,大部分算力已经集中在各大矿池和机构手上了,所以EOS只是提前把这个生态确定下来,并写在台面上,才会有这样的非议。

EOS的这种妥协,其实是兼顾了中心化和效率,是区块链上一个有益的尝试。

区块链主流共识算法

标签:验证   提前   利用   roo   根据   拒绝   nsa   结合   就是   

原文地址:http://blog.51cto.com/13625500/2323477

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!