CN111327414A - 一种区块链共识方法、系统及计算机存储介质、电子设备 - Google Patents
一种区块链共识方法、系统及计算机存储介质、电子设备 Download PDFInfo
- Publication number
- CN111327414A CN111327414A CN202010064076.6A CN202010064076A CN111327414A CN 111327414 A CN111327414 A CN 111327414A CN 202010064076 A CN202010064076 A CN 202010064076A CN 111327414 A CN111327414 A CN 111327414A
- Authority
- CN
- China
- Prior art keywords
- message
- view
- node
- consensus
- block
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000012790 confirmation Methods 0.000 claims abstract description 31
- 238000004806 packaging method and process Methods 0.000 claims abstract description 9
- 238000012856 packing Methods 0.000 claims abstract description 4
- 230000008569 process Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004422 calculation algorithm Methods 0.000 abstract description 30
- 238000010586 diagram Methods 0.000 description 14
- 238000012795 verification Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000003999 initiator Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- 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/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Power Engineering (AREA)
- Computer And Data Communications (AREA)
Abstract
一种区块链共识方法、系统及计算机存储介质、电子设备,包括:当前视图下领导者节点根据接收到的交易数据打包区块并广播提案消息;副本节点接收所述提案消息并在校验所述提案消息后广播确认消息;副本节点接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;副本节点接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;切换当前视图。采用本申请中的方案,将PBFT算法应用到区块链中,并对PBFT算法进行了改进,在每轮共识完成后都进行视图切换,即,每个节点都有成为领导者的机会,副本节点可以轮询成为领导者节点打包区块,出块权利不会由某一个节点长期占据,提高了区块链共识的安全性。
Description
技术领域
本申请涉及区块链技术,具体地,涉及一种区块链共识方法、系统及计算机存储介质、电子设备。
背景技术
在区块链领域中,共识算法是区块链的关键部分,各节点通过共识达成一致,接收并认可一致的区块,然后执行区块中包含的交易,生成新的一致状态;即,共识算法为在一个不可靠的网络、使各个节点达成一致状态的算法。共识算法被设计于有不可靠节点的网络中,不可靠的节点通常包括拜占庭节点,即节点可能会作恶或出现故障,共识算法在这样的网络中实现了可靠性。
目前区块链的共识算法主要有四种:POW(Proof of Work,工作量证明)算法,POS(Proof-Of-Stake,权益证明)算法,DPOS(Delegated Proof of Stake,委托权益证明)算法和PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)算法。
其中,POW算法是以比特币为代表的经典“挖矿算法”,通过哈希计算进行区块生产,全网进行统一记账验证,算能是该算法的核心。优点是去中心化的程度高、安全性高,但该算法具有高能耗、交易高延时和低吞吐量等缺点。
PBFT算法是一种传统的基于消息传递的分布式一致性算法,PBFT在保证可用性和安全性(liveness&safety)的前提下,提供了(n-1)/3的容错性,即如果系统内有n台机子,那么系统最多能容忍的作恶/故障节点为(n-1)/3个。该算法有较低的延时和较高的吞吐量。
现有技术中存在的问题:
现有PBFT算法不能动态更新验证节点,领导者(Leader)不能基于某种规则动态改变。
发明内容
本申请实施例中提供了一种区块链共识方法、系统及计算机存储介质、电子设备,以解决上述技术问题。
根据本申请实施例的第一个方面,提供了一种区块链共识方法,包括如下步骤:
当前视图下领导者节点根据接收到的交易数据打包区块并广播提案消息;
副本节点接收所述提案消息并在校验所述提案消息后广播确认消息;
副本节点接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;
副本节点接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;
切换当前视图。
根据本申请实施例的第二个方面,提供了一种区块链共识系统,包括:领导者节点和若干副本节点,
领导者节点,用于当前视图下根据接收到的交易数据打包区块并广播提案消息;
副本节点,用于接收所述提案消息并在校验所述提案消息后广播确认消息;接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;
领导者节点和副本节点还用于在达成共识后切换当前视图。
根据本申请实施例的第三个方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述区块链共识方法的步骤。
根据本申请实施例的第四个方面,提供了一种电子设备,包括存储器、以及一个或多个处理器,所述存储器用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器执行时,实现如上所述的区块链共识方法。
本申请实施例中提供的区块链共识方法、系统及计算机存储介质、电子设备,将PBFT算法应用到区块链中,并对PBFT算法进行了改进,在每轮共识完成后都进行视图切换,即,每个节点都有成为领导者的机会,副本节点可以轮询成为领导者节点打包区块,出块权利不会由某一个节点长期占据,提高了区块链共识的安全性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请实施例一中区块链共识方法实施的流程示意图;
图2示出了本申请实施例二中区块链共识系统的结构示意图;
图3示出了本申请实施例四中电子设备的结构示意图;
图4示出了本申请实施例五中区块链共识架构示意图;
图5示出了本申请实施例五中区块链共识方法实施的流程示意图。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例一
图1示出了本申请实施例一中区块链共识方法实施的流程示意图。
如图所示,所述区块链共识方法包括:
步骤101、当前视图下领导者节点根据接收到的交易数据打包区块并广播提案消息;
步骤102、副本节点接收所述提案消息并在校验所述提案消息后广播确认消息;
步骤103、副本节点接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;
步骤104、副本节点接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;
步骤105、切换当前视图。
本申请实施例中提供的区块链共识方法,将PBFT算法应用到区块链中,并对PBFT算法进行了改进,在每轮共识完成后都进行视图切换,即,每个节点都有成为领导者的机会,副本节点可以轮询成为领导者节点打包区块,出块权利不会由某一个节点长期占据,提高了区块链共识的安全性。
在一种实施方式中,切换后的视图编号比切换前的视图编号大。
在一种实施方式中,切换后的视图编号为切换前的视图编号v+1。
在一种实施方式中,在所述当前视图下领导者节点根据接收到的交易数据打包区块并广播提案消息之前,进一步包括:
当前视图下副本节点接收用户发送的交易数据,并对所述交易数据进行验证后转发给领导者节点。
在一种实施方式中,对交易数据的验证,包括:
本节点之前没有收到过所述交易数据;
所述交易数据的各个参数均合法;
所述交易数据的发起人的余额大于手续费;
当前缓存队列未满,且所述交易数据发起人在缓存队列的交易数未超过预设第一阈值。
在一种实施方式中,所述领导者节点根据接收到的交易数据打包区块并广播提案消息,包括:
领导者节点将所述交易数据Tx加入缓存队列,创建consensus-value对象<CloseTime,BlockSeq,TxSet,LastBlockHash,LastBlockProof>作为将要共识的内容,根据交易在缓存队列中的优先级依次取出交易数据加入交易集合TxSet,并在TxSet大小超出预设第二阈值时预执行交易集合TxSet;
领导者节点封装提案消息PROPOSE并在签名得到<PROPOSE,v,BlockSeq,TxSet,Hash(Tx),Round>σi后广播提案消息;
其中,CloseTime为区块生成时间;BlockSeq为区块高度;LastBlockHash为最新区块的Hash值;LastBlockProof为生成最新区块的证据;Round为广播次数;σi表示有i个节点为该消息签名。
在一种实施方式中,进一步包括:
若执行交易失败或超时,领导者节点将该交易数据踢出交易集合TxSet。
在一种实施方式中,进一步包括:
若交易集合TxSet执行的总时间超过预设第一时间,领导者节点对交易集合TxSet减半处理后再次预执行所述交易集合TxSet。
在一种实施方式中,所述预设第一数量为Qsize-1,所述预设第二数量为Qsize;其中,当节点总数N=3f+3时,Qsize=2f+2;当节点总数N为其他数时,Qsize=N-f;所述f为拜占庭节点的数量。
在一种实施方式中,进一步包括:
若副本节点发现领导者节点不作为、作恶或共识超时,则切换当前视图。
在一种实施方式中,视图切换过程,包括:
副本节点设置当前共识为不活跃状态,创建视图切换消息VIEW-CHANGE并广播;
其他副本节点接收所述视图切换消息VIEW-CHANGE并验证所述视图切换消息VIEW-CHANGE有效后广播;
领导者节点收到预设第三数量的所述视图切换消息VIEW-CHANGE后创建新视图消息NEW-VIEW并广播,领导者节点进入下一视图状态;
副本节点接收所述新视图消息NEW-VIEW并验证该新视图消息NEW-VIEW有效时进入下一视图状态。
在一种实施方式中,若视图切换过程中,当前有确认状态的交易集合TxSet,则将所述确认状态的交易集合TxSet加入到新视图的第一个交易集合TxSet。
在一种实施方式中,其他副本节点验证视图切换消息,包括验证以下内容:
1)签名正确;
2)对应的节点在本地验证节点集中;
3)消息中的视图比当前视图大1;
4)当Hash(TxSet)不为空时,确认集合ConfirmedSet是该交易集合TxSet达成确认状态的证据。
在一种实施方式中,所述预设第三数量为2f+1。
在一种实施方式中,所述视图切换消息中不包括本次交易数据。
在一种实施方式中,所述副本节点验证新视图消息,包括验证以下内容:
根据视图切换消息的检查流程对视图切换集合ViewChangeSet中的每个元素进行校验;
消息中的视图与当前视图大;
视图切换集合ViewChangeSet中元素个数必须大于等于2f+1。
在一种实施方式中,所述副本节点接收所述提案消息并在校验所述提案消息后广播确认消息,包括:
副本节点监听网络并接收提案消息;
验证所述提案消息是否符合以下条件:
1)签名正确;
2)对应的节点在本地验证节点集中;
3)消息中的视图与当前视图一致;
4)预执行交易集合TxSet执行结果为成功;
5)本节点当前视图下之前没有收到过区块高度BlockSeq与本提案消息相同但交易集合TxSet与本提案消息不同的提案消息;
6)区块高度BlockSeq在预设范围内;
若满足上述条件,副本节点封装确认消息并签名后广播确认消息。
在一种实施方式中,副本节点在接收到确认消息后、发出提交消息之前,进一步包括:验证所述确认消息的有效性,具体包括验证以下内容:
1)签名正确;
2)对应节点在本地验证节点集中;
3)消息中的视图与当前视图一致;
4)本节点当前视图下之前没有收到过区块高度BlockSeq与本提案消息相同但交易集合TxSet与本提案消息不同的提案消息;
5)区块高度BlockSeq在预设范围内。
在一种实施方式中,每个节点在每次发送消息时采用超时重发机制。
实施例二
基于同一发明构思,本申请实施例提供了一种区块链共识系统,该系统解决技术问题的原理与一种区块链共识方法相似,重复之处不再赘述。
图2示出了本申请实施例二中区块链共识系统的结构示意图。
如图所示,所述区块链共识系统包括:
领导者节点,用于当前视图下根据接收到的交易数据打包区块并广播提案消息;
副本节点,用于接收所述提案消息并在校验所述提案消息后广播确认消息;接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;
领导者节点和副本节点还用于在达成共识后切换当前视图。
本申请实施例中提供的区块链共识系统,将PBFT算法应用到区块链中,并对PBFT算法进行了改进,在每轮共识完成后都进行视图切换,即,每个节点都有成为领导者的机会,副本节点可以轮询成为领导者节点打包区块,出块权利不会由某一个节点长期占据,提高了区块链共识的安全性。
实施例三
基于同一发明构思,本申请实施例还提供一种计算机存储介质,下面进行说明。
所述计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一所述区块链共识方法的步骤。
本申请实施例中提供的计算机存储介质,将PBFT算法应用到区块链中,并对PBFT算法进行了改进,在每轮共识完成后都进行视图切换,即,每个节点都有成为领导者的机会,副本节点可以轮询成为领导者节点打包区块,出块权利不会由某一个节点长期占据,提高了区块链共识的安全性。
实施例四
基于同一发明构思,本申请实施例还提供一种电子设备,下面进行说明。
图3示出了本申请实施例四中电子设备的结构示意图。
如图所示,所述电子设备包括存储器301、以及一个或多个处理器302,所述存储器用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器执行时,实现如实施例一所述的区块链共识方法。
本申请实施例中提供的电子设备,将PBFT算法应用到区块链中,并对PBFT算法进行了改进,在每轮共识完成后都进行视图切换,即,每个节点都有成为领导者的机会,副本节点可以轮询成为领导者节点打包区块,出块权利不会由某一个节点长期占据,提高了区块链共识的安全性。
实施例五
为了便于本申请的实施,本申请实施例以一具体实例进行说明。
图4示出了本申请实施例五中区块链共识架构示意图。
如图所示,本申请实施例所提供的区块链共识包括正常共识流程(ConsensusInstance)和视图切换流程(View Change),其中涉及到四种角色:
区块链系统的使用者即普通用户(图中人物标示);
共识过程中打包区块的领导者(Leader)节点(图中x标示);
参与共识过程的副本(Replica)节点(图中A、B、C示意三个节点);
共识过程中出现故障或作恶错误(Fault)节点(未示出,可以为任一节点)。
这些节点通过三个阶段即Propose、Confirm、Commit会话达成一致,每次达成共识后视图均进行切换,例如从视图V1切换至V2,下次共识完成时再从V2切换到V3等。如果在共识过程中,副本Replica节点发现领导者Leader节点不作为或作恶,则发起视图切换VIEW-CHANGE流程选举下一个Leader,当有绝大多数节点投票选举了下一个Leader,则视图切换成功。
假设区块链系统中节点总数为N,那么本申请实施例所提供的共识能容忍的错误(Fault)节点个数为f=(N-1)/3,绝大多数节点的个数为N-f。
图5示出了本申请实施例五中区块链共识方法实施的流程示意图。
如图所示,所述区块链共识方法,包括:
步骤S10,用户签名交易,并发送交易到副本(Replica)节点,副本(Replica)节点检查交易并转发给领导者(Leader)节点。
步骤S20,领导者(Leader)把交易加入缓存,并打包区块,发送提案(PROPOSE)消息。
步骤S30,副本(Replica)接收并校验提案(PROPOSE)消息,并发送确认(CONFIRM)消息。
步骤S40,其他副本(Replica)接收确认(CONFIRM)消息,并统计数量,当收到绝大多数该消息后,发送提交(COMMIT)消息。
步骤S50,副本(Replica)接收提交(COMMIT)消息,并统计数量,当收到绝大多数提交(COMMIT)消息后,共识达成,产生区块,切换视图。
步骤S60,如果副本(Replica)在共识过程中,发现领导者(Leader)不作为或者作恶,则重新选举Leader。
具体的,步骤S10,用户签名交易,并发送交易到副本(Replica)节点,副本(Replica)节点检查交易并转发给领导者(Leader)节点,包括如下步骤:
步骤S101,用户签名交易,通过钱包客户端广播交易请求;我们定义交易Tx=<REQUEST>σc,REQUEST为用户请求内容/请求消息;
步骤S102,附带签名的完整交易数据通过P2P网络广播,网络中的节点收到交易后,在判断满足如下条件之后对交易进行转发:
a)节点之前没有收到过这笔交易;
b)判断交易的各个参数是合法的;
c)交易发起人有足够的余额支付手续费;
d)目前缓存队列还有空闲,并且该交易发起人的在缓存队列的交易数没有超出阀值。
具体的,步骤S20,领导者(Leader)把交易加入缓存,并打包区块,发送提案(PROPOSE)消息,包括如下步骤:
a)创建CONSENSU-VALUE对象,作为将要共识的内容:
<CloseTime,BlockSeq,TxSet,LastBlockHash,LastBlockProof>。
其中,<>:表示有多个属性的对象;CloseTime:区块生成时间;BlockSeq:区块高度;TxSet:本轮共识将要打包的交易集合;LastBlockHash:最新区块的Hash值;LastBlockProof:生成最新区块的证据,主要包括各验证节点的签名消息;
b)按照交易在缓存队列中的优先级,依次取出交易加入交易集合TxSet;
c)判断TxSet大小是否超出阀值,超出后则跳出执行下一步骤。
步骤S202,领导者(Leader)预执行交易集合;
a)其中的交易如果出现执行超时或者是失败,则把交易剔出TxSet。
b)如果TxSet执行的总时间超过5秒,则对TxSet减半处理,并且再次预执行该TxSet。
步骤S203,领导者(Leader)封装提案(PROPOSE)消息并签名<PROPOSE,v,BlockSeq,TxSet,Hash(Tx),Round>σi,接着广播消息。Round初始值为0,当领导者(Leader)节点发现在5秒内共识未达成,则递增轮次Round值并广播。共识超时时间设定为30秒,超过30秒后,未达到共识最终状态提交(Commited)的节点会发起VIEW-CHANGE视图切换流程。
σ:表示对消息的签名,其下标c表示客户端(Client),σ1...n表示有n节点为消息签名。
具体的,步骤S30,副本(Replica)接收并校验提案(PROPOSE)消息,并发送确认(CONFIRM)消息,包括如下步骤:
步骤S301,副本(Replica)监听网络并接收提案(PROPOSE)消息,先判断该消息是否符合如下条件:
a)签名正确,对应的节点在本地验证节点集之中;
b)消息视图v与当前状态的视图一致;
c)预执行TxSet,执行结果成功;
d)在此之前副本(Replica)没有收到过其他的提案(PROPOSE)消息:v,BlockSeq与这条提案(PROPOSE)的相同,而TxSet不同;
e)BlockSeq在一定范围之内;
步骤S302,当副本(Replica)判断提案(PROPOSE)消息满足如上条件后,封装确认(CONFIRM)消息并签名<CONFIRM,v,BlockSeq,Hash(TxSet)>σi;
步骤S303,副本(Replica)发送确认(CONFIRM)消息。
具体的,步骤S40,副本(Replica)接收并校验确认(CONFIRM)消息,并统计数量,当收到Qsize-1条确认(CONFIRM)消息后,发送提交(COMMIT)消息,包括如下步骤:
步骤S401,副本(Replica)监听网络并接收确认(CONFIRM)消息,在发出提交(COMMIT)消息前,先判断确认(CONFIRM)消息的有效性:
a)签名正确;
b)对应的节点在本地的验证列表集之中;
c)消息视图v与当前状态的视图一致;
d)在此之前副本(Replica)没有收到过与该消息冲突的其他确认(CONFIRM)消息,判断冲突的条件是:v,BlockSeq与这条确认(CONFIRM)的相同,而TxSet不同;
e)BlockSeq在预设的范围之内;
步骤S402,副本(Replica)发送提交(COMMIT)消息。
其中,Qsize表示法定集合数,节点共识状态机收到该数量的消息后即可进入下一状态。
具体的,步骤S50,副本(Replica)接收提交(COMMIT)消息,并统计数量,当收到Qsize条提交(COMMIT)消息后,共识达成,产生区块,切换视图,包括如下步骤:
步骤S501,副本(Replica)监听网络并接收提交(COMMIT)消息,先判断提交(COMMIT)消息的有效性,过程参考确认(CONFRIM)消息的判断。
步骤S502,当副本(Replica)判断提交(COMMIT)消息有效后,节点把消息加入到提交(COMMIT)缓存队列,当提交(COMMIT)个数达到了Qsize后,本轮共识完成。
步骤S503,下一轮共识进入v+1视图。
具体的,步骤S60,如果副本(Replica)在共识过程中,发现领导者(Leader)不作为、作恶或者共识超时,则重新选举领导者(Leader),包括如下步骤:
步骤S601,节点设置当前共识为不活跃状态,如果当前有确认(Confirmed)状态的TxSet,则把该TxSet加入到新视图的第一个TxSet;
步骤S602,节点创建视图切换(VIEW-CHANGE)消息<VIEW-CHANGE,<v,BlockSeq,Hash(TxSet),ReplicaId>σi,ConfirmedSet>σi;
步骤S603,副本(Replica)监听网络并接收VIEW-CHANGE消息,判断该消息的有效性,过程如下:
a)签名正确;对应的验证节点在列表之中;
b)VIEW-CHANGE消息中的视图比节点状态保存的视图大1;
c)当Hash(TxSet)不为空时,ConfirmedSet是该TxSet达成确认(Confirmed)状态的证据。
步骤S604,当Leader接收到2f+1个VIEW-CHANGE消息后,创建NEW-VIEW消息<NEW-VIEW,v+1,ViewChangeSet,ConfirmedSet>σi,ViewChangeSet=<<v+1,BlockSeq,Hash(TxSet),ReplicaId>σ1...n>。广播NEW-VIEW消息后,节点状态进入v+1视图;
步骤S605,副本(Replica)监听网络并接收新视图(NEW-VIEW)消息,同样判断该消息的有效性,过程如下:
a)参照视图切换(VIEW-CHANGE)消息检查流程对视图切换集合(ViewChangeSet)中的每个元素进行校验;
b)NEW-VIEW消息中的视图比节点状态保存的视图大1;
b)视图切换集合(ViewChangeSet)中元素个数必须大于等于2f+1;
当满足上述条件后,副本(Replica)节点视图状态进入v+1;
本申请实施例具有如下优点:
1.视图随着每轮共识完成后切换,也就是说每个节点都有成为领导者(Leader)的机会,出块权利不会由某一个节点长期占据。
2.为减少不必要的数据传输,本申请实施例考虑到每轮共识后节点的状态是稳定状态,因此,本申请实施例去除了针对于稳定状态的检查点(CHECK-POINT)流程。
3.为了尽可能提高区块链网络的达成共识的效率,本申请实施例对Qsize数进行了优化,N为节点总数,f为拜占庭节点数:当N=3f+3时,Qsize=2f+2;当N为其他数时,Qsize=N-f;
4.为了尽可能提高区块链网络的数据传输效率,本申请实施例对VIEW-CHANGE流程进行了优化,现有技术中,当上一轮的共识达到了确认(Confirmed)状态,每个节点将会包含完整的请求(REQUEST)消息,而接下来新视图(NEW-VIEW)将打包Qsize个数的视图切换(VIEW-CHANGE)消息,消息尺寸会急剧增大;针对这一个过程,本申请实施例提出了新创建视图切换(VIEW-CHANGE)消息,把请求(REQUEST)消息从视图切换(VIEW-CHANGE)消息中分离出去,这样新视图(NEW-VIEW)既可以保证消息的有效性,又可以减少消息的尺寸。
5.为提高可用性,本申请实施例还可以在正常共识流程和视图切换(VIEW-CHANGE)流程中加入多个超时重发机制,提高网络层面的消息传达率。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种区块链共识方法,其特征在于,包括:
当前视图下领导者节点根据接收到的交易数据打包区块并广播提案消息;
副本节点接收所述提案消息并在校验所述提案消息后广播确认消息;
副本节点接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;
副本节点接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;
切换当前视图。
2.根据权利要求1所述的方法,其特征在于,在所述当前视图下领导者节点根据接收到的交易数据打包区块并广播提案消息之前,进一步包括:
当前视图下副本节点接收用户发送的交易数据,并对所述交易数据进行验证后转发给领导者节点。
3.根据权利要求1所述的方法,其特征在于,所述领导者节点根据接收到的交易数据打包区块并广播提案消息,包括:
领导者节点将所述交易数据Tx加入缓存队列,创建consensus-value对象<CloseTime,BlockSeq,TxSet,LastBlockHash,LastBlockProof>作为将要共识的内容,根据交易在缓存队列中的优先级依次取出交易数据加入交易集合TxSet,并在TxSet大小超出预设第二阈值时预执行交易集合TxSet;
领导者节点封装提案消息PROPOSE并在签名得到<PROPOSE,v,BlockSeq,TxSet,Hash(Tx),Round>σi后广播提案消息;
其中,CloseTime为区块生成时间;BlockSeq为区块高度;LastBlockHash为最新区块的Hash值;LastBlockProof为生成最新区块的证据;Round为广播次数;σi表示有i个节点为该消息签名。
4.根据权利要求1所述的方法,其特征在于,所述预设第一数量为Qsize-1,所述预设第二数量为Qsize;其中,当节点总数N=3f+3时,Qsize=2f+2;当节点总数N为其他数时,Qsize=N-f;所述f为拜占庭节点的数量。
5.根据权利要求1所述的方法,其特征在于,进一步包括:
若副本节点发现领导者节点不作为、作恶或共识超时,则切换当前视图。
6.根据权利要求1或5所述的方法,其特征在于,视图切换过程,包括:
副本节点设置当前共识为不活跃状态,创建视图切换消息VIEW-CHANGE并广播;
其他副本节点接收所述视图切换消息VIEW-CHANGE并验证所述视图切换消息VIEW-CHANGE有效后广播;
领导者节点收到预设第三数量的所述视图切换消息VIEW-CHANGE后创建新视图消息NEW-VIEW并广播,领导者节点进入下一视图状态;
副本节点接收所述新视图消息NEW-VIEW并验证该新视图消息NEW-VIEW有效时进入下一视图状态。
7.根据权利要求6所述的方法,其特征在于,所述视图切换消息中不包括本次交易数据。
8.一种区块链共识系统,其特征在于,包括:领导者节点和若干副本节点,
领导者节点,用于当前视图下根据接收到的交易数据打包区块并广播提案消息;
副本节点,用于接收所述提案消息并在校验所述提案消息后广播确认消息;接收所述确认消息并在收到预设第一数量的确认消息后广播提交消息;接收提交消息并在收到预设第二数量的提交消息后共识达成并产生区块;
领导者节点和副本节点还用于在达成共识后切换当前视图。
9.一种计算机存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一所述方法的步骤。
10.一种电子设备,其特征在于,包括存储器、以及一个或多个处理器,所述存储器用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器执行时,实现如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010064076.6A CN111327414A (zh) | 2020-01-20 | 2020-01-20 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010064076.6A CN111327414A (zh) | 2020-01-20 | 2020-01-20 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111327414A true CN111327414A (zh) | 2020-06-23 |
Family
ID=71170990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010064076.6A Pending CN111327414A (zh) | 2020-01-20 | 2020-01-20 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111327414A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767347A (zh) * | 2020-07-27 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 共识算法的切换方法、装置、节点设备及存储介质 |
CN112487102A (zh) * | 2020-12-15 | 2021-03-12 | 深圳前海微众银行股份有限公司 | 区块链数据处理方法、装置及电子设备 |
CN112636905A (zh) * | 2020-12-11 | 2021-04-09 | 北京航空航天大学 | 基于多角色的可扩展共识机制的系统及方法 |
CN112907369A (zh) * | 2021-02-08 | 2021-06-04 | 网易(杭州)网络有限公司 | 基于区块链的数据共识方法及装置、电子设备、存储介质 |
CN113254526A (zh) * | 2021-03-02 | 2021-08-13 | 中国信息通信研究院 | 区块链共识方法、装置及系统 |
CN113269637A (zh) * | 2020-12-28 | 2021-08-17 | 上海能链众合科技有限公司 | 一种基于区块链的智能设备数据的存证与验证方法 |
CN113761071A (zh) * | 2021-10-09 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN114254050A (zh) * | 2022-03-02 | 2022-03-29 | 恒生电子股份有限公司 | 区块链网络共识预加载方法、装置、设备及存储介质 |
WO2023221567A1 (zh) * | 2022-05-20 | 2023-11-23 | 清华大学 | 一种区块链共识方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391320A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种共识方法及装置 |
CN108667614A (zh) * | 2018-04-19 | 2018-10-16 | 上海分布信息科技有限公司 | 一种拜占庭容错方法及其实现系统 |
CN109685505A (zh) * | 2018-12-24 | 2019-04-26 | 电子科技大学 | 基于关联环签名的拜占庭容错共识优化方法 |
CN109995536A (zh) * | 2019-03-15 | 2019-07-09 | 广州杰赛科技股份有限公司 | 一种区块链共识方法、装置及可读存储介质 |
CN110289966A (zh) * | 2019-06-19 | 2019-09-27 | 西南交通大学 | 基于拜占庭容错的抗自适应攻击联盟链共识方法 |
WO2019192062A1 (zh) * | 2018-04-04 | 2019-10-10 | 上海金丘信息科技股份有限公司 | 一种基于信任成员的动态权益的共识方法 |
CN110336707A (zh) * | 2019-08-07 | 2019-10-15 | 卓尔智联(武汉)研究院有限公司 | 区块链共识装置、方法及计算机可读存储介质 |
CN110351133A (zh) * | 2019-06-28 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 用于区块链系统中的主节点切换处理的方法及装置 |
-
2020
- 2020-01-20 CN CN202010064076.6A patent/CN111327414A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391320A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种共识方法及装置 |
WO2019192062A1 (zh) * | 2018-04-04 | 2019-10-10 | 上海金丘信息科技股份有限公司 | 一种基于信任成员的动态权益的共识方法 |
CN108667614A (zh) * | 2018-04-19 | 2018-10-16 | 上海分布信息科技有限公司 | 一种拜占庭容错方法及其实现系统 |
CN109685505A (zh) * | 2018-12-24 | 2019-04-26 | 电子科技大学 | 基于关联环签名的拜占庭容错共识优化方法 |
CN109995536A (zh) * | 2019-03-15 | 2019-07-09 | 广州杰赛科技股份有限公司 | 一种区块链共识方法、装置及可读存储介质 |
CN110289966A (zh) * | 2019-06-19 | 2019-09-27 | 西南交通大学 | 基于拜占庭容错的抗自适应攻击联盟链共识方法 |
CN110351133A (zh) * | 2019-06-28 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 用于区块链系统中的主节点切换处理的方法及装置 |
CN110336707A (zh) * | 2019-08-07 | 2019-10-15 | 卓尔智联(武汉)研究院有限公司 | 区块链共识装置、方法及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
张维忠;徐步尘;高飞;: "对用电信息保护的拜占庭容错联盟链共识算法" * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767347A (zh) * | 2020-07-27 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 共识算法的切换方法、装置、节点设备及存储介质 |
CN111767347B (zh) * | 2020-07-27 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 共识算法的切换方法、装置、节点设备及存储介质 |
CN112636905A (zh) * | 2020-12-11 | 2021-04-09 | 北京航空航天大学 | 基于多角色的可扩展共识机制的系统及方法 |
CN112636905B (zh) * | 2020-12-11 | 2022-02-15 | 北京航空航天大学 | 基于多角色的可扩展共识机制的系统及方法 |
CN112487102A (zh) * | 2020-12-15 | 2021-03-12 | 深圳前海微众银行股份有限公司 | 区块链数据处理方法、装置及电子设备 |
CN112487102B (zh) * | 2020-12-15 | 2024-03-19 | 深圳前海微众银行股份有限公司 | 区块链数据处理方法、装置及电子设备 |
CN113269637A (zh) * | 2020-12-28 | 2021-08-17 | 上海能链众合科技有限公司 | 一种基于区块链的智能设备数据的存证与验证方法 |
CN112907369A (zh) * | 2021-02-08 | 2021-06-04 | 网易(杭州)网络有限公司 | 基于区块链的数据共识方法及装置、电子设备、存储介质 |
CN113254526A (zh) * | 2021-03-02 | 2021-08-13 | 中国信息通信研究院 | 区块链共识方法、装置及系统 |
CN113761071A (zh) * | 2021-10-09 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN114254050A (zh) * | 2022-03-02 | 2022-03-29 | 恒生电子股份有限公司 | 区块链网络共识预加载方法、装置、设备及存储介质 |
WO2023221567A1 (zh) * | 2022-05-20 | 2023-11-23 | 清华大学 | 一种区块链共识方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111327414A (zh) | 一种区块链共识方法、系统及计算机存储介质、电子设备 | |
CN109426949B (zh) | 一种跨链交易方法及装置 | |
CN111681003B (zh) | 资源跨链转移方法、装置、计算机设备以及存储介质 | |
WO2021244208A1 (zh) | 区块链的提案消息处理方法、装置、设备以及存储介质 | |
KR102469267B1 (ko) | 블록 체인 합의 방법, 어카운팅 노드 및 노드 | |
US20220239496A1 (en) | Blockchain consensus method, device and system | |
CN112541758A (zh) | 基于区块链的多轮投票式容错排序共识机制与方法 | |
WO2023024886A1 (zh) | 一种基于可靠广播的二元共识方法、装置、电子设备及存储介质 | |
EP4213444A1 (en) | Method and specialised network node for fast propagation over a blockchain network | |
CN112600678B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
WO2023016428A1 (zh) | 一种拜占庭容错方法、装置、电子设备及存储介质 | |
CN111062811B (zh) | 一种区块链共识方法、系统、存储介质 | |
CN110995701A (zh) | 一种区块链共识方法、系统、电子设备、存储介质 | |
WO2023024885A1 (zh) | 一种基于可靠广播的可再投票二元共识方法、装置、电子设备及存储介质 | |
CN111104460A (zh) | 一种区块链共识方法、系统、电子设备、存储介质 | |
WO2023184881A1 (zh) | 提案共识执行方法、区块链系统、设备和存储介质 | |
KR20220074971A (ko) | 블록체인 기반 데이터 프로세싱 방법, 장치 및 디바이스, 그리고 판독가능 저장 매체 | |
CN112036878B (zh) | 数据处理方法及装置 | |
CN109921897B (zh) | 工作量证明计算的触发方法、装置、计算设备及存储介质 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112565370B (zh) | 基于无线通信与区块链场景的计算结果验证方法及系统 | |
US20240039727A1 (en) | Blockchain-based data processing method and apparatus, device, and readable storage medium | |
CN111064813B (zh) | 在区块链共识处理时进行处理消息同步的方法及装置 | |
WO2023005500A1 (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN114900837A (zh) | 网络处理方法、装置、系统、设备及介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200623 |