APP下载

基于信用机制的联盟链Raft+共识算法

2023-07-20杨泽奇史培中

无线互联科技 2023年9期
关键词:区块链

杨泽奇 史培中

摘要:共识算法作为区块链的底层技术之一,其性能对区块链在安全性和效率方面具有重要的影响。Raft共识算法的性能优于其他共识算法,不会造成算力集中和资源浪费等问题。但是,Raft算法随机选择和投票以选取领导者节点的方式,不能保证选取的领导者节点的可靠性。因此,文章在Raft算法的基础上引入动态更新的信用机制,提出了一种基于信用机制的联盟链Raft+共识算法。领导者节点的信用值根据多次生成有效或无效区块的行为进行动态更新,并采用信用层次来评价节点信用,根据阈值选举信用值高的领导者节点。实验表明,Raft+共识算法选取的领导者节点的可靠性比Raft算法的更好,为面向联盟链的制造业和医疗等应用场景提供了共识算法的解决方案。

关键词:共识算法;区块链;Raft;信用机制;联盟链

中图分类号:TP309

文献标志码:A

0 引言

从中本聪发布比特币白皮书的一刻起1,专家学者们就对区块链技术不断研究和发展。区块链的本质是一种去中心化、可溯源、不可篡改的分布式数据库系统。区块链中最重要的问题是分布式节点之间数据的一致性,一般通过设计和实现共识算法来解决2-3。区块链有3种类型,在不同的分类中采用的共识算法也不同。比特币中常采用的是工作量证明(proof of work, Pow)4,联盟链中一般采用的是实用拜占庭容错(practical Byzantine fault tolerance, PBFT)5,私有链中则采用经典的一致性算法,如Raft6,Paxos7。当节点规模增加时,PBFT算法的性能就会受到影响,其效率就会变低。Chen等8提出了一种改进的实用拜占庭容错(IPBFT)共识算法,引入了信用模型和投票机制,根据节点的投票来选择主节点,保证了主节点的可靠性。赖英旭等9使用信用机制对PBFT算法进行改进,降低了节点间通信的次数。涂园超等10为了解决PBFT共识算法的集群中节点数量过多时会导致效率低下的问题,使用信用投票的方法对PBFT算法进行改进,将节点分别进行分类,共识效率得到提高,系统的安全性和可靠性得到了保证。

从上述文献可以看出,引入信用机制的改进共识算法大多是在PBFT共识算法基础上进行改进,然而改进后的PBFT共识算法的时间复杂度较高且存在中心化的问题。Raft算法的共识效率高,时间复杂度低,且受到节点规模的影响小。Leader选举是Raft共识算法的核心,采用节点获得的票数和随机选择Candidate节点的机制进行选举,使选举出的Leader节点具有随机性。Raft 算法具有强领导性,Leader节点的可靠性对整个系统的可靠性有着重要影响。因此,通过改进选举机制选出可靠性较好的Leader节点应用于联盟链中,成为当下学者们研究的重要话题。

针对上述问题,本文提出了一种基于信用机制的Raft+共识算法,其特点在于:(1)对Leader节点的选取机制进行改进。对节点行为进行信用评价,从信用值较高的节点中选取Leader节点,保证选取的Leader节点可靠性较高。(2)在Raft算法的基础上引入信用机制,提出了基于信用机制的联盟链Raft+的共识算法,提高区块链系统的可靠性。

1 共识算法

Raft算法設置了领导者、跟随者和候选者3种角色,简化了算法模型。以下从3个方面来解决选举Leader节点的方式时产生的一致性问题。

(1)Leader选举:若目前的Leader节点出现故障或宕机,Raft共识算法将重新选举出一个Leader节点。

(2)日志复制:Raft算法中Leader从其他节点处接收日志后,不仅要求系统中的其他节点必须复制到该日志,而且Leader节点根据算法一致性要求,将使其他节点的日志与自己的一致。

(3)安全性:状态机安全是保证Raft算法安全性的重中之重。当一个确定的日志条目被节点状态机接收时,则其他节点只能将该日志索引位置应用到相同的指令中。

以下将介绍Raft算法的选举过程,如图1所示。对于刚加入系统的节点,其角色是跟随者。若此时系统存在领导者节点,则刚加入的节点角色仍是跟随者。若此时系统不存在领导者,则会立刻发起新的选举。选举过程中每个节点都可能成为候选者,成为候选者的节点会马上向其他节点发送邀票请求。当某个候选者节点获得的选票数最先超过总节点数的一半时,则该节点成为新的领导者,其余节点停止获取选票并成为跟随者。

2 Raft算法改进方案

2.1 Raft+ 算法思想

本文的改进思想主要是在领导者节点选举过程中引入信用机制,基于信用机制来选取领导者节点,提高Raft共识算法的可靠性。

加入联盟链前,节点都必须通过严格的审核和授权,且加入联盟链的节点行为状态都相对稳定,可以建立信任关系11。信任关系是针对节点在联盟链中生成有效或无效区块的行为进行评价。在联盟链中产生有效区块的节点,其信用值就增加;产生无效区块的节点,其信用值就降低。

