CN114844891B - 基于Raft算法的区块链共识方法及*** - Google Patents
基于Raft算法的区块链共识方法及*** Download PDFInfo
- Publication number
- CN114844891B CN114844891B CN202210420723.1A CN202210420723A CN114844891B CN 114844891 B CN114844891 B CN 114844891B CN 202210420723 A CN202210420723 A CN 202210420723A CN 114844891 B CN114844891 B CN 114844891B
- Authority
- CN
- China
- Prior art keywords
- leader
- candidate
- node
- log
- follower
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000010076 replication Effects 0.000 claims abstract description 42
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000008859 change Effects 0.000 claims abstract description 10
- 230000004044 response Effects 0.000 claims description 18
- 230000000977 initiatory effect Effects 0.000 claims description 13
- 206010000117 Abnormal behaviour Diseases 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 230000005856 abnormality Effects 0.000 claims description 4
- 238000005266 casting Methods 0.000 claims description 4
- 230000003362 replicative effect Effects 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 230000006378 damage Effects 0.000 abstract description 6
- 230000007246 mechanism Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了基于Raft算法的区块链共识方法及***,属于区块链共识技术领域,本发明要解决的技术问题为无法规避作恶节点带来的危害,消除了原有Raft算法因为集群扩容可能导致***的安全隐患,采用的技术方案为:该方法是在领导者、跟随者以及候选人节点的基础上新增观察者节点,集群初始状态对除观察者节点外的所有节点设置随机超时时间;在领导者选举过程中,观察者对候选人进行监控,识别候选人是否为作恶节点,并对领导者的产生具有最终决定权;当领导者产生后,对包括观察者在内的所有节点进行日志复制RPC消息,观察者不反馈信息;在集群变更过程中,观察者将新日志项发送给领导者,领导者将该新日志项广播,并将该新日志项放入本地状态机。
Description
技术领域
本发明涉及区块链共识技术领域,具体地说是一种基于Raft算法的区块链共识方法及***。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain)本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,用于验证其信息的有效性(防伪)和生成下一个区块。
目前,区块链常用的共识机制包括POW机制、POS机制以及DPOS机制。上述机制在资源消耗、安全性以及共识时间各存在弊端。例如,POW机制的资源消耗较大,每次达成共识需要全网共同参与运算,需要耗费一定的计算时间,性能效率较低;POS机制和DPOS机制根据用户持有的权重来决定产生区块的概率,但并未维护区块链***本身的生态及安全。
Raft算法是一种一致性共识算法,Raft算法强调容易理解,而且容易工程化实现,具有高效率等优点。Raft算法通过选举领导者,领导者再发送心跳消息和日志复制实现一致性。但是传统的Raft算法只能容忍故障节点,不能避免作恶节点带来的危害,因此如果集群中出现作恶节点的话,再使用传统的Raft算法将会严重影响性能,甚至在作恶节点的扰乱下严重危害***的安全性。
传统的Raft算法在集群扩容上也略显乏力,由于领导者要得到大多数选票,所以在扩容的时候可能会发生***,导致了***工作的不稳定性增加。
发明内容
本发明的技术任务是提供一种基于Raft算法的区块链共识方法及***,来解决无法规避作恶节点带来的危害,消除了原有Raft算法因为集群扩容可能导致***的安全隐患的问题。
本发明的技术任务是按以下方式实现的,一种基于Raft算法的区块链共识方法,该方法是在领导者、跟随者以及候选人节点的基础上新增观察者节点,集群初始状态对除观察者节点外的所有节点设置随机超时时间;在领导者选举过程中,观察者对候选人进行监控,识别候选人是否为作恶节点,并对领导者的产生具有最终决定权;当领导者产生后,对包括观察者在内的所有节点进行日志复制RPC消息,观察者不反馈信息;在集群变更过程中,观察者将新日志项发送给领导者,领导者将该新日志项广播,并将该新日志项放入本地状态机。
作为优选,该方法具体如下:
集群初始化:最开始除了一个固有的观察点N0外,所有节点都是跟随者;
选举领导者:通过跟随者未收到心跳信息触发候选人的请求投票RPC进行领导者选举;
识别作恶节点:在候选者发起请求投票RPC时对其进行作恶节点识别,以减轻性能压力并且保障集群安全;
复制日志:日志是由多个日志项组成,每个日志项由指令、索引值及任期编号构成,形式为:
上式表示日志由多个日志项组成;Journali表示日志;表示日志项;/>表示索引值;TermNumj表示任期编号;/>表示指令;
关于成员变更。
作为优选,跟随者用于接受和处理来自领导者的消息,当领导者心跳信息T0超时时,推荐自己当候选人;跟随者节点的形式为:Ni<Nodei,TermNumj,Ti,Votei,Journali>;其中,1≤i≤n;j=0,1,2…;Votei=0,1;n为初始状态集群中的节点数目;Journali为日志;Votei初始值为1,Ti表示为每个跟随者节点设置的一个随机超时时间;
候选人用于向其它节点发送请求投票RPC消息,当赢得大多数选票时成为领导者;
领导者用于处理写请求,管理日志复制和发送心跳信息T0,同时集群中只能有一个领导者;
观察者用于在候选者发起请求投票RPC时,识别其是否为作恶节点,并辅助集群扩容;其中,将观察者视为可信节点,形式为:W<TermNumj+1,Wvote,Journalj+1>,以避免观察者角色因自身问题带来的不可靠,借此提高***稳定性,减少外界攻击对***带来的危害;W节点的TermNum和Journal同步领导者的目录项,Wvote初始值为1,当判断候选人Ci为作恶节点后将其置0。
作为优选,选举领导者具体如下:
最开始集群中没有领导者,当任意一个节点的超时时间Ti最先到达,并且在这一过程中未收到来自领导者的心跳信息T0,则将使自己的任期编号TermNumj加一,使自己成为候选人Ci<i,Votes,TermNumj+1,Journali>;向自己投一张选票并且向其它所有节点发起请求投票RPC,公式如下:
TermNumj+1=TermNumj+1;
Votes=0+1;
其中,TermNumj表示上一个任期编号,默认值为0;Votes默认值为0,当一个跟随者Ni成为候选人Ci后,Votes将获取来自Ci的一张选票,即自增加一;
当其它跟随者收到来自任期编号更大的节点的投票请求,且自己没有在候选人的任期编号内投票,则跟随者结点将把选票投给发起请求投票RPC消息的候选人节点,随后投票的跟随者自增自己的任期编号与所投票的候选人一致,具体如下:
Votes+Voteb;
Voteb=0;
Ca<a,Votes,TermNumj+1,Journala>表示候选人;Nb<b,TermNumj,Tb,Voteb,Journalb>表示跟随者节点;Votes+Voteb表示跟随者对候选人投票;Voteb表示跟随者拥有的选票;候选人向跟随者发起请求投票RPC,跟随者对该候选人投票,跟随者的选票清空;
若一个候选人节点Ci<i,Votes,TermNumj+1>在一个超时时间Ti内赢得了大多数选票,则将在获得观察者投票后成为该任期编号即本届任期内的新领导者Li,公式如下:
上式表示选举时间不能超过一个超时时间,候选者获得的所有选票必须大于所有跟随者节点数目的50%以上,且必须获得观察者节点的选票;Votes表示该候选者目前获得的票数;Votei表示投票的跟随者的选票;t表示选举的时间;Ti表示一个超时时间;n表示跟随者节点的数量;Wvote表示观察者节点的选票;
当该新领导者当选后,将以Ti时间周期性的发送心跳信息,阻止其它节点发起新选举。
作为优选,选举规则具体如下:
①、领导者在任期间周期性地向所有节点发送心跳信息,以告知跟随者和观察者其领导者的身份,阻止跟随者成为候选人而发起的新一轮选举;
②、若任一跟随者节点在一个随机超时时间内未收到来自领导者的心跳信号,则将推举自己成为候选者,向其它节点发起请求投票RPC消息;
③、在一个任期内只能同时存在一位领导者;
④、在一轮投票选举中,候选者将选票投给自己,其它节点按照先来先投的顺序进行投票,而且跟随者在一轮投票中有且只有一张选票;
⑤、日志完整性,即节点日志项最后一条记录对应的任期编号值的大小;日志完整性高的跟随者Nb拒绝投票给日志完整性低的候选人Ca,具体如下:
an<bn;
上式表示当候选者向跟随者发起RPC投票请求后,若该跟随者的任期编号值大于该候选者的任期编号值,则跟随者会拒绝向该候选者投票;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Nb<b,TermNumj,Tb,Voteb,Journalb>表示还没有投票的跟随者节点;Journalb表示某一跟随者节点的日志;Journala表示发起投票RPC请求的候选者节点的日志;an表示候选者节点日志索引的下标;bn表示跟随者节点日志索引的下标;
⑥、对于候选人,即使其获得了大多数选票(大多数选票是指超过1/2选票时),也要获得观察者节点的特殊选票后才能成为领导者;
领导者任期规则具体如下:
①、任期表示在一个领导者存在的周期,用任期编号表示目前所在的任期;
②、当跟随者等待心跳时间超时后,使自己成为候选人时会将自己的任期编号加一;
③、当一个节点发现自己的任期编号比其它节点小,将使自己的任期编号与最大值相同;
④、当一个领导人或候选人发现自己的任期编号比其他节点小,则将立即恢复跟随者身份;
⑤、一个节点收到了一个比自身任期编号小的任期编号值请求,则直接拒绝该请求。
作为优选,识别作恶节点具体如下:
在集群中设置一个新角色观察者,当候选人发起请求投票RPC消息时,观察者将监测该候选人节点在执行过程中是否存在异常行为:
若监测到异常行为,则观察者将不会给候选人投票并且广播该候选人的任期编号使所有节点都与其保持一致,再开始下一轮投票;
若在候选人投票过程中未发现其存在异常行为,则观察者节点将在其获得大多数选票后为其投票,具体如下:
上述式子表示在投票选举过程中,观察者节点会检测候选者节点,如果它出现异常就不为其投票,并将其任期编号广播给所有跟随者节点;如果没出现异常就为其投票;W<TermNumj+1,Wvote,Journalj+1>表示观察者节点;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Wvote表示观察者节点的选票;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者节点。
作为优选,复制日志具体如下:
领导者接收到客户端请求后,基于客户端请求中的指令,创建一个新的日志项,并附加到本地日志中;
通过日志复制RPC消息,将日志项复制到其它服务器上;
判断领导者是否收到复制成功的相应:
当领导者收到大多数的复制成功响应,则将把日志项应用到领导者对应的状态机,并返回成功给客户端;
当领导者未收到复制成功相应,则领导者将返回错误给客户端;
当跟随者接收到心跳消息或者新的日志复制RPC消息后,若跟随者发现领导者已经提交了任意一条日志项但自己未应用,则跟随者将把这条日志项应用到本地的状态机上,具体如下:
上述公式表示,当领导者收到来自客户端的日志复制请求后,基于请求中的指令创建一个新的日志项并附加到本地日志中,然后通过发送日志复制RPC将新日志复制到跟随者中,当跟随者成功复制日志后向领导者发送复制成功相应,当领导者收到超过1/2的节点复制成功响应时,则将把日志项应用到领导者对应的状态机,并返回成功给客户端;Client表示客户端;Lb<b,TermNumj+1,Tb,Journalb>表示领导者节点;Journalb表示领导者的日志;表示新附加的日志项;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者;Cnt表示领导者收到的复制成功响应数量;FSM表示本地状态机;
日志的一致性是指领导者通过强制跟随者复制自己的日志项实现日志的一致性,具体如下:
领导者通过日志复制RPC消息的一致性检查,找到跟随者节点上与自己相同日志项的最大索引值;
领导者强制跟随者更新覆盖不一致的日志项,实现日志的一致;
领导者针对每一个跟随者进行单独的一致性检查。
更优地,关于成员变更具体如下:
使用观察者节点向领导者发送新配置的日志项,领导者将此新配置日志项中自己缺失的部分整合到自己的日志项内;
领导者向集群进行广播新日志项,当收到大多数复制成功响应后,将领导者新配置的日志项提交到本地状态机,完成观察者集群辅助节点成员变更,具体如下:
上式表示当要扩容集群时,观察者节点先更新自己的日志,然后通过日志复制RPC通知领导者复制观察者的日志,然后领导者再向跟随者发送日志复制RPC,将新的日志复制到跟随者节点中;{NewNi}表示要新增的节点,W<TermNumj+1,Wvote,Journalj+1>表示观察者;Lb<b,TermNumj+1,Tb,Journalj+1,Cnt>表示领导者;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者。
一种基于Raft算法的区块链共识***,该***包括,
初始化模块,用于集群初始化,即设定最开始除了一个固有的观察点N0外,所有节点都是跟随者;
选举模块,用于通过跟随者未收到心跳信息触发候选人的请求投票RPC进行领导者选举;
识别模块,用于在候选者发起请求投票RPC时对其进行作恶节点识别,以减轻性能压力并且保障集群安全;
复制模块,用于基于客户端请求中的指令,创建一个新的日志项,并附加到本地日志中,然后通过日志复制RPC消息,将日志项复制到其它服务器上;
变更模块,用于使用观察者节点向领导者发送新配置的日志项,领导者将此新配置日志项中自己缺失的部分整合到自己的日志项内,再通过领导者向集群进行广播新日志项,当收到大多数复制成功响应后,将领导者新配置的日志项提交到本地状态机,完成观察者集群辅助节点成员变更。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如上述的基于Raft算法的区块链共识方法。
本发明的基于Raft算法的区块链共识方法及***具有以下优点:
(一)本发明新增了观察者节点,可以在新领导者产生之前判断其是否为作恶节点,并对领导者的产生具有最终决定权;观察者节点只在选举过程中工作,而且只监测一个节点,这样可以在最大程度上提高性能减少对资源的消耗,同时又解决了原有Raft算法对无法筛查作恶节点的安全隐患;
(二)本发明实现了观察者辅助节点成员变更,即使用新增的观察者节点,解决了在原有Raft算法添加新节点集群时可能出现多个领导者的风险;
(三)本发明在Raft原有三种节点的基础上新增一类观察者节点观察者节点在候选人发起请求投票RPC的过程中,对其进行监控,如果发现其为作恶节点,那么观察者将不对候选人投票,候选人得不到观察者的投票那么就不能成为领导者,即原有算法的基础上假设一个固有可信节点,用其辅助进行作恶节点识别和在集群扩容时防止***;
(四)本发明在原有的基础上新增了观察者节点,在领导者、跟随者、候选人节点的交互环节针对作恶节点识别、集群扩容,提出了新的方法,解决了原有算法无法规避作恶节点带来的危害,消除了原有算法因为集群扩容可能导致***的安全隐患;
(五)本发明在候选者发起请求投票RPC时对其进行作恶节点识别,以减轻性能压力并且保障集群安全。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于Raft算法的区块链共识方法的流程框图;
附图2为复制日志的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的基于Raft算法的区块链共识方法及***作以下详细地说明。
实施例1:
如附图1所示,本发明的基于Raft算法的区块链共识方法,该方法是在领导者、跟随者以及候选人节点的基础上新增观察者节点,集群初始状态对除观察者节点外的所有节点设置随机超时时间;在领导者选举过程中,观察者对候选人进行监控,识别候选人是否为作恶节点,并对领导者的产生具有最终决定权;当领导者产生后,对包括观察者在内的所有节点进行日志复制RPC消息,观察者不反馈信息;在集群变更过程中,观察者将新日志项发送给领导者,领导者将该新日志项广播,并将该新日志项放入本地状态机;具体如下:
S1、集群初始化:最开始除了一个固有的观察点N0外,所有节点都是跟随者;
S2、选举领导者:通过跟随者未收到心跳信息触发候选人的请求投票RPC进行领导者选举;
S3、识别作恶节点:在候选者发起请求投票RPC时对其进行作恶节点识别,以减轻性能压力并且保障集群安全;
S4、复制日志:日志是由多个日志项组成,每个日志项由指令、索引值及任期编号构成,形式为:
其中,该式表示日志由多个日志项组成,日志项由索引值、任期编号、指令构成;Journali表示通道i的日志;表示该日志的第n个日志项的索引值;TermNumj表示上一个任期编号;/>表示该日志第n个日志项的指令;
S5、关于成员变更。
本实施例中的跟随者用于接受和处理来自领导者的消息,当领导者心跳信息T0超时时,推荐自己当候选人;跟随者节点的形式为:Ni<Nodei,TermNumj,Ti,Votei,Journali>;其中,1≤i≤n;j=0,1,2…;Votei=0,1;n为初始状态集群中的节点数目;Journali为日志;Votei初始值为1,Ti表示为每个跟随者节点设置的一个随机超时时间;
候选人用于向其它节点发送请求投票RPC消息,当赢得大多数选票时成为领导者;
领导者用于处理写请求,管理日志复制和发送心跳信息T0,同时集群中只能有一个领导者;
观察者用于在候选者发起请求投票RPC时,识别其是否为作恶节点,并辅助集群扩容;其中,将观察者视为可信节点,形式为:W<TermNumj+1,Wvote,Journalj+1>,以避免观察者角色因自身问题带来的不可靠,借此提高***稳定性,减少外界攻击对***带来的危害;W节点的TermNum和Journal同步领导者的目录项,Wvote初始值为1,当判断候选人Ci为作恶节点后将其置0。
本实施例步骤S2中的选举领导者具体如下:
S201、最开始集群中没有领导者,当任意一个节点的超时时间Ti最先到达,并且在这一过程中未收到来自领导者的心跳信息T0,则将使自己的任期编号TermNumj加一,使自己成为候选人Ci<i,Votes,TermNumj+1,Journali>;向自己投一张选票并且向其它所有节点发起请求投票RPC,公式如下:
TermNumj+1=TermNumj+1;
Votes=0+1;
其中,TermNumj表示上一个任期编号,默认值为0;Votes默认值为0,当一个跟随者Ni成为候选人Ci后,Votes将获取来自Ci的一张选票,即自增加一;
S202、当其它跟随者收到来自任期编号更大的节点的投票请求,且自己没有在候选人的任期编号内投票,则跟随者结点将把选票投给发起请求投票RPC消息的候选人节点,随后投票的跟随者自增自己的任期编号与所投票的候选人一致,具体如下:
Votes+Voteb:
Voteb=0;
上述式子表示,候选者节点a向其它任期编号为a任期编号减一的跟随者节点发送请求投票RPC消息,然后跟随者节点对该候选者节点投票,使跟随者节点的选票减一,候选者节点获得的选票加一;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Nb<b,TermNumj,Tb,Voteb,Journalb>表示还没有投票的跟随者节点;Votes表示该候选者目前获得的票数;Voteb表示该跟随者节点所投出的选票;
S203、若一个候选人节点Ci<i,Votes,TermNumj+1>在一个超时时间Ti内赢得了大多数选票,则将在获得观察者投票后成为该任期编号即本届任期内的新领导者Li,公式如下:
上式表示,选举时间不能超过一个超时时间,候选者获得的所有选票必须大于所有跟随者节点数目的50%以上,且必须获得观察者节点的选票;Votes表示该候选者目前获得的票数;Votei表示投票的跟随者的选票;t表示选举的时间;Ti表示一个超时时间;n表示跟随者节点的数量;Wvote表示观察者节点的选票;
S204、当该新领导者当选后,将以Ti时间周期性的发送心跳信息,阻止其它节点发起新选举。
本实施例中的选举规则具体如下:
①、领导者在任期间周期性地向所有节点发送心跳信息,以告知跟随者和观察者其领导者的身份,阻止跟随者成为候选人而发起的新一轮选举;
②、若任一跟随者节点在一个随机超时时间内未收到来自领导者的心跳信号,则将推举自己成为候选者,向其它节点发起请求投票RPC消息;
③、在一个任期内只能同时存在一位领导者;
④、在一轮投票选举中,候选者将选票投给自己,其它节点按照先来先投的顺序进行投票,而且跟随者在一轮投票中有且只有一张选票;
⑤、日志完整性,即节点日志项最后一条记录对应的任期编号值的大小;日志完整性高的跟随者Nb拒绝投票给日志完整性低的候选人Ca,具体如下:
an<bn;
上式表示当候选者向跟随者发起RPC投票请求后,若该跟随者的任期编号值大于该候选者的任期编号值,则跟随者会拒绝向该候选者投票;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Nb<b,TermNumj,Tb,Voteb,Journalb>表示还没有投票的跟随者节点;Journalb表示某一跟随者节点的日志;Journala表示发起投票RPC请求的候选者节点的日志;an表示候选者节点日志索引的下标;bn表示跟随者节点日志索引的下标;
⑥、对于候选人,即使其获得了大多数选票(大多数选票是指超过1/2选票时),也要获得观察者节点的特殊选票后才能成为领导者;
本实施例中的领导者任期规则具体如下:
①、任期表示在一个领导者存在的周期,用任期编号表示目前所在的任期;
②、当跟随者等待心跳时间超时后,使自己成为候选人时会将自己的任期编号加一;
③、当一个节点发现自己的任期编号比其它节点小,将使自己的任期编号与最大值相同;
④、当一个领导人或候选人发现自己的任期编号比其他节点小,则将立即恢复跟随者身份;
⑤、一个节点收到了一个比自身任期编号小的任期编号值请求,则直接拒绝该请求。
本实施例步骤S3中的识别作恶节点具体如下:
在集群中设置一个新角色观察者,当候选人发起请求投票RPC消息时,观察者将监测该候选人节点在执行过程中是否存在异常行为:
①、若监测到异常行为,则观察者将不会给候选人投票并且广播该候选人的任期编号使所有节点都与其保持一致,再开始下一轮投票;
②、若在候选人投票过程中未发现其存在异常行为,则观察者节点将在其获得大多数选票后为其投票,具体如下:
上述式子表示在投票选举过程中,观察者节点会检测候选者节点,如果它出现异常就不为其投票,并将其任期编号广播给所有跟随者节点;如果没出现异常就为其投票;W<TermNumj+1,Wvote,Journalj+1>表示观察者节点;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Wvote表示观察者节点的选票;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者节点;
如附图2所示,本实施例步骤S4中的复制日志具体如下:
S401、领导者接收到客户端请求后,基于客户端请求中的指令,创建一个新的日志项,并附加到本地日志中;
S402、通过日志复制RPC消息,将日志项复制到其它服务器上;
S403、判断领导者是否收到复制成功的相应:
①、当领导者收到大多数的复制成功响应,则将把日志项应用到领导者对应的状态机,并返回成功给客户端;
②、当领导者未收到复制成功相应,则领导者将返回错误给客户端;
S404、当跟随者接收到心跳消息或者新的日志复制RPC消息后,若跟随者发现领导者已经提交了任意一条日志项但自己未应用,则跟随者将把这条日志项应用到本地的状态机上,具体如下:
上述公式表示,当领导者收到来自客户端的日志复制请求后,基于请求中的指令创建一个新的日志项并附加到本地日志中,然后通过发送日志复制RPC将新日志复制到跟随者中,当跟随者成功复制日志后向领导者发送复制成功相应,当领导者收到超过1/2的节点复制成功响应时,则将把日志项应用到领导者对应的状态机,并返回成功给客户端;Client表示客户端;Lb<b,TermNumj+1,Tb,Journalb>表示领导者节点;Journalb表示领导者的日志;表示新附加的日志项;Ni<i,TermNumj,Ti,Votesi,Journali>表示跟随者;Cnt表示领导者收到的复制成功响应数量;FSM表示本地状态机。
本实施例中的日志的一致性是指领导者通过强制跟随者复制自己的日志项实现日志的一致性,具体如下:
(1)、领导者通过日志复制RPC消息的一致性检查,找到跟随者节点上与自己相同日志项的最大索引值;
(2)、领导者强制跟随者更新覆盖不一致的日志项,实现日志的一致;
(3)、领导者针对每一个跟随者进行单独的一致性检查。
本实施例步骤S5中的关于成员变更具体如下:
S501、使用观察者节点向领导者发送新配置的日志项,领导者将此新配置日志项中自己缺失的部分整合到自己的日志项内;
S502、领导者向集群进行广播新日志项,当收到大多数复制成功响应后,将领导者新配置的日志项提交到本地状态机,完成观察者集群辅助节点成员变更,具体如下:
上式表示当要扩容集群时,观察者节点先更新自己的日志,然后通过日志复制RPC通知领导者复制观察者的日志,然后领导者再向跟随者发送日志复制RPC,将新的日志复制到跟随者节点中;{NewNi}表示要新增的节点;W<TermNumj+1,Wvote,Journalj+1>表示观察者;Lb<b,TermNumj+1,Tb,Journalj+1,Cnt>表示领导者;Ni<i,TermNumj,Ti,vOTEi,Journali>表示跟随者。
实施例2:
本实施例提供了一种基于Raft算法的区块链共识***,该***包括,
初始化模块,用于集群初始化,即设定最开始除了一个固有的观察点N0外,所有节点都是跟随者;
选举模块,用于通过跟随者未收到心跳信息触发候选人的请求投票RPC进行领导者选举;
识别模块,用于在候选者发起请求投票RPC时对其进行作恶节点识别,以减轻性能压力并且保障集群安全;
复制模块,用于基于客户端请求中的指令,创建一个新的日志项,并附加到本地日志中,然后通过日志复制RPC消息,将日志项复制到其它服务器上;
变更模块,用于使用观察者节点向领导者发送新配置的日志项,领导者将此新配置日志项中自己缺失的部分整合到自己的日志项内,再通过领导者向集群进行广播新日志项,当收到大多数复制成功响应后,将领导者新配置的日志项提交到本地状态机,完成观察者集群辅助节点成员变更。
实施例3:
本实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的基于Raft算法的区块链共识方法。具体地,可以提供配有存储介质的***或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该***或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作***等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到***计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (7)
1.一种基于Raft算法的区块链共识方法,其特征在于,该方法是在领导者、跟随者以及候选人节点的基础上新增观察者节点,集群初始状态对除观察者节点外的所有节点设置随机超时时间;在领导者选举过程中,观察者对候选人进行监控,识别候选人是否为作恶节点,并对领导者的产生具有最终决定权;当领导者产生后,对包括观察者在内的所有节点进行日志复制RPC消息,观察者不反馈信息;在集群变更过程中,观察者将新日志项发送给领导者,领导者将该新日志项广播,并将该新日志项放入本地状态机;具体如下:
集群初始化:最开始除了一个固有的观察点N0外,所有节点都是跟随者;
选举领导者:通过跟随者未收到心跳信息触发候选人的请求投票RPC进行领导者选举;具体如下:
最开始集群中没有领导者,当任意一个节点的超时时间Ti最先到达,并且在这一过程中未收到来自领导者的心跳信息T0,则将使自己的任期编号TermNumj加一,使自己成为候选人Ci<i,Votes,TermNumj+1,Journali>;向自己投一张选票并且向其它所有节点发起请求投票RPC,公式如下:
TermNumj+1=TermNumj+1;
Votes=0+1;
其中,TermNumj表示上一个任期编号,默认值为0;Votes默认值为0,当一个跟随者Ni成为候选人Ci后,Votes将获取来自Ci的一张选票,即自增加一;
当其它跟随者收到来自任期编号更大的节点的投票请求,且自己没有在候选人的任期编号内投票,则跟随者结点将把选票投给发起请求投票RPC消息的候选人节点,随后投票的跟随者自增自己的任期编号与所投票的候选人一致,具体如下:
Votes+Voteb;
Voteb=0;
其中,Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Nb<b,TermNumj,Tb,Voteb,Journalb>表示还没有投票的跟随者节点;Votes表示该候选者目前获得的票数;Voteb表示该跟随者节点所投出的选票;上述式子表示候选者节点a向其它任期编号为a任期编号减一的跟随者节点发送请求投票RPC消息,然后跟随者节点对该候选者节点投票,使跟随者节点的选票减一,候选者节点获得的选票加一;
若一个候选人节点Ci<i,Votes,TermNumj+i>在一个超时时间Ti内赢得了大多数选票,则将在获得观察者投票后成为该任期编号即本届任期内的新领导者Li,公式如下:
上式表示,选举时间不能超过一个超时时间,候选者获得的所有选票必须大于所有跟随者节点数目的50%以上,且必须获得观察者节点的选票;Votes表示该候选者目前获得的票数;Votei表示投票的跟随者的选票;t表示选举的时间;Ti表示一个超时时间,n表示跟随者节点的数量;Wvote表示观察者节点的选票;
当该新领导者当选后,将以Ti时间周期性的发送心跳信息,阻止其它节点发起新选举;
识别作恶节点:在候选者发起请求投票RPC时对其进行作恶节点识别;具体如下:
在集群中设置一个新角色观察者,当候选人发起请求投票RPC消息时,观察者将监测该候选人节点在执行过程中是否存在异常行为:
若监测到异常行为,则观察者将不会给候选人投票并且广播该候选人的任期编号使所有节点都与其保持一致,再开始下一轮投票;
若在候选人投票过程中未发现其存在异常行为,则观察者节点将在其获得大多数选票后为其投票,具体如下:
其中,上述式子表示在投票选举过程中,观察者节点会检测候选者节点,如果它出现异常就不为其投票,并将其任期编号广播给所有跟随者节点;如果没出现异常就为其投票;W<TermNumj+1,Wvote,Journalj+1>表示观察者节点;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Wvote表示观察者节点的选票;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者节点;
复制日志:日志是由多个日志项组成,每个日志项由指令、索引值及任期编号构成,形式为:
其中,上式表示日志由多个日志项组成,日志项由索引值、任期编号及指令构成;Journali表示通道i的日志;表示该日志的第n个日志项的索引值;TermNumj表示上一个任期编号;/>表示该日志第n个日志项的指令;
关于成员变更。
2.根据权利要求1所述的基于Raft算法的区块链共识方法,其特征在于,跟随者用于接受和处理来自领导者的消息,当领导者心跳信息T0超时时,推荐自己当候选人;跟随者节点的形式为:Ni<Nodei,TermNumj,Ti,Votei,Journali>;其中,1≤i≤n;j=0,1,2…;Votei=0,1;n为初始状态集群中的节点数目;Journali为日志;Votei初始值为1,Ti表示为每个跟随者节点设置的一个随机超时时间;
候选人用于向其它节点发送请求投票RPC消息,当赢得超过1/2选票时成为领导者;
领导者用于处理写请求,管理日志复制和发送心跳信息T0,同时集群中只能有一个领导者;
观察者用于在候选者发起请求投票RPC时,识别其是否为作恶节点,并辅助集群扩容;其中,将观察者视为可信节点,形式为:W<TermNumj+1,Wvote,Journalj+1>,W节点的TermNum和Journal同步领导者的目录项,Wvote初始值为1,当判断候选人Ci为作恶节点后将其置0。
3.根据权利要求1所述的基于Raft算法的区块链共识方法,其特征在于,选举规则具体如下:
①、领导者在任期间周期性地向所有节点发送心跳信息,以告知跟随者和观察者其领导者的身份,阻止跟随者成为候选人而发起的新一轮选举;
②、若任一跟随者节点在一个随机超时时间内未收到来自领导者的心跳信号,则将推举自己成为候选者,向其它节点发起请求投票RPC消息;
③、在一个任期内只能同时存在一位领导者;
④、在一轮投票选举中,候选者将选票投给自己,其它节点按照先来先投的顺序进行投票,而且跟随者在一轮投票中有且只有一张选票;
⑤、日志完整性,即节点日志项最后一条记录对应的任期编号值的大小;日志完整性高的跟随者Nb拒绝投票给日志完整性低的候选人Ca,具体如下:
an<bn;
其中,上式表示当候选者向跟随者发起RPC投票请求后,若该跟随者的任期编号值大于该候选者的任期编号值,则跟随者会拒绝向该候选者投票;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Nb<b,TermNumj,Tb,Voteb,Journalb>表示还没有投票的跟随者节点;Journalb表示某一跟随者节点的日志;Journala表示发起投票RPC请求的候选者节点的日志;an表示候选者节点日志索引的下标;bn表示跟随者节点日志索引的下标;
⑥、对于候选人,即使其获得了超过1/2选票,也要获得观察者节点的特殊选票后才能成为领导者;
领导者任期规则具体如下:
①、任期表示在一个领导者存在的周期,用任期编号表示目前所在的任期;
②、当跟随者等待心跳时间超时后,使自己成为候选人时会将自己的任期编号加一;
③、当一个节点发现自己的任期编号比其它节点小,将使自己的任期编号与最大值相同;
④、当一个领导人或候选人发现自己的任期编号比其他节点小,则将立即恢复跟随者身份;
⑤、一个节点收到了一个比自身任期编号小的任期编号值请求,则直接拒绝该请求。
4.根据权利要求1所述的基于Raft算法的区块链共识方法,其特征在于,复制日志具体如下:
领导者接收到客户端请求后,基于客户端请求中的指令,创建一个新的日志项,并附加到本地日志中;
通过日志复制RPC消息,将日志项复制到其它服务器上;
判断领导者是否收到复制成功的相应:
当领导者收到超过1/2的节点复制成功响应时,则将把日志项应用到领导者对应的状态机,并返回成功给客户端;
当领导者未收到复制成功相应,则领导者将返回错误给客户端;
当跟随者接收到心跳消息或者新的日志复制RPC消息后,若跟随者发现领导者已经提交了任意一条日志项但自己未应用,则跟随者将把这条日志项应用到本地的状态机上,具体如下:
其中,上述公式表示,当领导者收到来自客户端的日志复制请求后,基于请求中的指令创建一个新的日志项并附加到本地日志中,然后通过发送日志复制RPC将新日志复制到跟随者中,当跟随者成功复制日志后向领导者发送复制成功相应,当领导者收到超过1/2的节点复制成功响应时,则将把日志项应用到领导者对应的状态机,并返回成功给客户端;Client表示客户端;Lb<b,TermNumj+1,Tb,Journalb>表示领导者节点;Journalb表示领导者的日志;表示新附加的日志项;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者;Cnt表示领导者收到的复制成功响应数量;FSM表示本地状态机;
日志的一致性是指领导者通过强制跟随者复制自己的日志项实现日志的一致性,具体如下:
领导者通过日志复制RPC消息的一致性检查,找到跟随者节点上与自己相同日志项的最大索引值;
领导者强制跟随者更新覆盖不一致的日志项,实现日志的一致;
领导者针对每一个跟随者进行单独的一致性检查。
5.根据权利要求1-4中任一所述的基于Raft算法的区块链共识方法,其特征在于,关于成员变更具体如下:
使用观察者节点向领导者发送新配置的日志项,领导者将此新配置日志项中自己缺失的部分整合到自己的日志项内;
领导者向集群进行广播新日志项,当收到大多数复制成功响应后,将领导者新配置的日志项提交到本地状态机,完成观察者集群辅助节点成员变更,具体如下:
上式表示当要扩容集群时,观察者节点先更新自己的日志,然后通过日志复制RPC通知领导者复制观察者的日志,然后领导者再向跟随者发送日志复制RPC,将新的日志复制到跟随者节点中;{NewNi}表示要新增的节点;W<TermNumj+1,Wvote,Journalj+1>表示观察者;Lb<b,TermNumj+1,Tb,Journalj+1,Cnt>表示领导者;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者。
6.一种基于Raft算法的区块链共识***,其特征在于,该***包括,
初始化模块,用于集群初始化,即设定最开始除了一个固有的观察点N0外,所有节点都是跟随者;
选举模块,用于通过跟随者未收到心跳信息触发候选人的请求投票RPC进行领导者选举;其中,选举领导者具体如下:
最开始集群中没有领导者,当任意一个节点的超时时间Ti最先到达,并且在这一过程中未收到来自领导者的心跳信息T0,则将使自己的任期编号TermNumj加一,使自己成为候选人Ci<i,Votes,TermNumj+1,Journali>;向自己投一张选票并且向其它所有节点发起请求投票RPC,公式如下:
TermNumj+1=TermNumj+1;
Votes=0+1;
其中,TermNumj表示上一个任期编号,默认值为0;Votes默认值为0,当一个跟随者Ni成为候选人Ci后,Votes将获取来自Ci的一张选票,即自增加一;
当其它跟随者收到来自任期编号更大的节点的投票请求,且自己没有在候选人的任期编号内投票,则跟随者结点将把选票投给发起请求投票RPC消息的候选人节点,随后投票的跟随者自增自己的任期编号与所投票的候选人一致,具体如下:
<b,TermNumj,Tb,Voteb,Journalb>;
Votes+Voteb;
Voteb=0;
其中,Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Nb<b,TermNumj,Tb,Voteb,Journalb>表示还没有投票的跟随者节点;Votes表示该候选者目前获得的票数;Voteb表示该跟随者节点所投出的选票;上述式子表示候选者节点a向其它任期编号为a任期编号减一的跟随者节点发送请求投票RPC消息,然后跟随者节点对该候选者节点投票,使跟随者节点的选票减一,候选者节点获得的选票加一;
若一个候选人节点Ci<i,Votes,TermNumj+1>在一个超时时间Ti内赢得了大多数选票,则将在获得观察者投票后成为该任期编号即本届任期内的新领导者Li,公式如下:
<b,TermNumj+1,Tb,Journalb,Cnt>;
上式表示,选举时间不能超过一个超时时间,候选者获得的所有选票必须大于所有跟随者节点数目的50%以上,且必须获得观察者节点的选票;Votes表示该候选者目前获得的票数;Votei表示投票的跟随者的选票;t表示选举的时间;Ti表示一个超时时间,n表示跟随者节点的数量;Wvote表示观察者节点的选票;
当该新领导者当选后,将以Ti时间周期性的发送心跳信息,阻止其它节点发起新选举;
识别模块,用于在候选者发起请求投票RPC时对其进行作恶节点识别;其中,识别作恶节点具体如下:
在集群中设置一个新角色观察者,当候选人发起请求投票RPC消息时,观察者将监测该候选人节点在执行过程中是否存在异常行为:
若监测到异常行为,则观察者将不会给候选人投票并且广播该候选人的任期编号使所有节点都与其保持一致,再开始下一轮投票;
若在候选人投票过程中未发现其存在异常行为,则观察者节点将在其获得大多数选票后为其投票,具体如下:
<a,Votes,TermNumj+1,Journala
其中,上述式子表示在投票选举过程中,观察者节点会检测候选者节点,如果它出现异常就不为其投票,并将其任期编号广播给所有跟随者节点;如果没出现异常就为其投票;W<TermNumj+1,Wvote,Journalj+1>表示观察者节点;Ca<a,Votes,TermNumj+1,Journala>表示一个发起投票请求的候选者节点;Wvote表示观察者节点的选票;Ni<i,TermNumj,Ti,Votei,Journali>表示跟随者节点;
复制模块,用于基于客户端请求中的指令,创建一个新的日志项,并附加到本地日志中,然后通过日志复制RPC消息,将日志项复制到其它服务器上;
变更模块,用于使用观察者节点向领导者发送新配置的日志项,领导者将此新配置日志项中自己缺失的部分整合到自己的日志项内,再通过领导者向集群进行广播新日志项,当收到大多数复制成功响应后,将领导者新配置的日志项提交到本地状态机,完成观察者集群辅助节点成员变更。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如权利要求1至5中任一所述的基于Raft算法的区块链共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210420723.1A CN114844891B (zh) | 2022-04-21 | 2022-04-21 | 基于Raft算法的区块链共识方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210420723.1A CN114844891B (zh) | 2022-04-21 | 2022-04-21 | 基于Raft算法的区块链共识方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114844891A CN114844891A (zh) | 2022-08-02 |
CN114844891B true CN114844891B (zh) | 2024-04-12 |
Family
ID=82566568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210420723.1A Active CN114844891B (zh) | 2022-04-21 | 2022-04-21 | 基于Raft算法的区块链共识方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114844891B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115250277B (zh) * | 2022-08-09 | 2023-09-05 | 西安邮电大学 | 将共识机制适用于基于联盟链的边缘缓存***的方法 |
CN116723192B (zh) * | 2023-08-10 | 2023-11-28 | 苏州海加网络科技股份有限公司 | 一种基于联邦学习的分布式共识***及其运行方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109272631A (zh) * | 2017-07-17 | 2019-01-25 | 卡巴斯基实验室股份制公司 | 确定借助电子投票收集的投票者的选票的***和方法 |
CN109923536A (zh) * | 2016-11-10 | 2019-06-21 | 斯沃尔德斯股份有限公司 | 用于包括匿名条目的分布式数据库的方法和装置 |
CN110855793A (zh) * | 2019-11-19 | 2020-02-28 | 南昌航空大学 | 一种分布式***共识方法 |
CN111988203A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 节点选举方法、装置及存储介质 |
CN112789823A (zh) * | 2019-09-11 | 2021-05-11 | 李敏宰 | 基于区块链的竞选网络***及竞选方法 |
CN113127565A (zh) * | 2021-04-28 | 2021-07-16 | 联通沃音乐文化有限公司 | 基于外部观察者组的分布式数据库节点同步的方法和装置 |
US11088996B1 (en) * | 2021-02-10 | 2021-08-10 | SecureCo, Inc. | Secure network protocol and transit system to protect communications deliverability and attribution |
CN114268532A (zh) * | 2021-11-24 | 2022-04-01 | 华人运通(上海)云计算科技有限公司 | 一种基于Raft协议的竞选方法、分布式***及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020096560A1 (en) * | 2001-01-20 | 2002-07-25 | Page John S. | Postage stamp voting method in elections |
US10938662B2 (en) * | 2018-07-17 | 2021-03-02 | Software Ag | System and/or method for maintaining highly-available, consistent, partition-tolerant clusters using client voters |
US11556658B2 (en) * | 2019-12-02 | 2023-01-17 | Schvey, Inc. | Cross-partition calls in partitioned, tamper-evident data stores |
US11514029B2 (en) * | 2020-10-14 | 2022-11-29 | Oracle International Corporation | System and method for high performance multi-statement interactive transactions with snapshot isolation in a scale-out database |
-
2022
- 2022-04-21 CN CN202210420723.1A patent/CN114844891B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109923536A (zh) * | 2016-11-10 | 2019-06-21 | 斯沃尔德斯股份有限公司 | 用于包括匿名条目的分布式数据库的方法和装置 |
CN109272631A (zh) * | 2017-07-17 | 2019-01-25 | 卡巴斯基实验室股份制公司 | 确定借助电子投票收集的投票者的选票的***和方法 |
CN112789823A (zh) * | 2019-09-11 | 2021-05-11 | 李敏宰 | 基于区块链的竞选网络***及竞选方法 |
CN110855793A (zh) * | 2019-11-19 | 2020-02-28 | 南昌航空大学 | 一种分布式***共识方法 |
CN111988203A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 节点选举方法、装置及存储介质 |
US11088996B1 (en) * | 2021-02-10 | 2021-08-10 | SecureCo, Inc. | Secure network protocol and transit system to protect communications deliverability and attribution |
CN113127565A (zh) * | 2021-04-28 | 2021-07-16 | 联通沃音乐文化有限公司 | 基于外部观察者组的分布式数据库节点同步的方法和装置 |
CN114268532A (zh) * | 2021-11-24 | 2022-04-01 | 华人运通(上海)云计算科技有限公司 | 一种基于Raft协议的竞选方法、分布式***及存储介质 |
Non-Patent Citations (4)
Title |
---|
Hyperledger Fabric共识机制优化方案;孟吴同,张大伟;自动化学报;1-14 * |
一种面向Fabric区块链应用软件的体系结构演化算法;赵会群;张隆龙;;软件(07);全文 * |
关于Borda计分法则在职称评定投票规则中的一些探讨;王倩;高红伟;张宇宙;代业明;;青岛大学学报(工程技术版)(03);全文 * |
基于Raft一致性协议的高可用性实现;张晨东;郭进伟;刘柏众;储佳佳;周敏奇;钱卫宁;;华东师范大学学报(自然科学版)(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114844891A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114844891B (zh) | 基于Raft算法的区块链共识方法及*** | |
Cachin et al. | Blockchain consensus protocols in the wild | |
EP3649558B1 (en) | Method and system for a distributed computing system | |
US20180308091A1 (en) | Fairness preserving byzantine agreements | |
CN112883114A (zh) | 应用于区块链的交易处理方法和装置 | |
KR102230829B1 (ko) | 합의 시스템 다운타임 복구 | |
EP4332870A1 (en) | Transaction data processing method and apparatus, computer device and storage medium | |
CN111988203B (zh) | 节点选举方法、装置及存储介质 | |
US11295402B2 (en) | Blockchain-based property repair | |
WO2022048357A1 (zh) | 交易背书方法、装置及存储介质 | |
US20190268153A1 (en) | Event execution using a blockchain approach | |
CN107924362A (zh) | 数据库***、服务器装置、程序及信息处理方法 | |
CN110581887B (zh) | 数据处理方法、装置、区块链节点及存储介质 | |
JP2020530958A (ja) | 一対の結合ブロックチェーンを構成するバイナリブロックチェーンに関連するコンピュータ実装システム及び方法 | |
US20210216527A1 (en) | Parallel blockchain processing | |
WO2021184879A1 (zh) | 在区块链共识处理时进行处理消息同步的方法及装置 | |
US20240004930A1 (en) | System and method for pre-indexing filtering and correction of documents in search systems | |
CN113609229B (zh) | Fabric区块链中的快速日志复制方法及装置 | |
CN113612618B (zh) | 一种联盟链共识方法及装置 | |
CN113704024B (zh) | 数据处理方法、装置、相关设备及存储介质 | |
JP2005502957A (ja) | 厳密に一回のキャッシュフレームワーク | |
CN115664706A (zh) | 基于双链结构的非许可区块链节点检测和激励方法及*** | |
US20200358597A1 (en) | Blockchain-based data processing | |
US7051065B2 (en) | Method and system for performing fault-tolerant online validation of service requests | |
Nezhadsistani et al. | Blockchain consensus algorithms: Past, present, and future trends |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |