CN109327548A - 一种区块链更新方法及区块链更新系统 - Google Patents
一种区块链更新方法及区块链更新系统 Download PDFInfo
- Publication number
- CN109327548A CN109327548A CN201811438024.XA CN201811438024A CN109327548A CN 109327548 A CN109327548 A CN 109327548A CN 201811438024 A CN201811438024 A CN 201811438024A CN 109327548 A CN109327548 A CN 109327548A
- Authority
- CN
- China
- Prior art keywords
- node
- request message
- point group
- group
- block chain
- 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
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
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Abstract
本发明涉及一种区块链更新方法及区块链更新系统,该方法包括以下步骤:中心节点接收客户端发送的请求消息;中心节点向中心节点所在的第一节点群中各节点广播所述请求消息,所述第一节点群中各节点对所述请求消息进行共识处理;当所述第一节点群中各节点对所述请求消息达成共识时,第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步;当所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。本发明的区块链更新方法及区块链更新系统将区块链的所有节点分为两部分,避免了节点过多拜占庭容错不适用的问题,提高了网络可以容纳的总节点数目,增强了网络容错能力和扩展性。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链更新方法及区块链更新系统。
背景技术
分布式系统正常工作核心问题是保证集群中所有节点数据完全相同并且能够对某个提案达成一致。传统分布式系统面临下面两个问题:
1.节点数量增加或者减少,可能是节点失效故障宕机
2.节点之间通信被干扰或者终端,运行速度存在差异或者区块链网络存在延迟等等。
现实情况中区块链网络存在延迟是必然的,在强一致性和可用性之间作出权衡,目前主流分布式系统最终选择一致性。允许多个节点出现冲突,只要满足节点之间可以正常通信,并且冲突可以在有限时间内解决两个条件就可以达到最终一致性。目前传统分布式系统通过Paxos和Raft共识算法可以很好的解决一致性问题。
区块链技术是利用加密链式的区块结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用自动化脚本代码来编程和操作数据的一种全新的去中心化基础架构与分布式计算范式。
在区块链网络中,例如比特币区块链网络,节点不仅存在失效问题,还存在作恶的可能,即节点可能会故意发送错误数据。这里我们就要引入拜占庭容将军问题,拜占庭将军模型则是分布式领域中最复杂严格的容错模型,它允许节点作恶,即节点可以选择不响应甚至故意发送错误数据。为了避免这样的错误,区块链系统引入一种共识机制,要求每一个节点都有唯一一个公认的全局账本。
目前存在的共识机制算法有工作量证明机制POW(Proof of Work,工作量证明机制,矿工在处理交易数据的同时不断进行哈希计算,直到得到一个前23位为0的哈希值即为nonce,这个过程就是在解决一个有一定难度但是可行的计算问题,但是验证答案的过程对于其他节点而言是非常容易地,也就是一个不容易解答但是容易验证的问题,这种问题通常需要消耗一定量的计算力,矿工通过算力比拼竞争区块记账权和代币奖励),权益证明机制POS(Proof of Stake,权益证明机制,基本思想是让区块链网络中拥有越多权益的节点有机会在更短时间内做更多的决定,因为权益持有人更倾向于维护区块链网络利益且害怕作恶后被惩罚),权威证明机制POA(Proof Of Authority,权威证明,使用一组所谓的“权限”允许人们在区块链上创建新的节点并确保全网安全),委托权益证明DPOS(DelegatedProof Of Stake,委托权益证明,DPOS能够让每个节点选出可以代表自己利益的节点参与到记账权的争夺中,即类似于董事会的投票机制,选举出n个记账节点,后续提案由这些被选中的节点轮流处理),实用拜占庭算法PBFT(Practical Byzantine Fault Tolerance,实用拜占庭算法,PBFT算法在保证灵活性和安全性的前提下最大允许(n-1)/3的容错性,信息在节点之间互相交换后,各节点列出所有得到的信息最后以大多数的结果作为解决方法)等等。
比特币是目前为止区块链技术最成功的应用,采用竞争记账的方式达成共识,竞争结果的判定是有工作量证明机制POW来完成的。POW缺点是需要共识效率低下/资源浪费/有分叉/需要巨大的电力成本等等,POW属于概率性拜占庭协议。
以太坊采用的POS权益证明机制达成共识,饮用币龄,弥补POW共识机制共识效率低下问题,可以在更短时间内达成共识,缺点是因采用权益结余,可能会导致某些账户权利太大。
1999年,Castro Liskov在文献《Practical Byzantine Fault Tolerance andProactive Recovery》提出了PBFT算法,首次把拜占庭容错算法复杂度从指数级降低到多项式级,该算法基于Paxos算法进行优化,也被称为Byzantine Paxos。目前已经得到广泛应用,PBFT采用密码学相关技术(RSA签名算法/消息验证编码/摘要)确保消息传递过程无法被篡改和破坏。可以在恶意节点不超过1/3情况下保证安全性和灵活性。
PBFT算法是通过投票达成共识,可以很好的解决分叉问题并且提升区块链网络效率;POW和POS算法无法脱离token的存在,PBFT可以不依赖于此,共识效率高也可以应用于高频交易场景。
PBFT算法存在的问题:
1.计算效率依赖于参与协议的节点数量,超过100个节点,拜占庭容错就不再适用了,不适用于节点数量过大的区块链,比如公链环境,所以PBFT非常适用于联盟链或者私有链等中小规模环境。
2.系统扩展性差。
3.系统节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私链。
4.PBFT算法要求总节点数n>=3f+1(其中,f代表作恶节点数)。系统的失效节点数量不得超过全网节点的1/3,否则整个系统无法运转,容错率相对较低。
因此,提供一种区块链更新方法及区块链更新系统。
发明内容
鉴于上述问题,提出了本发明以便提供一种区块链更新方法及区块链更新系统,克服系统中节点过多拜占庭容错不适用,造成网络无法共识的问题。
根据本发明的一个方面,提供一种区块链更新方法,包括以下步骤:
中心节点接收客户端发送的请求消息;
中心节点向中心节点所在的第一节点群中各节点广播所述请求消息,所述第一节点群中各节点对所述请求消息进行共识处理;
当所述第一节点群中各节点对所述请求消息达成共识时,第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步;
当所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。
进一步地,所述中心节点向中心节点所在的第一节点群中各节点广播所述请求消息之前,还包括:
根据所述中心节点选取目标数量的节点组成第一节点群,除所述第一节点群外的剩余节点组成第二节点群;
其中,所述目标数量小于预设阈值。
进一步地,所述第一节点群中各节点对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理。
进一步地,所述第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步。
进一步地,所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点对所述请求消息的消息签名、视图编号以及消息序列号进行验证,若验证通过,则确认达成共识。
进一步地,所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中任一节点与所述第一节点群中节点对所述请求消息完成数据同步后,将最新的数据发送至该节点的邻居节点;
若所述第二节点群中任一节点在预定时间内没有完成数据同步,则向该节点的邻居节点发送推送数据同步的请求。
根据本发明的另一方面,提供一种区块链更新系统,包括:中心节点、第二节点群和中心节点所在的第一节点群,
中心节点,用于接收客户端发送的请求消息,并向中心节点所在的第一节点群中各节点广播所述请求消息;
第一节点群中各节点,用于对所述请求消息进行共识处理,并在所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新;
第二节点群中各节点,用于在所述第一节点群中各节点对所述请求消息达成共识时,与所述第一节点群中节点对所述请求消息进行数据同步,并在所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。
进一步地,区块链更新系统,还包括:
节点群分类模块,用于根据所述中心节点选取目标数量的节点组成第一节点群,除所述第一节点群外的剩余节点组成第二节点群,
其中,所述目标数量小于预设阈值。
进一步地,在第一节点群中,所述第一节点群中各节点对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理。
进一步地,在第二节点群中,所述第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步。
本发明与现有技术相比具有以下的优点:
本发明的区块链更新方法及区块链更新系统将区块链的所有节点分为两部分,第一节点群中节点对请求消息共识处理,第二节点群中节点与第一节点群中节点对请求消息进行数据同步,避免了节点过多拜占庭容错不适用的问题,提高了网络可以容纳的总节点数目,增强了网络容错能力和扩展性。
附图说明
以下结合附图和实施例对本发明作进一步说明。
图1是本发明的区块链更新方法步骤图;
图2是本发明的区块链更新系统示意图;
图3是本发明的PBFT节点群包括4个节点时的通信过程示意图;
在附图中,10-第一节点群,20-第二节点群,30-中心节点。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1是本发明的区块链更新方法步骤图,参见图1,本发明提供的区块链更新方法,包括以下步骤:
中心节点接收客户端发送的请求消息;
中心节点向中心节点所在的第一节点群中各节点广播所述请求消息,所述第一节点群中各节点对所述请求消息进行共识处理;
当所述第一节点群中各节点对所述请求消息达成共识时,第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步;
当所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。
本发明的区块链更新方法将区块链的所有节点分为两部分,第一节点群中节点对请求消息共识处理,第二节点群中节点与第一节点群中节点对请求消息进行数据同步,避免了节点过多拜占庭容错不适用的问题,提高了网络可以容纳的总节点数目,增强了网络容错能力和扩展性。
优选的,所述中心节点向中心节点所在的第一节点群中各节点广播所述请求消息之前,还包括:
根据所述中心节点选取目标数量的节点组成第一节点群,除所述第一节点群外的剩余节点组成第二节点群;
其中,所述目标数量小于预设阈值。具体地,第一节点群节点的选取是随机的,值得注意的是,第一节点群节点可以选取中心节点周围的节点,预设阀值可以为100,但不限于此。
优选的,所述第一节点群中各节点对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理。在这里,第一节点群可以称为PBFT节点群。
具体地,如图3所示,为了便于描述PBFT在目标数量M个(M<100)节点通信原理,我们假设M=4来简述工作过程。客户端Client发送请求随机选择任意节点作为中心center节点,选取该节点周围任意3个节点与中心center节点组成PBFT节点群进行PBFT算法。这里客户端Client选择服务端0作为中心center节点,服务端0,1,2,3组成PBFT节点,假设3号为宕机服务端:
1)请求阶段:客户端Client(相当于总司令)发送请求消息到服务端0(相当于军长)。
2)预准备阶段:服务端0收到客户端Client的请求消息进行广播,并且扩散给服务端1、2、3(相当于三个师长)。
3)准备阶段:服务端1,2,3收到请求消息后再次广播,服务端1分别扩散给服务端0、2、3,服务端2分别扩散给服务端0、1、3,3因为宕机无法广播,这里姑且认为该师长叛变。
4)确认阶段:0、1、2、3服务端在准备阶段若收到一定数量的相同请求,则进入确认阶段,广播确认请求。
5)传递阶段:0、1、2、3节点在确认阶段,若收到超过一定数量相同请求,把这个结果传递给剩余的非PBFT节点群(第二节点群)中节点,剩余的节点通过数据同步达成共识。
这里涉及到一个问题,4个节点只有1个节点是宕机的节点,PBFT是在M>3F+1,M为PBFT总节点数目,F为该节点群中容错节点数目,所以只要容错节点数目满足M>3F+1拜占庭容错就可以得到解决,各个节点很快达成共识。
优选的,所述第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步。在这里,第二节点群可以称为Gossip节点群。
Gossip节点群通过Gossip协议达成共识:
Gossip是一个带冗余的容错算法,更进一步,Gossip是一个最终一致性算法。
Gossip虽然无法保证在某个时刻所有节点状态一致,但可以保证在“最终”所有节点一致,“最终”是一个现实中存在,但理论上无法证明的时间点。类似于人群中的谣言传播,Gossip协议是一种按照自己的需求自行选择邻近节点并与之交换信息的通信方式。
本发明实施例中,除去第一节点群的M个节点之外,其它第二节点群的N个节点与第一节点群节点通过Gossip协议达成共识。每个节点都随机与其它节点通信,经过一番杂乱无章的通信,最终所有节点状态都会达成一致。每个节点可能知道所有其它节点,也可能仅知道几个邻居节点,只要这些节点可以通过区块链网络连通,最终节点们的状态都是一致的,Gossip协议具有疫情传播的特点。
节点利用Gossip来以一种可扩展的方式广播账本和通道数据。Gossip出来消息是连续的,并且通道上的每个节点都在不断地接收当前来自多个节点的账本中已达成一致性的数据。每个通过Gossip传输的消息都会被签名,因此由拜占庭节点发送的伪造的消息将会很容易地被识别出来,而且可以防止将消息分发到不希望发送的目标处。节点因为受到延迟、区块链网络分区或者其他原因的影响导致缺少部分区块的情况,最终将通过联系已拥有这些缺失的区块的节点的方式,与当前账本状态进行同步。
基于Gossip的数据传播协议在区块链网络上执行三个主要功能:
1.通过不断识别可用的成员节点并最终监测节点离线状态的方式,对节点的发现和通道中的成员进行管理。
2.通过通道中的所有节点来分发账本数据。任何数据未同步的节点都可以通过通道中其他节点来标识缺失的区块,并通过复制正确的数据来进行同步。
3.通过允许点对点状态传输更新账本数据,使新加入连接的节点快速得到同步。
本发明的区块链更新方法先随机选取固定数量的节点进行PBFT算法通信,其它节点进行Gossip通信达成共识,最终达到一致性,提高了区块链网络可以容纳的总节点数目,增强了区块链网络容错能力和扩展性。具体地,从M+N个节点组成的区块链网络中可以看出,随机选取的M个节点做PBFT算法通信,容错节点数目只要小于1/3M即可,N个节点做Gossip通信,容错节点不限,总体增加了区块链网络容错性,并且增大了区块链网络中节点数目。
优选的,所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点对所述请求消息的消息签名、视图编号以及消息序列号进行验证,若验证通过,则确认达成共识。
在这里,第一节点群中各节点具体验证以下三个问题:消息签名是否正确,视图编号是否一致,以及消息序列号是否满足水线条件。验证通过条件包括:消息签名正确、消息的视图编号与节点当前视图编号一致和消息序列号满足水线条件。一旦验证通过了,PBFT节点群中节点将确认消息写入消息日志中,每个PBFT节点群节点都是经过上述验证确认,达成共识,执行命令。
优选的,所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中任一节点与所述第一节点群中节点对所述请求消息完成数据同步后,将最新的数据发送至该节点的邻居节点;
若所述第二节点群中任一节点在预定时间内没有完成数据同步,则向该节点的邻居节点发送推送数据同步的请求。
此时,第二节点群中任一节点A的数据得到更新以后,其会将最新的状态发送给它的邻居节点B;第二节点群中任一节点A如果在一段时间内没有得到更新,则会主动要求邻居节点B向其推送数据,从而进行被动更新,经过几轮交换以后,最终能够使所有的节点都获得最新的数据。
参见图3,基于PBFT与Gossip结合的算法具体实现方案如下,假定在区块链网络中有M+N个节点,M个节点组成PBFT节点群,N个节点组成Gossip节点群,PBFT节点数目超过100节点,拜占庭容错作用就无效了,这里M需要满足条件M<100,N的数量暂时不做限制。
本发明实施例方法包括如下过程:
(1)客户端发送请求给区块链网络上的节点
客户端发送请求随机选择的节点中任意节点作为中心节点,选取该节点周围任意M个节点进行PBFT算法。达成共识之后,传递共识信息到Gossip节点群。
(2)M个节点的PBFT通信达成共识
M个节点达成PBFT共识需要经历几下几个阶段:
请求(Request)阶段:客户端client请求下发指令给中心center节点,client相当于总司令,center节点为军长,总司令给下面军长发送指令。
预准备(pre-prepare)阶段:主节点向所有副本节点发送预准备消息,其中包括当前视图编号,client请求以及请求摘要,签名是否一致等等。军长(中心节点)对各位师长(副本节点)说,现在是我的时代(视图),我是军长,你们都是师长,所有的人都听我的。现在公布总司令的命令,命令内容包括总司令名称和命令摘要内容。
准备(prepare)阶段:包括中心节点在内所有副本节点在收到准备消息,对消息签名是否正确,视图编号是否一致,以及消息序列号是否满足水线三个条件进行验证。若验证通过会把准备消息写入消息日志中,副本节点核对签名信息,比如其他师长听到总司令名字,说对,总司令的确是这个人没错,然后核对总司令曾任命主节点为军长,信息无误,军长的话可信。
确认(commit)阶段:每个副本集接受到确认消息无误条件是:
1)签名正确;
2)消息的视图变好与节点当前视图编号一致;
3)消息的序号n满足水线条件,在h与H之间;
一旦确认消息的接受条件满足了,则该副本节点将确认消息写入消息日志中。每个师长都是经过上述确认,达成共识,执行命令。
(3)传递阶段:副本集达成的共识信息传递给剩余节点,剩余节点通过Gossip协议达成共识。
(4)回复:M+N节点达成共识反馈结果给客户端client节点,达成共识的节点,生成新区块,写入区块链。
本发明的区块链更新方法结合PBFT算法和Gossip算法能够随机选取节点,使得系统扩展性增强,单独的PBFT系统节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私有链,本算法可随机选取节点进行通信。
本发明的区块链更新方法结合PBFT算法和Gossip算法容错率增强,单独的PBFT算法要求总节点数n≥3f+1,其中,f代表作恶节点数,系统的失效节点数量不得超过全网节点的1/3,否则整个系统无法运转,容错率相对较低。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图2是本发明的区块链更新系统框图,参见图2,本发明提供的区块链更新系统,包括:中心节点30、中心节点所在的第一节点群10、第二节点群20,
中心节点,用于接收客户端发送的请求消息,并向中心节点所在的第一节点群中各节点广播所述请求消息;
第一节点群中各节点,用于对所述请求消息进行共识处理,并在所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新;
第二节点群中各节点,用于在所述第一节点群中各节点对所述请求消息达成共识时,与所述第一节点群中节点对所述请求消息进行数据同步,并在所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。
本发明的区块链更新系统将区块链的所有节点分为两部分,第一节点群中节点对请求消息共识处理,第二节点群中节点与第一节点群中节点对请求消息进行数据同步,避免了节点过多拜占庭容错不适用的问题,提高了网络可以容纳的总节点数目,增强了网络容错能力和扩展性。
进一步地,区块链更新系统,还包括:
节点群分类模块,用于根据所述中心节点选取目标数量的节点组成第一节点群,除所述第一节点群外的剩余节点组成第二节点群,
其中,所述目标数量小于预设阈值。
进一步地,在第一节点群中,所述第一节点群中各节点对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理。
进一步地,在第二节点群中,所述第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步。
进一步的,在第一节点群中,所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点对所述请求消息的消息签名、视图编号以及消息序列号进行验证,若验证通过,则确认达成共识。
进一步的,在第二节点群中,所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中任一节点与所述第一节点群中节点对所述请求消息完成数据同步后,将最新的数据发送至该节点的邻居节点;
若所述第二节点群中任一节点在预定时间内没有完成数据同步,则向该节点的邻居节点发送推送数据同步的请求。
本发明Gossip协议和PBFT结合的算法,通过随机选取固定数量的节点做PBFT算法,其它节点通过Gossip协议进行数据同步,最终达到一致性。
Gossip协议是在一个有界区块链网络中,每个节点都随机与其它节点通信,经过一番杂乱无章的通信,最终所有节点状态都会达成一致。每个节点可能知道所有其它节点,也可能仅知道几个邻居节点,只要这些节点可以通过区块链网络连通,最终节点们的状态都是一致的,Gossip协议具有疫情传播的特点。
Gossip协议在P2P区块链网络中是比较成熟的协议,优点是即使集群节点数量增加,每个节点的负载也不会增加很多,几乎是恒定的。即使有节点因宕机而重启,也会有新节点介入,但是经过一段时间后,这些节点的状态也会与其它节点达成一致。Gossip天然具有分布式容错能力。
传统拜占庭算法复杂度为0(N*N),对于节点比较多的区块链网络是不可扩展的,由于Gossip协议本身具有较好的可扩展性,当系统的规模增大时,适当增加与试图中通信节点的个数,仍然可以保证节点间高效率传递信息。所以在Gossip节点群增加了区块链网络可扩展性,也就增加了整个区块链网络的可扩展性。
本发明的区块链更新系统先随机选取固定数量的节点进行PBFT算法通信,其它节点进行Gossip通信达成共识,最终达到一致性,提高了区块链网络可以容纳的总节点数目,增强了区块链网络容错能力和扩展性。
本发明的区块链更新系统结合PBFT算法和Gossip算法能够随机选取节点,使得系统扩展性增强,单独的PBFT系统节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私有链,本算法可随机选取节点进行通信。
本发明的区块链更新系统结合PBFT算法和Gossip算法容错率增强,单独的PBFT算法要求总节点数n≥3f+1,其中,f代表作恶节点数,系统的失效节点数量不得超过全网节点的1/3,否则整个系统无法运转,容错率相对较低。
具体地,本发明的区块链更新系统工作原理如下:
本发明随机选取固定数量的节点做PBFT通信,把这些节点叫做PBFT节点群,然后其它节点通过Gossip协议与PBFT达成共识节点进行数据同步,最终达到一致。
具体实现方案步骤如下:
输入:提案
输出:新的区块链
步骤1客户端发送请求给区块链网络上的节点;
步骤2选择提案节点及PBFT节点群;
步骤3在PBFT节点群群中广播消息;
步骤4PBFT节点群达成共识;
步骤5Gossip节点群达成共识;
步骤6检查是否达成共识,若达成共识且共识结果不是False,则发布完整区块,否则重复步骤1,将区块加入区块链,输出新的区块链;
步骤7反馈客户端,结束。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种区块链更新方法,其特征在于,包括以下步骤:
中心节点接收客户端发送的请求消息;
中心节点向中心节点所在的第一节点群中各节点广播所述请求消息,所述第一节点群中各节点对所述请求消息进行共识处理;
当所述第一节点群中各节点对所述请求消息达成共识时,第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步;
当所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。
2.根据权利要求1所述的方法,其特征在于,所述中心节点向中心节点所在的第一节点群中各节点广播所述请求消息之前,还包括:
根据所述中心节点选取目标数量的节点组成第一节点群,除所述第一节点群外的剩余节点组成第二节点群;
其中,所述目标数量小于预设阈值。
3.根据权利要求1所述的区块链更新方法,其特征在于,所述第一节点群中各节点对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理。
4.根据权利要求1所述的区块链更新方法,其特征在于,所述第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步。
5.根据权利要求3所述的区块链更新方法,其特征在于,所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点对所述请求消息的消息签名、视图编号以及消息序列号进行验证,若验证通过,则确认达成共识。
6.根据权利要求4所述的区块链更新方法,其特征在于,所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中任一节点与所述第一节点群中节点对所述请求消息完成数据同步后,将最新的数据发送至该节点的邻居节点;
若所述第二节点群中任一节点在预定时间内没有完成数据同步,则向该节点的邻居节点发送推送数据同步的请求。
7.一种区块链更新系统,其特征在于,包括:中心节点、第二节点群和中心节点所在的第一节点群,
中心节点,用于接收客户端发送的请求消息,并向中心节点所在的第一节点群中各节点广播所述请求消息;
第一节点群中各节点,用于对所述请求消息进行共识处理,并在所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新;
第二节点群中各节点,用于在所述第一节点群中各节点对所述请求消息达成共识时,与所述第一节点群中节点对所述请求消息进行数据同步,并在所述第二节点群中各节点对所述请求消息完成数据同步时,根据所述请求消息对区块链进行更新。
8.根据权利要求7所述的区块链更新系统,其特征在于,还包括:
节点群分类模块,用于根据所述中心节点选取目标数量的节点组成第一节点群,除所述第一节点群外的剩余节点组成第二节点群,
其中,所述目标数量小于预设阈值。
9.根据权利要求8所述的区块链更新系统,其特征在于,在第一节点群中,所述第一节点群中各节点对所述请求消息进行共识处理的步骤包括:
所述第一节点群中各节点通过实用拜占庭容错PBFT算法对所述请求消息进行共识处理。
10.根据权利要求9所述的区块链更新系统,其特征在于,在第二节点群中,所述第二节点群中各节点与所述第一节点群中节点对所述请求消息进行数据同步的步骤包括:
所述第二节点群中各节点通过Gossip协议与所述第一节点群中节点对所述请求消息进行数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811438024.XA CN109327548A (zh) | 2018-11-27 | 2018-11-27 | 一种区块链更新方法及区块链更新系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811438024.XA CN109327548A (zh) | 2018-11-27 | 2018-11-27 | 一种区块链更新方法及区块链更新系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109327548A true CN109327548A (zh) | 2019-02-12 |
Family
ID=65259361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811438024.XA Pending CN109327548A (zh) | 2018-11-27 | 2018-11-27 | 一种区块链更新方法及区块链更新系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109327548A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902097A (zh) * | 2019-03-02 | 2019-06-18 | 杭州复杂美科技有限公司 | 数据更新方法、数据恢复方法、设备和存储介质 |
CN110084596A (zh) * | 2019-04-01 | 2019-08-02 | 杜晓楠 | 一种处理区块链混合共识的方法和装置 |
CN110099127A (zh) * | 2019-05-13 | 2019-08-06 | 西安华域网络文化发展有限公司 | 一种区块链数据同步方法、装置、介质和电子设备 |
CN110166364A (zh) * | 2019-05-15 | 2019-08-23 | 武汉理工大学 | 一种基于实用拜占庭容错算法的软件定义机会网络流表更新方法 |
CN110430282A (zh) * | 2019-08-16 | 2019-11-08 | 微位(深圳)网络科技有限公司 | 分布式系统节点之间的数据传输方法及装置 |
CN110474986A (zh) * | 2019-08-20 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法、装置及系统 |
CN110597459A (zh) * | 2019-08-08 | 2019-12-20 | 上海隔镜信息科技有限公司 | 存储方法、主、副节点及包含其的系统 |
CN110636113A (zh) * | 2019-08-23 | 2019-12-31 | 上海电力大学 | 区块链的拜占庭容错共识方法、系统、设备和存储介质 |
CN110650193A (zh) * | 2019-09-20 | 2020-01-03 | 腾讯科技(深圳)有限公司 | 节点管理方法、集群管理设备及存储介质 |
CN110800258A (zh) * | 2019-03-18 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 用于结束视图更改协议的系统和方法 |
CN110796547A (zh) * | 2019-10-30 | 2020-02-14 | 桂林电子科技大学 | 一种基于联盟区块链的改进的实用拜占庭容错系统 |
CN111198895A (zh) * | 2020-02-18 | 2020-05-26 | 夏南南 | 一种区块链更新方法 |
CN111314427A (zh) * | 2020-01-16 | 2020-06-19 | 杭州趣链科技有限公司 | 一种区块链全部节点信息的获取方法、设备和存储介质 |
CN111553594A (zh) * | 2020-04-28 | 2020-08-18 | 腾讯科技(深圳)有限公司 | 资源分配方法、装置、计算机设备和计算机可读存储介质 |
CN111600965A (zh) * | 2020-06-05 | 2020-08-28 | 支付宝(杭州)信息技术有限公司 | 区块链中的共识方法和系统 |
WO2020177547A1 (zh) * | 2019-03-05 | 2020-09-10 | 深圳前海微众银行股份有限公司 | 一种区块链系统及区块链系统的交易处理方法 |
CN111654415A (zh) * | 2020-05-28 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 基于区块链的信息处理方法、装置、设备及可读存储介质 |
CN112162768A (zh) * | 2020-10-14 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链升级方法和系统 |
CN112231415A (zh) * | 2020-12-16 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 区块链网络的数据同步方法、系统、电子设备及可读介质 |
CN112422526A (zh) * | 2020-11-03 | 2021-02-26 | 山西特信环宇信息技术有限公司 | 一种锥体区块链共识系统、方法及网络 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170140408A1 (en) * | 2015-11-16 | 2017-05-18 | Bank Of America Corporation | Transparent self-managing rewards program using blockchain and smart contracts |
CN107257374A (zh) * | 2017-06-15 | 2017-10-17 | 中国银行股份有限公司 | 一种区块链上的交易处理方法及系统 |
CN107807984A (zh) * | 2017-10-31 | 2018-03-16 | 上海分布信息科技有限公司 | 一种分区的区块链网络及其实现分区共识的方法 |
CN108616596A (zh) * | 2018-05-09 | 2018-10-02 | 南京邮电大学 | 基于动态授权和网络环境感知的区块链自适应共识方法 |
CN108763302A (zh) * | 2018-04-19 | 2018-11-06 | 深圳市网心科技有限公司 | 区块链共识处理方法、电子装置及计算机可读存储介质 |
CN108810077A (zh) * | 2018-04-19 | 2018-11-13 | 深圳市网心科技有限公司 | 区块链共识处理方法、电子装置及计算机可读存储介质 |
-
2018
- 2018-11-27 CN CN201811438024.XA patent/CN109327548A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170140408A1 (en) * | 2015-11-16 | 2017-05-18 | Bank Of America Corporation | Transparent self-managing rewards program using blockchain and smart contracts |
CN107257374A (zh) * | 2017-06-15 | 2017-10-17 | 中国银行股份有限公司 | 一种区块链上的交易处理方法及系统 |
CN107807984A (zh) * | 2017-10-31 | 2018-03-16 | 上海分布信息科技有限公司 | 一种分区的区块链网络及其实现分区共识的方法 |
CN108763302A (zh) * | 2018-04-19 | 2018-11-06 | 深圳市网心科技有限公司 | 区块链共识处理方法、电子装置及计算机可读存储介质 |
CN108810077A (zh) * | 2018-04-19 | 2018-11-13 | 深圳市网心科技有限公司 | 区块链共识处理方法、电子装置及计算机可读存储介质 |
CN108616596A (zh) * | 2018-05-09 | 2018-10-02 | 南京邮电大学 | 基于动态授权和网络环境感知的区块链自适应共识方法 |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902097A (zh) * | 2019-03-02 | 2019-06-18 | 杭州复杂美科技有限公司 | 数据更新方法、数据恢复方法、设备和存储介质 |
WO2020177547A1 (zh) * | 2019-03-05 | 2020-09-10 | 深圳前海微众银行股份有限公司 | 一种区块链系统及区块链系统的交易处理方法 |
CN110800258B (zh) * | 2019-03-18 | 2022-04-22 | 创新先进技术有限公司 | 用于结束视图更改协议的系统和方法 |
CN110800258A (zh) * | 2019-03-18 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 用于结束视图更改协议的系统和方法 |
CN110084596A (zh) * | 2019-04-01 | 2019-08-02 | 杜晓楠 | 一种处理区块链混合共识的方法和装置 |
CN110084596B (zh) * | 2019-04-01 | 2023-02-10 | 杜晓楠 | 一种处理区块链混合共识的方法和装置 |
CN110099127A (zh) * | 2019-05-13 | 2019-08-06 | 西安华域网络文化发展有限公司 | 一种区块链数据同步方法、装置、介质和电子设备 |
CN110166364A (zh) * | 2019-05-15 | 2019-08-23 | 武汉理工大学 | 一种基于实用拜占庭容错算法的软件定义机会网络流表更新方法 |
CN110597459A (zh) * | 2019-08-08 | 2019-12-20 | 上海隔镜信息科技有限公司 | 存储方法、主、副节点及包含其的系统 |
CN110430282A (zh) * | 2019-08-16 | 2019-11-08 | 微位(深圳)网络科技有限公司 | 分布式系统节点之间的数据传输方法及装置 |
CN110430282B (zh) * | 2019-08-16 | 2022-03-01 | 微位(深圳)网络科技有限公司 | 分布式系统节点之间的数据传输方法及装置 |
CN110474986A (zh) * | 2019-08-20 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法、装置及系统 |
CN110474986B (zh) * | 2019-08-20 | 2022-08-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法、装置及系统 |
CN110636113A (zh) * | 2019-08-23 | 2019-12-31 | 上海电力大学 | 区块链的拜占庭容错共识方法、系统、设备和存储介质 |
CN110650193B (zh) * | 2019-09-20 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 节点管理方法、集群管理设备及存储介质 |
CN110650193A (zh) * | 2019-09-20 | 2020-01-03 | 腾讯科技(深圳)有限公司 | 节点管理方法、集群管理设备及存储介质 |
CN110796547A (zh) * | 2019-10-30 | 2020-02-14 | 桂林电子科技大学 | 一种基于联盟区块链的改进的实用拜占庭容错系统 |
CN111314427A (zh) * | 2020-01-16 | 2020-06-19 | 杭州趣链科技有限公司 | 一种区块链全部节点信息的获取方法、设备和存储介质 |
CN111198895A (zh) * | 2020-02-18 | 2020-05-26 | 夏南南 | 一种区块链更新方法 |
CN111553594A (zh) * | 2020-04-28 | 2020-08-18 | 腾讯科技(深圳)有限公司 | 资源分配方法、装置、计算机设备和计算机可读存储介质 |
CN111553594B (zh) * | 2020-04-28 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 资源分配方法、装置、计算机设备和计算机可读存储介质 |
CN111654415A (zh) * | 2020-05-28 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 基于区块链的信息处理方法、装置、设备及可读存储介质 |
CN111600965A (zh) * | 2020-06-05 | 2020-08-28 | 支付宝(杭州)信息技术有限公司 | 区块链中的共识方法和系统 |
CN111600965B (zh) * | 2020-06-05 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 区块链中的共识方法和系统 |
CN112162768A (zh) * | 2020-10-14 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链升级方法和系统 |
CN112422526A (zh) * | 2020-11-03 | 2021-02-26 | 山西特信环宇信息技术有限公司 | 一种锥体区块链共识系统、方法及网络 |
CN112422526B (zh) * | 2020-11-03 | 2023-02-03 | 山西特信环宇信息技术有限公司 | 一种锥体区块链共识系统、方法及网络 |
CN112231415A (zh) * | 2020-12-16 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 区块链网络的数据同步方法、系统、电子设备及可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109327548A (zh) | 一种区块链更新方法及区块链更新系统 | |
US11863624B2 (en) | Fast propagation of recent transactions over a blockchain network | |
Alfandi et al. | Blockchain solution for iot-based critical infrastructures: Byzantine fault tolerance | |
CN108769150A (zh) | 区块链网络的数据处理方法、装置、集群节点和存储介质 | |
CN111311414A (zh) | 一种基于一致性哈希算法的区块链多方共识方法 | |
CN111625593B (zh) | 基于区块链的数据处理方法、装置、计算机设备 | |
CN110298754B (zh) | 一种应用于区块链的共识方法 | |
CN113347164B (zh) | 基于区块链的分布式共识系统及方法、设备、存储介质 | |
CN114218612B (zh) | 一种适用于联盟链高频交易场景的共识方法 | |
CN109711192B (zh) | 区块链系统节点间交易方法及系统 | |
JP3910538B2 (ja) | 潜在的に非同期式のネットワーク中でシークレットを検証可能に共有する方法 | |
KR20200081533A (ko) | 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법 | |
CN112636989A (zh) | 一种联邦学习通信方法及装置 | |
Rahman et al. | Modified bully algorithm using election commission | |
CN114050904A (zh) | 一种基于两层级领导节点分片结构的共识系统及方法 | |
CN115134086A (zh) | 异步网络的动态委员会秘密分享更新方法及装置 | |
CN115174570A (zh) | 一种基于动态委员会的跨链共识方法及系统 | |
Sagirlar et al. | On the design of co-operating blockchains for IoT | |
CN106210053A (zh) | 一种电力系统广域消息管理方法 | |
CN116451776A (zh) | 一种基于高可用非交互式安全聚合的联邦学习方法 | |
CN116455685A (zh) | 一种在广播网络下的pbft改进共识方法 | |
CN103095827B (zh) | 一种基于随机网络编码的本地多客户端协同数据下载方法 | |
US10389647B2 (en) | Controller coordination system | |
CN101969641A (zh) | 基于快速ECDSA的大规模无线传感器网络轻量级Byzantine容错路由 | |
CN110443616A (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: 20190212 |
|
RJ01 | Rejection of invention patent application after publication |