2.2 基于信用机制的 Leader 节点选取

2.2.1 信用评估模型

系统中节点都会存储一个节点行为记录表。节点的信用值和判定节点信用值的参考因素会记录在表中,每一个节点都会缓存包括自身在内的所有节点的行为记录表,该表在每一次共识结束后即新区块产生之后进行更新。行为记录表中主要记录的数据如表1所示,从表中可以看出,节点的信用值由节点产生有效区块因素有关。

节点信用记录表:信用区块存储了当前这一轮共识结束后,所有参与共识的节点的信用记录。

本文根据节点的行为将节点分为两种类型:高信任节点和低信任节点。

高信任节点:能够积极参与到共识过程中,及时回应其他节点发来的请求,节点多次生成有效区块,网络通信状况较好。

低信任节点:可能由于网络的原因,节点多次产生无效区块,网络通信状况较差。

节点的信用值是节点可靠性的代表,通过节点在每一轮参与共识的行为计算新的信用值。对节点进行奖惩,是一种对节点的激励机制,使节点更积极地参与共识。通过在 Raft 算法的基础上引入信用机制,促进了节点的积极性,对于联盟链应用于制造业、医疗等商业模式中提供了一种方案。

2.2.2 信用更新机制

定义1(信用层次),Leader 选举通过引入信用机制,对领导者节点的行为进行评估,保证选取的领导者节点的可靠性是较好的。根据计算每个共识节点的信用值,并通过给成为领导者的节点一个信用值阈值来规定其可信范围。

高信任节点:节点多次生成有效区块,其信用值范围为[0.45, 1]。

低信任节点:节点多次产生无效区块,其信用值范围为[0, 0.45)。

定义2(信用值),系统中节点的信用值根据以下公式进行计算。

其中:Ci代表每个节点当前所获得的信用值,信用值范围为[0, 1];i代表每个节点的下標;Cinit代表每个节点的初始信用值,信用值为0.5;T(i)代表每个节点对应奖励或者惩罚的次数;RP(i)代表每个节点所获得的奖励或者受到的惩罚。当领导者节点生成有效区块后,系统会奖励其0.01点信用值;当领导者节点生成无效区块后,系统则惩罚0.02点信用值。

定义3(信用层次动态更新),领导者节点的信用值会根据其生成的有效或无效区块的次数进行动态更新。每个节点的初始信用值都为0.5。当某一领导者节点多次且连续产生有效区块后,其信用值上升到0.45~1,系统会将该节点评估为高信任节点。当该节点多次产生无效区块后,其信用值下降到0~0.45,系统会将该节点评估为低信任节点。节点的信用层次划分是系统对节点是否为可靠性较差的节点的评判标准,信用层次低的节点在后续过程中处于劣势,而信用层次高的节点则更有优势。

当节点刚加入网络中时,信用值初始值都设置为0.5。根据公式(1)可以得出节点的信用值,并且当节点多次产生无效区块以后,该节点的信用值降低且不会被选为领导者。信用值更新和计算的伪代码如表2—3所示。

3 实验结果与分析

实验在单台电脑上进行仿真模拟。操作系统为 Windows11,AMD Ryzen 75 800 H 3.20 GHz CPU和16 G内存上进行的。使用 Python 语言模拟了 Raft+ 共识机制,利用 Python 语言实现了方案模型,集成开发环境为PyCharm。

3.1 不同阈值选取的共识时间

分析节点数量和共识时间之间的关系。系统通过选取不同的阈值,模拟了不同节点数量和不同的有效区块概率下,每个节点达成共识的时间。仿真实验结果如图2—4所示。

图2—4中横坐标为节点数量,纵坐标为节点达成共识平均消耗的时间,节点达成共识的平均时间是总的时间与节点完成共识次数的比值。在实验中,对两种算法在不同节点数量下进行节点共识时间的分析。当节点个数为7个以上时,不同阈值的每个高信任节点达成共识的时间会有明显不同。随着节点数增多时,若阈值选取过大,则共识时间将变长;若阈值选取过小,则节点信任度不高,模拟仿真实验设置的阈值为0.45。在共识过程中,当节点的信用值超过一定阈值时,则该节点具有较高的信任。因此,该节点的类型为高信任节点。

在不同阈值下,改进后的 Raft+ 算法的节点的共识时间比 Raft 算法的共识时间长。Raft+ 算法是基于信用机制计算出节点信用值,从中选取信用值较高的节点作为领导者节点,其具有更高的可靠性。因此,通过信用机制选取的领导者节点负责产生区块可以减少出错的可能性,提高整体系统的可靠性。

3.2 不同阈值选取的共识成功率

分析节点数量和共识成功率之间的关系。系统通过选取不同的阈值,模拟了不同节点数量和不同的有效区块概率下,节点达成共识的成功率。仿真实验结果如图5—7所示。

