主页 > imtoken官网下载 > 共识算法|四种常见共识算法详解

共识算法|四种常见共识算法详解

imtoken官网下载 2023-09-03 05:07:57

区块链系统采用去中心化设计,网络节点分散且相互独立。 因此,由不同节点组成的系统必须依赖一个系统来维护系统的数据一致性,并对提供区块链服务的节点进行奖励,对恶意节点进行惩罚。

这个系统的建立需要依赖于一套方法和规则,即谁获得一个区块的包装权(或者记账权),获得区块的奖励或者如何定义谁是作恶者,什么是作恶者他会受到什么样的惩罚。 惩罚,这套方法和规则就是共识机制。

现在区块链中使用的共识算法有很多种,比较常用的有:工作量证明(PoW)算法、权益证明(PoS)算法、委托权益证明(Delegated Proof of Stake比特币pow算法,DPoS)算法、实用拜占庭容错 (PBFT) 算法。

1 工作量证明算法

PoW算法是一种防止滥用分布式服务资源和拒绝服务攻击的机制。

PoW 算法需要节点进行复杂的计算,消耗适量的时间和资源,计算结果可以被其他节点快速检查,以时间和精力作为保证,确保服务和资源被真正需要使用。 比特币最早使用 PoW 算法来验证交易并向网络广播区块,现在很多区块链也使用 PoW 算法。 PoW算法已经成为一种广泛使用的共识算法。

比特币是什么算法_比特币pow算法_比特币挖矿的算法

矿工执行哈希操作。 这个过程消耗算力计算出“正确的结果”,并广播到全网。 其他矿工或普通节点同步区块并验证其是否正确。

比特币是什么算法_比特币pow算法_比特币挖矿的算法

节点“挖矿”的过程

PoW 算法中最基本的技术原理是使用哈希算法。 假设计算哈希值Hash(r),如果原始数据为r(raw)比特币pow算法,则运算结果为R(Result)。

R =哈希(r)

哈希函数Hash()的特点是对于任意输入值r,都会得到结果R,不能从R推导出r。当输入的原始数据r改变1位时,结果R值就完全改变。 在比特币的PoW算法中,引入算法难度d和随机值n得到如下公式:

比特币是什么算法_比特币pow算法_比特币挖矿的算法

Rd = Hash(r+n)

这个公式要求当填入一个随机值n时,计算结果Rd的前d个字节必须为0。由于哈希函数结果的未知性,每个矿工都需要进行大量的计算才能得到正确的计算结果,并将计算结果广播到全网后,其他节点只需进行哈希运算即可验证。 PoW 算法使用这种方式允许计算消耗资源,验证只需要一次。

2 权益证明算法

PoS算法需要节点验证者质押一定数量的资金才有资格进行挖矿和打包,区域链系统在选择打包节点时采用随机方式。 当节点质押的资金越多,被选中打包区块的概率就越大。

例如,如果一个节点拥有整个区块链系统的 5%,那么这个节点将有 5% 的概率在下一个区块生成周期中产生一个区块。

比特币挖矿的算法_比特币是什么算法_比特币pow算法

比特币是什么算法_比特币pow算法_比特币挖矿的算法

节点通过PoS算法出块的过程

节点通过 PoS 算法出块的过程如下: 普通节点要成为出块节点,首先要质押自己的资产。 当轮到它出块时,它会打包这个块并向全网广播。 验证区块的合法性。

3 DPoS算法

DPoS 算法与 PoS 算法类似,同样使用股份和股权质押。

但不同的是,DPoS算法采用委托质押的方式,类似于全民选举代表的方式,选出N个超级节点进行记录和出块。

比特币pow算法_比特币挖矿的算法_比特币是什么算法

比特币挖矿的算法_比特币pow算法_比特币是什么算法

选民为某个节点投票。 如果某个节点被选为记账节点,那么记账节点在获得区块奖励后,往往可以使用任何方式来奖励自己的选民。

这N个记账节点会轮流出块,节点之间会互相监督。 如果他们作恶,抵押物将被扣除。

4 PBFT算法

PBFT算法解决了拜占庭将军问题。

拜占庭是古东罗马帝国的首都。 为了防御,每个封地都驻扎着一支由一名将军率领的军队,将军们只能通过信使传递消息。 在战争中,所有将领必须达成共识,才能决定是否并肩作战。

但是,军队内部可能会出现叛徒,这些人会影响将领达成共识。 拜占庭将军问题指的是当已知某些将军是叛徒时,剩余的将军如何达成共识决策的问题。

比特币pow算法_比特币是什么算法_比特币挖矿的算法

1982 年,Leslie Lamport 等人。 在论文 The Byzantine Generals Problem 中证明,当将军总数大于 3f 且叛徒数量小于等于 f 时,忠诚的将军可以就命令达成共识,即 3f +1≤n,算法复杂度是 O(nf +1)。

米格尔·卡斯特罗(Miguel Castro)和芭芭拉·里斯科夫(Barbara Liskov)在1999年发表了论文Practical Byzantine Fault Tolerance,提出了PBFT算法。 该算法的容错量也满足3f+1≤n,算法复杂度为O(n2)。

该算法可以提供高性能计算,使系统每秒可以处理数千个请求,比旧系统更快。

比特币pow算法_比特币挖矿的算法_比特币是什么算法

PBFT算法的共识过程

PBFT算法的共识过程如下:客户端(Client)发起消息请求(request),广播转发给各个副本节点(Replica),其中一个主节点(Leader)发起提议消息pre -准备并广播。 其他节点拿到原始消息,校验完成后发送准备消息。 每个节点收到2f+1条prepare消息,即认为自己准备就绪,发送commit消息。 当节点收到 2f+1 条提交消息时,我们认为该消息已被确认(回复)。