图5—7中横坐标为节点数量,纵坐标为节点达成共识的成功率,节点的共识成功率是成功共识次数与总的共识次数的比值。在实验中,对两种算法在不同节点数量下的节点共识成功率进行分析。在不同阈值下,改进后的 Raft+ 共识算法的共识成功率比 Raft 算法低。Raft+ 算法是基于信用机制选取领导者节点的。当节点的信用值低于阈值时,该节点就不能成为领导者节点,造成共识失败。共识成功的节点则具有更高的信用值。因此,虽然Raft+ 共识算法的共识成功率下降,但是节点具有更高的可靠性。

3.3 信用值对比

分析节点获得的信用值。系统通过模拟了不同节点数量和不同的有效区块概率下,节点获得的信用值。仿真实验结果如图8—10所示。

图8—10中,横坐标为节点数量,纵坐标为节点获得的信用值,节点的信用值是根据节点信用模型计算得到的。在实验中,对两种算法在不同节点数量下的节点信用值进行分析。不同节点数量下,改进后的Raft+共识算法的节点信用值比Raft算法的节点信用值更高。Leader节点具有更高的可靠性。因此,其产生的区块出错的可能性更低,提高了系统整体的可靠性。

4 結语

联盟链中对于节点的可靠性要求很高,若选举出的领导者节点多次生成无效区块,会严重影响联盟链的可靠性。本文针对Raft共识算法中存在可能随机选取的主节点可靠性不足难以满足联盟链实际应用需求等问题,在Raft共识算法的基础上引入动态更新的信用机制,提出了基于信用机制的联盟链Raft+共识算法。该算法根据节点产生有效区块和无效区块的行为来进行信用值的动态更新,以选取信用值较高的节点作为Leader节点,可以保证Leader节点具有较好的可靠性。实验仿真结果表明,Raft+ 共识算法时延增加,共识成功率下降,Leader节点的平均信用值比Raft算法Leader节点的平均信用值要高。因此,Raft+ 算法提供了一种应用于制造业和医疗等场景的联盟链方案。

参考文献

[1]NAKAMOTO S.Bitcoin:a peer-to-peer electronic cashsystem[EB/OL].(2008-10-31)[2019-08-08].https://bitcoin.org/bit-coin.pdf.

[2]ARNOLD R,LONGLEY D.Continuity:a deterministic byzantine fault tole-rant asynchronous consensus algorithm [J].Computer Networks,2021(11):108431-108443.

[3]邓小鸿,王智强,李娟,等.主流区块链共识算法对比研究[J].计算机应用研究,2022(1):1-8.

[4]MENEGHETTI A,SALA M,TAUFER D.A survey on pow-based consensus [J].Annals of Emerging Technologies in Computing,2020(1):8-18.

[5]LI Y,WANG Z,FAN J,et al.An extensible consensus algorithm based on PBFT[C].New York:IEEE Press,2019.

[6]ONGARO D,OUSTERHOUT J.In search of an understandable consensus algorithm[C].Philadelphia:USENIX Association,2014.

[7]LAMPORT L.Fast paxos[J].Distributed Computing,2006(2):79-103.

[8]CHEN J,ZHANG X,SHANGGUAN P.Improved PBFT algorithm based on reputation and voting mechanism[C].Bristol:Journal of Physics:Conference Series.IOP Publishing,2020.

[9]赖英旭,薄尊旭,刘静.基于改进PBFT算法防御区块链中sybil攻击的研究[J].通信学报,2020(9):104-117.

[10]涂园超,陈玉玲,李涛,等.基于信誉投票的PBFT改进方案[J].应用科学学报,2021(1):79-89.

[11]QIAN W N,SHAO Q F,ZHU Y C,et al.Research problems and methods in blockchain andtrusted data management [J].Journal of Software,2018(1):150-159.

(编辑 沈 强)

Consortium chain Raft+ consensus algorithm based on credit mechanism

Yang Zeqi, Shi Peizhong*

(Jiangsu Institute of Technology, Changzhou 213001, China)

Abstract: As one of the underlying technologies of the blockchain, the consensus algorithm has an important impact on the security and efficiency of the blockchain. The performance of the Raft consensus algorithm is superior to other consensus algorithms, and it will not cause problems such as concentration of computing power and waste of resources. However, the Raft algorithm randomly selects and votes to select the leader node, which cannot guarantee the reliability of the selected leader node. Therefore, this paper introduces a dynamically updated credit mechanism on the basis of the Raft algorithm, and proposes a credit mechanism-based consortium chain Raft+ consensus algorithm. The credit value of the leader node is dynamically updated according to the behavior of generating valid or invalid blocks multiple times, and the credit level is used to evaluate the node credit, and the leader node with a high credit value is elected according to the threshold. Experiments show that the reliability of the leader node selected by the Raft+ consensus algorithm is better than that of the Raft algorithm, which provides a consensus algorithm solution for application scenarios such as alliance chain-oriented manufacturing and medical care.

Key words: consensus algorithm; blockchain; Raft; credit mechanism; alliance chain

猜你喜欢

区块链
基于区块链技术的海上散装液体化学品运输安全监管方法
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
用“区块链”助推中企走出去