CN117061303A - 区块链网络的共识方法及装置、设备、计算机可读介质 - Google Patents

区块链网络的共识方法及装置、设备、计算机可读介质 Download PDF

Info

Publication number
CN117061303A
CN117061303A CN202210502354.0A CN202210502354A CN117061303A CN 117061303 A CN117061303 A CN 117061303A CN 202210502354 A CN202210502354 A CN 202210502354A CN 117061303 A CN117061303 A CN 117061303A
Authority
CN
China
Prior art keywords
consensus
block
proposal
node
uplinked
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
Application number
CN202210502354.0A
Other languages
English (en)
Inventor
邵珠光
王春祥
王能
刘克猛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210502354.0A priority Critical patent/CN117061303A/zh
Publication of CN117061303A publication Critical patent/CN117061303A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/30Decision processes by autonomous network management units using voting and bidding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的实施例公开了一种区块链网络的共识方法及装置、设备、介质。该方法包括:共识节点在提案节点针对第一待上链区块发起的共识周期内,生成针对第一待上链区块的提案消息,并检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果,若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则获取提案消息,并根据所获取到的提案消息发起针对第一待上链区块的第二共识过程。本申请的技术方案提升区块链网络的共识效率,极大地优化了区块链网络的共识方案。

Description

区块链网络的共识方法及装置、设备、计算机可读介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种区块链网络的共识方法、区块链网络的共识装置、电子设备,以及计算机可读介质。
背景技术
区块链技术广泛应用于金融、征信、银行等领域,相关技术中针对区块链技术提出的BFT(Byzantine Fault Tolerance,拜占庭容错)等共识算法属于串行共识算法,每个区块都需要经过一个提案、预投票、预提交等三个阶段,其中,提案阶段提案节点要产生待上链区块(即待共识的区块),该过程非常耗时,导致共识效率较低。
可见,如何提升区块的共识效率是亟待解决的问题。
发明内容
为解决上述技术问题,本申请的实施例提供了一种区块链网络的共识方法及装置、设备、介质,进而至少在一定程度上提升了区块的共识效率。
根据本申请实施例的一个方面,本申请实施例提供了一种区块链网络的共识方法,所述方法由所述区块链网络中的共识节点执行,所述方法包括:在提案节点针对第一待上链区块发起的共识周期内,生成针对所述第一待上链区块的提案消息;检测所述提案节点针对所述第一待上链区块所发起的第一共识过程的共识结果;若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程失败,则获取所述提案消息;根据所获取到的提案消息发起针对所述第一待上链区块的第二共识过程。
根据本申请实施例的一个方面,本申请实施例提供了一种区块链网络的共识装置,所述装置配置于所述区块链网络中的共识节点,所述装置包括:生成模块,配置为在提案节点针对第一待上链区块发起的共识周期内,生成针对所述第一待上链区块的提案消息;检测模块,配置为检测所述提案节点针对所述第一待上链区块所发起的第一共识过程的共识结果;获取模块,配置为若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程失败,则获取所述提案消息;共识模块,配置为根据所获取到的提案消息发起针对所述第一待上链区块的第二共识过程。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:若检测到所述共识节点被选择为在所述提案节点之后进行下一轮共识过程的提案节点,则生成针对所述第一待上链区块的提案消息。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:生成针对所述第一待上链区块的提案消息,并将所述提案消息存储在指定存储区域中;
在本申请的一个实施例中,基于前述方案,所述获取模块,具体配置为:从所述指定存储区域中获取所述提案消息。
在本申请的一个实施例中,基于前述方案,所述获取模块,包括:确定单元,配置为确定所述第一待上链区块的标识信息;获取单元,配置为从所述指定区域中获取与所述第一待上链区块的标识信息相匹配的提案消息。
在本申请的一个实施例中,基于前述方案,所述生成模块,具体配置为:在所述提案节点针对所述第一待上链区块所发起的共识的提案阶段,生成针对所述第一待上链区块的提案消息。
在本申请的一个实施例中,基于前述方案,所述装置还包括:获取与统计模块,配置为获取所述提案节点针对所述第一待上链区块的第一提案消息生成时长,以及统计所述共识节点针对所述第一待上链区块的第二提案消息生成时长;确定模块,配置为根据所述第一提案消息生成时长与所述第二提案消息生成时长之间的关系,确定所述提案节点对应的行为状态的类型。
在本申请的一个实施例中,基于前述方案,所述确定模块,具体配置为:若所述第一提案消息生成时长大于所述第二提案消息生成时长,且所述第一提案消息生成时长与所述第二提案消息生成时长的差值大于预设时长阈值,则确定所述提案节点对应的行为状态为第一类型;若所述第一提案消息生成时长大于所述第二提案消息生成时长,且所述第一提案消息生成时长与所述第二提案消息生成时长的差值小于或等于所述预设时长阈值,则确定所述提案节点对应的行为状态为第二类型;若所述第一提案消息生成时长小于或等于所述第二提案消息生成时长,则确定所述提案节点对应的行为状态为第三类型;其中,所述第一类型、所述第二类型,以及所述第三类型的安全性依次递增。
在本申请的一个实施例中,基于前述方案,所述共识模块,具体配置为:广播所述提案消息;生成针对所述第一待上链区块的预投票消息,并广播所述第一待上链区块的预投票消息;若接收到预定数量个针对所述第一待上链区块的预投票消息,则生成针对所述第一待上链区块的预提交消息,并广播所述第一待上链区块的预提交消息,以实现针对所述第一待上链区块所发起的第二共识过程。
在本申请的一个实施例中,基于前述方案,所述装置还包括:发起模块,配置为若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程成功,则在下一轮共识过程中,在所述区块链网络中发起针对第二待上链区块的提案消息。
在本申请的一个实施例中,基于前述方案,所述发起模块,具体配置为:生成针对所述第二待上链区块的提案消息,并广播所述第二待上链区块的提案消息。
在本申请的一个实施例中,基于前述方案,所述装置还包括:删除模块,配置为若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程成功,则删除针对所述第一待上链区块的提案消息。
在本申请的一个实施例中,基于前述方案,所述共识周期包括提案阶段、预投票阶段和预提交阶段;所述检测模块,具体配置为:若在所述预投票阶段或所述预提交阶段的共识不满足共识策略,则得到用于表征所述提案节点针对所述第一待上链区块所发起的第一共识过程失败的共识结果;若在所述预投票阶段和所述预提交阶段的共识满足所述共识策略,则得到用于表征所述提案节点针对所述第一待上链区块所发起的第一共识过程成功的共识结果。
根据本申请实施例的一个方面,本申请实施例提供了一种电子设备,包括一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上所述的区块链网络的共识方法。
根据本申请实施例的一个方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的区块链网络的共识方法。
根据本申请实施例的一个方面,本申请实施例提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述的区块链网络的共识方法。
在本申请的实施例提供的技术方案中:在提案节点针对第一待上链区块发起的共识周期内,共识节点并行生成针对第一待上链区块的提案消息,这样当检测到提案节点针对第一待上链区块所发起的第一共识过程失败,可以获取该共识节点并行生成的针对第一待上链区块的提案消息,以发起针对第一待上链区块的第二共识过程。由于针对第一待上链区块的第二共识过程中是不需要生成第一待上链区块的提案消息的(只需获取即可),因此可以节省生成第一待上链区块的提案消息的时长,从而在极大程度上提升了共识效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种区块链网络的结构示意图;
图2示出了区块链中各区块的连接关系示意图;
图3示出了本申请的一个实施例的共识节点广播区块的示意图;
图4示出了本申请的一个实施例的区块共识的示意图;
图5示出了本申请的一个实施例的区块共识耗费时长的示意图;
图6示出了一种区块链网络的结构示意图;
图7示出了本申请的一个实施例的区块共识耗费时长的示意图;
图8示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图9示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图10示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图11示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图12示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图13示出了本申请的一个实施例的生成针对第一待上链区块的提案消息的示意图;
图14示出了本申请的一个实施例的生成针对第一待上链区块的提案消息的示意图;
图15示出了本申请的一个实施例的生成针对第一待上链区块的提案消息的示意图;
图16示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图17示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图18示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图19示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图20示出了本申请的一个实施例的区块链网络的共识方法的流程图;
图21示出了本申请的一个实施例的区块共识的示意图;
图22示出了本申请的一个实施例的区块共识的示意图;
图23示出了本申请的一个实施例的区块链网络的共识装置的框图;
图24示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相相同的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相同的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是,在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请实施例的技术方案涉及区块链技术,区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(即区块),每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括使用方管理、基础服务、智能合约以及运营管理等处理模块。其中,使用方管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及使用方信息和区块链地址对应关系维护(权限管理)等;基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营管理模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、检测网络情况、检测节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
如上,区块链本质上是一个去中心化的数据库,而区块链是由区块链网络中的节点共同维护的。比如,在图1所示的区块链网络中,可以包括多个节点101,多个节点101可以是形成区块链网络的各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链网络内的共享数据。为了保证区块链网络内的信息互通,区块链网络中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当区块链网络中的任意节点接收到输入信息时,区块链网络中的其它节点便根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储,使得区块链网络中全部节点上存储的数据均一致。
对于区块链网络中的每个节点,均具有与其对应的节点标识,而且区块链网络中的每个节点均可以存储有其它节点的节点标识,以便后续根据其它节点的节点标识,将生成的区块广播至区块链网络中的其它节点。每个节点中可维护一个节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。
区块链网络中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图2所示,区块链由多个区块组成,这些区块按照创建时间戳由小到大的顺序连接成链式结构,每个区块包括区块头和区块主体,区块头中存储有前序区块哈希及本区块的默克尔树(Merkle)根,区块体中包含本区块的完整交易数据,并以Merkle树的形式组织在一起。从区块链的结构可以看出,区块链中每个区块中存储的区块数据均与父区块(即前序区块)中存储的区块数据存在关联,保证了区块中输入信息的安全性。
区块链网络中各个节点可以是服务器,也可以是终端设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算(Cloud Computing)、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家居、车载终端等,但并不局限于此。各个节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
需要说明的是,Merkle树是区块链技术的重要组成部分,区块链不会直接保存明文的原始数据,原始数据需要被执行散列运算,以散列值的方式被存储。默克尔树就用于将多个原始数据经散列运算形成的散列值按照二叉树结构组织起来,保存在区块的块体中。
在区块链技术中还有一项关键的技术,即共识机制,共识机制是保证区块链系统正常运行的基础。所谓共识即是达成一致的意思,区块链系统中的每个节点设备各自存储有一份分布式账本(即区块链),区块链系统的共识过程就是让各个节点设备之间的分布式账本保持一致的过程。其中,区块链系统中的全部或部分节点设备可参与到区块链系统的共识过程中,区块链系统的共识过程通常是基于共识算法来实现,参与共识的各个节点设备通过运行共识算法来执行共识过程的相应流程。可选的共识算法比如可以有PoW(Proofof Work,工作量证明机制)、PoS(Proof of Stake,权益证明)、DPoS(Delegated Proof ofStake,委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错系统)等。
通常,在区块链的某个区块高度需要进行一轮或多轮共识过程,才能在参与共识的各个节点设备之间达成一致。区块高度用于表示连接在区块链上的区块数量,区块高度是区块的标志符,可用来指示区块在区块链中的位置,比如区块链中创始区块的区块高度默认为0,创始区块之后的第一个区块的区块高度为1(该第一个区块可以简称为区块1),创始区块之后的第二个区块的区块高度为2(该第二个区块可以简称为区块2),以此类推。
举例说明,某条区块链的当前区块的区块高度为300(简称为区块300),这表示已经有300个区块被堆叠在创始区块之上了,即从创始区块到区块300之间形成的区块链上的区块数量为301个。在区块链的某个区块高度进行的共识过程是指在区块链处于该某个区块高度时,对区块链系统中待上链的区块进行共识的过程,如果该待上链的区块共识成功,则该区块被添加至区块链上,区块链的区块高度则+1。例如:在区块链的区块高度10的共识过程就是指在区块链处于区块高度10时,对区块链系统中待上链的区块进行共识的过程,如果该区块共识成功,则该区块被添加至区块链上而使得区块链的区块高度由10变为11。
通常而言,一轮共识过程按照执行顺序可依次分为三个共识阶段,即提案阶段、预投票阶段和预提交阶段。参与同一轮共识过程的多个节点设备中包括提案节点和非提案节点两种类型。所谓提案节点是指由参与共识的多个节点设备通过选举产生的一个节点设备,作为提案节点的节点设备既负责在本轮共识过程的提案阶段产生待共识区块,并将该待共识区块广播给参与共识的其他节点设备进行共识处理;同时也负责对该待共识区块进行共识处理。而非提案节点则只对待共识区块进行共识处理。
共识处理包括预投票处理和预提交处理,预投票处理发生在预投票阶段,而预提交处理发生在预提交阶段。预投票处理是指是否同意对待共识区块进行预投票的过程,如果同意对待共识区块进行预投票,表示同意将该区块添加至区块链上。预提交处理是指是否同意对待共识区块进行预提交的过程,如果同意对待共识区块进行预提交,表示确认同意将该区块添加至区块链。在同一区块高度进行的多轮共识过程中,对于不同轮次的共识过程,参与共识的节点设备可能会发生变化,即每轮参与共识过程的节点设备可能会发生变化,并且提案节点可能会发生变化,待共识区块也可能会发生变化。
下面以一个具体示例来详细说明本申请实施例在区块链的区块高度H的第N-i轮共识过程的具体流程,其中H、N、i均为正整数,且i小于N。以i=1为例,在区块链的区块高度H的第N-1轮共识过程中,参与共识过程的共有4个节点设备。图3-4示出了根据本申请一个实施例的共识节点的区块广播示意图;如图3所示,区块链系统中参与共识过程的节点设备分别是节点设备A、节点设备B、节点设备C和节点设备D,在区块链的区块高度H的第N-1轮共识过程中,节点设备B为提案节点,节点设备A、节点设备C和节点设备D为非提案节点。如图4所示,在区块链的区块高度H的第N-1轮共识过程的具体流程包括:
一、提案阶段:
首先,节点设备B(即提案节点)生成针对待共识区块Block-X1的提案消息,此处的提案消息中包含Block-X1,该Block-X1可以是由节点设备B创建的新区块。然后,节点设备B将提案消息广播给节点设备A、节点设备C和节点设备D,相应地,节点设备A、节点设备C和节点设备D接收到提案消息,需要分别验证提案消息。
二、预投票阶段:
由于网络故障、设备故障或其他原因,会存在部分节点设备无法在第一时间内接收到节点设备B广播的Block-X1的情况,例如设节点设备A未在第一时间内接收到节点设备B广播的Block-X1,节点设备C和节点设备D均在第一时间内接收到节点设备B广播的Block-X1;那么在预投票阶段,节点设备B、节点C和节点设备D均将Block-X1作为待共识的目标区块,并对Block-X1进行预投票处理得到各自的预投票消息。此处的预投票消息中包含被执行预投票处理的区块标识,例如节点设备C对该Block-X1进行预投票处理生成节点设备C的预投票消息,节点设备C的预投票消息中包括Block-X1的标识,且该预投票消息表示节点设备C同意对该Block-X1进行预投票,即同意将该Block-X1添加至区块链,该Block-X1获得节点设备C的预投票。
可以理解的是,如果节点设备C未生成节点设备C的预投票消息,则表示节点设备C未对Block-X1进行预投票处理;如果节点设备C的预投票消息中未包括Block-X1的标识,则表示节点设备C不同意对该Block-X1进行预投票,即不同意将该Block-X1添加至区块链上。而节点设备A由于未在第一时间内接到Block-X1,因此其可将空区块emptyBlock确定为待共识的目标区块,并对emptyBlock进行预投票处理得到节点设备A的预投票消息,该节点设备A的预投票消息包括emptyBlock的标识。其中第一时间可以根据实际需要进行设定,例如为1分钟、3分钟等等。
节点设备A、节点设备B、节点设备C和节点设备D各自广播自己的预投票消息。由于网络故障、设备故障或其他原因,可能会存在部分节点设备未在第二时间内接收到其他节点设备广播的预投票消息的情况,因此在第二时间到达时,参与共识过程的各个节点设备分别根据第二时间内接收到的预投票消息来统计/收集待共识的目标区块在预投票阶段所获得的预投票的数量,并确认/验证该预投票数量是否超过数量阈值。此处的数量阈值可以根据实际情况设定,例如数量阈值可以为参与共识过程的节点设备数量的50%,或者为参与共识过程的节点设备数量的2/3。此处的第二时间也可以根据实际需要进行设定,例如为1分钟、3分钟等等;第二时间可以与第一时间相同,也可以与第一时间不同。
举例说明,例如设数量阈值为2,由于节点设备A只对emptyBlock进行预投票处理,则节点设备A的预投票消息中包括emptyBlock的标识;而节点设备B、节点设备C和节点设备D均对Block-X1进行了预投票处理,且节点设备B、节点设备C和节点设备D三者的预投票消息中均包含Block-X1的标识;同时设节点设备A只接收到来自节点设备B的预投票消息,结合节点设备A自己的预投票消息统计得到Block-X1在预投票阶段获得的预投票数量为1,确认Block-X1所获得的预投票数量并未超过数量阈值2。设节点设备B接收到来自节点设备A、节点设备C和节点设备D三个预投票消息,再结合节点设备B自己的预投票消息统计得到Block-X1获得的预投票数量为3,确认Block-X1获得的预投票数量超过了数量阈值2。同理,设节点设备C接收到来自节点设备A、节点设备B和节点设备D三个预投票消息,再结合节点设备C自己的预投票消息统计得到Block-X1获得的预投票数量为3,确认Block-X1获得的预投票数量超过了数量阈值2。设节点设备D也接收到来自节点设备A、节点设备B和节点设备C三个预投票消息,再结合节点设备D自己的预投票消息统计得到Block-X1获得的预投票数量为3,确认Block-X1获得的预投票数量超过了数量阈值2。
三、预提交阶段:
节点设备B、节点设备C和节点设备D均将Block-X1确定为待共识的目标区块,所以均对Block-X1进行预提交处理得到各自的预提交消息;此处的预提交消息中包含被执行预提交处理的区块标识。例如:节点设备C对该Block-X1进行预提交处理生成节点设备C的预提交消息,该预提交消息中包括Block-X1的标识,且该预提交消息表示节点设备C同意对该Block-X1进行预提交,即表示确认同意将该Block-X1添加至区块链,该Block-X1获得节点设备C的预提交。
可以理解的是,如果节点设备C未生成节点设备C的预提交消息,则表示节点设备C未对Block-X1进行预提交处理;如果节点设备C的预提交消息中未包括Block-X1的标识,则表示节点设备C不同意对该Block-X1进行预提交,即不同意将该Block-X1添加至区块链上。而节点设备A由于将空区块emptyBlock确定为待共识的目标区块,因此节点设备A对emptyBlock进行预提交处理得到节点设备A的预提交消息,该节点设备A的预提交消息包括emptyBlock的标识。
节点设备A、节点设备B、节点设备C和节点设备D各自广播自己的预提交消息。由于网络故障、设备故障或其他原因,可能会存在部分节点设备未在第三时间内接收到其他节点设备广播的预提交消息的情况。在第三时间到达时,参与共识过程的各个节点设备分别根据第三时间内接收到的预提交消息来统计/收集待共识的目标区块在预提交阶段所获得的预提交的数量,并确认/验证该预提交数量是否超过提交阈值。此处的提交阈值可以根据实际情况设定,例如提交阈值可以为参与共识过程的节点设备数量的50%,或者为参与共识过程的节点设备数量的2/3。此处的第三时间也可以根据实际需要进行设定,例如为1分钟、3分钟等等;第三时间可以与第二时间相同,也可以与第二时间不同;同理,第三时间可以与第一时间相同,也可以与第一时间不同。
举例说明,例如设提交阈值为2,由于节点设备A只对emptyBlock进行预提交处理,则节点设备A的预提交消息中包括emptyBlock的标识;而节点设备B、节点设备C和节点设备D均对Block-X1进行了预提交处理,且节点设备B、节点设备C和节点设备D三者的预提交消息中均包含Block-X1的标识;同时设节点设备B接收到来自节点设备A和节点设备C的预提交消息,结合节点设备B自己的预提交消息统计得到Block-X1在预提交阶段获得的预提交数量为2,确认Block-X1所获得的预提交数量并未超过(不大于)提交阈值2。设节点设备C接收到来自节点设备A和节点设备C的预提交消息,再结合节点设备C自己的预提交消息统计得到Block-X1获得的预提交数量为2,确认Block-X1所获得的预提交数量并未超过(不大于)提交阈值2。同理,设节点设备A接收到来自节点设备B、节点设备C和节点设备D三个预提交消息,再结合节点设备A自己的预提交消息统计得到Block-X1获得的预提交数量为3,确认Block-X1获得的预提交数量超过了提交阈值2。设节点设备D也接收到来自节点设备A、节点设备B和节点设备C三个预提交消息,再结合节点设备D自己的预提交消息统计得到Block-X1获得的预提交数量为3,确认Block-X1获得的预提交数量超过了提交阈值2。
经过上述三个共识阶段,如果待共识的目标区块所获得的预投票数量超过数量阈值,同时所获得的预提交数量超过提交阈值,则该待共识的目标区块共识成功,可以被提交,即被添加至区块链上;否则共识失败,不能被提交,即不能被添加至区块链上。按照上述示例,节点设备A确认Block-X1所获得的预提交数量超过提交阈值,但所获得的预投票数量并未超过数量阈值,因此认定Block-X1共识失败。节点设备B确认Block-X1所获得的预投票数量超过数量阈值,但所获得的预提交数量并未超过提交阈值,因此认定Block-X1共识失败。节点设备C确认Block-X1所获得的预投票数量超过数量阈值,但所获得的预提交数量并未超过提交阈值,因此认定Block-X1共识失败。节点设备D确认Block-X1所获得的预投票数量超过数量阈值,并且所获得的预提交数量超过提交阈值,因此认定Block-X1共识成功,节点设备D将Block-X1添加至节点设备D本地存储的区块链上。
综上,在区块链的区块高度为H的第N-1轮共识过程中,节点设备A、节点设备B和节点设备C并未对Block-X1达成共识,未将Block-X1写入各自的分布式账本中(即添加至各自本地存储的区块链上),但是节点设备D对Block-X1达成共识,并将Block-X1写入自己的分布式账本中,那么节点设备D本地存储的区块链的区块高度变为H+1;当在区块链的区块高度H的第N轮共识过程中,节点设备D将不再参与共识,参与共识的节点设备变更为节点设备A、节点设备B和节点设备C。
需要说明的是,当进行在区块链的区块高度为H的第N轮共识过程时,提案节点可能会发生变化,例如上述例子中在区块链的区块高度为H的第N-1轮共识过程中的提案节点为节点设备B,而在区块链的区块高度为H的第N轮共识过程可能变更为节点设备C;然后重新执行上述的三个共识阶段,以完成在区块链的区块高度为H的第N轮共识过程。
从上述的共识机制可以看出,每个区块都需要经过一个提案、预投票、预提交等三个阶段,其中,提案阶段产生针对待共识区块的提案消息最为耗时,例如请参阅图5,Block-X1的第N-1轮共识过程中,在提案阶段耗费8秒(生成Block-X1的提案消息耗费7秒,广播该提案消息耗费1秒),在预投票阶段和预提交阶段各耗费1秒。可见,提案阶段占据了共识周期大部分时间,导致共识效率较低。
并且,通常在实际环境中设计有超时时长,当有共识节点作恶或异常(包括网络、重启、数据不一致等)时,超过超时时长之后才会重新发起一轮新的共识,该更在极大程度上降低了共识效率。例如设一个待共识区块的共识周期(即一轮共识过程)为10秒,超时时长为30秒(即等待30秒后才进入下一轮共识),如果有4个节点设备,其中1个节点设备异常,那么就会导致理论上出4个区块变成了3个区块+1个超时,此时出4个区块的时间是30秒+30秒+10秒=70秒,其中第1个30秒表征的是针对前3个区块的前3轮共识过程,第2个30秒表征的是超时时长,10秒表征的是针对第4个区块的第4轮共识过程。可以理解的是,出区块指的是待共识区块成功添加到区块链上。
因此,为了提升区块的共识效率,加快区块生成,本申请实施例提出了一种并行生成提案消息的技术方案,具体地,请参阅图6,以区块链网络中有5个共识节点为例进行说明。对于任意一个共识节点而言,在提案节点针对待共识区块发起的共识周期内,生成针对待共识区块的提案消息,之后检测提案节点针对待共识区块所发起的第一共识过程的共识结果,若共识结果表征提案节点针对待共识区块所发起的第一共识过程失败,则获取提案消息,之后根据所获取到的提案消息发起针对待共识区块的第二共识过程。
举例说明,例如请参阅图7,Block-X1的第N-1轮共识过程中,提案节点在提案阶段耗费8秒(生成Block-X1的提案消息耗费7秒,广播该提案信息耗费1秒),在预投票阶段和预提交阶段各耗费1秒,而在提案节点针对Block-X1发起的共识周期内,共识节点会生成针对Block-X1的提案消息,如图7所示,共识节点生成针对Block-X1的提案消息耗费7秒。
可以理解的是,在Block-X1的第N轮共识过程中,可以利用第N-1轮共识过程中共识节点所生成的针对Block-X1的提案消息,这样在Block-X1的第N轮共识过程中,则可以节省针对Block-X1的提案消息的生成时长7秒,其在提案阶段只需获取Block-X1的提案消息并广播Block-X1的提案消息,设在提案阶段耗费2秒(获取Block-X1的提案消息与广播Block-X1的提案消息各耗费1秒,以及在预投票阶段和预提交阶段各耗费1秒,那么针对Block-X1的第N轮共识过程中,总共仅需耗费4秒,相对于相关技术中总共最少需耗费10秒而言,能够在极大程度上提升共识效率。
需要说明的是,在本申请的具体实施方式中,涉及到对象相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以下对本申请实施例的技术方案的各种实现细节进行详细阐述:
请参阅图8,图8是本申请的一个实施例示出的区块链网络的共识方法的流程图,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图8所示,该区块链网络的共识方法至少包括步骤S801至步骤S804,详细介绍如下:
步骤S801,在提案节点针对第一待上链区块发起的共识周期内,生成针对第一待上链区块的提案消息。
本申请实施例中提案节点也称为主节点,其是主动发起待上链区块共识的共识节点。例如如前述介绍中,节点设备B基于交易数据生成了Block-X1,之后针对Block-X1主动发起共识,此时节点设备B即为提案节点,而其他节点设备则为非提案节点。
本申请实施例中待上链区块是待共识的区块,可以理解的是,在一轮共识过程中,是针对同一个待上链区块进行共识。例如如前述示例中,针对Block-X1的一轮共识过程中,节点设备A确认Block-X1共识失败,其不会将Block-X1添加至节点设备A本地存储的区块链上;节点设备B确认Block-X1共识失败,其不会将Block-X1添加至节点设备B本地存储的区块链上;节点设备C确认Block-X1共识失败,其不会将Block-X1添加至节点设备C本地存储的区块链上;节点设备D确认Block-X1共识成功,其会将Block-X1添加至节点设备D本地存储的区块链上。
可以理解的是,本申请实施例中第一待上链区块是区块高度H的待共识区块,后文中所提及的第二待上链区块是区块高度H+1的区块,以此类推。例如第一待上链区块是区块高度H的待共识区块Block-X1,第二待上链区块是区块高度H+1的待共识区块Block-X2。
本申请实施例中共识周期是一轮共识过程,针对于BFT等共识算法,共识周期包括提案、预投票、预提交等三个阶段。
本申请实施例中提案节点针对第一待上链区块发起的共识周期内,提案节点本身是会生成针对第一待上链区块的提案消息的,而在提案节点针对第一待上链区块发起的共识周期内,共识节点也需要同时生成针对第一待上链区块的提案消息。
举例说明,例如承接前述示例,节点设备B作为提案节点针对Block-X1发起共识,节点设备B本身是会在提案阶段生成针对Block-X1的提案消息,此时共识节点如节点设备A、节点设备B、节点设备C、节点设备D中的任意一个或多个也可以在节点设备B针对Block-X1发起的共识周期内,生成针对Block-X1的提案消息。
在本申请的一个实施例中,提案节点与共识节点可以为不同节点,例如承接前述示例,提案节点为节点设备B,共识节点为节点设备A、节点设备C、节点设备D中的任意一个或多个。即在提案节点针对第一待上链区块发起的共识周期内,是由不同节点生成两个针对第一待上链区块的提案消息。可以理解的是,提案节点与共识节点为不同节点,能够避免提案节点作恶,后续实施例中均以提案节点与共识节点为不同节点,例如提案节点为节点设备B,共识节点为节点设备A进行示例说明。
在本身申请的一个实施例中,提案节点与共识节点可以为相同节点,例如承接前述示例,提案节点为节点设备B,共识节点为节点设备B。即在提案节点针对第一待上链区块发起的共识周期内,是由相同节点生成两个针对第一待上链区块的提案消息。
步骤S802,检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果。
本申请实施例中共识节点在提案节点针对第一待上链区块发起的共识周期内,生成针对第一待上链区块的提案消息,之后还需要检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果。
可以理解的是,本申请实施例中第一共识过程是针对区块高度H的第N-1轮共识过程,后文中所提及的第二共识过程是针对区块高度H的第N轮共识过程,以此类推。
如前所述,共识周期包括提案阶段、预投票阶段和预提交阶段;在本申请的一个实施例中,检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果,可以包括至少以下两种情况:
情况一,若在预投票阶段或预提交阶段的共识不满足共识策略,则得到用于表征提案节点针对第一待上链区块所发起的第一共识过程失败的共识结果。
也即,可选实施例中如果在预投票阶段或预提交阶段的共识不满足共识策略,则得到的是用于表征提案节点针对第一待上链区块所发起的第一共识过程失败的共识结果。
举例说明,例如承接前述示例,节点设备A确认Block-X1所获得的预提交数量超过提交阈值,但所获得的预投票数量并未超过数量阈值,因此认定Block-X1共识失败,此时得到的是用于表征节点设备B针对Block-X1所发起的第N-1轮共识过程失败的共识结果。
情况二,若在预投票阶段和预提交阶段的共识满足共识策略,则得到用于表征提案节点针对第一待上链区块所发起的第一共识过程成功的共识结果。
也即,可选实施例中如果在预投票阶段和预提交阶段的共识满足共识策略,则得到的是用于表征提案节点针对第一待上链区块所发起的第一共识过程成功的共识结果。
举例说明,例如承接前述示例,节点设备D确认Block-X1所获得的预投票数量超过数量阈值,并且所获得的预提交数量超过提交阈值,因此认定Block-X1共识成功,此时得到的是用于表征节点设备B针对Block-X1所发起的第N-1轮共识过程成功的共识结果。
这样,通过实施可选实施例,可以快速准确地得到共识结果,以基于得到的共识结果进行判断从而为后续是否发起下一轮共识提供支持。
步骤S803,若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则获取提案消息。
本申请实施例中共识节点检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果,之后如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则共识节点需要获取提案消息。
可以理解的是,本申请实施例中共识节点可以根据共识结果确定是否获取提案消息,具体地,如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则此时共识节点需要获取提案消息,这样后续就可以根据所获取到的提案消息发起针对第一待上链区块的第二共识过程,而无需生成针对第一待上链区块的提案消息,进而再基于所生成的提案消息发起针对第一待上链区块的第二共识过程,即获取提案消息相对于生成提案消息而言,所需耗费的时长更短,因而发起的针对第一待上链区块的第二共识过程时长更短,提升了共识效率。
举例说明,例如承接前述示例,节点设备A在节点设备B针对Block-X1发起的第N-1轮共识过程中(即共识周期内),生成了针对Block-X1的提案消息,并且节点设备A需要检测节点设备B针对Block-X1所发起的第N-1轮共识过程的共识结果;其中,如果共识结果表征节点设备B针对Block-X1所发起的第N-1轮共识过程失败,则此时节点设备A需要获取针对Block-X1的提案消息。
步骤S804,根据所获取到的提案消息发起针对第一待上链区块的第二共识过程。
本申请实施例中若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则共识节点获取提案消息,之后共识节点可以根据所获取到的提案消息发起针对第一待上链区块的第二共识过程。
举例说明,例如承接前述示例,节点设备A获取到针对Block-X1的提案消息,之后根据所获取到的针对Block-X1的提案消息发起针对Block-X1的第N轮共识过程。
本申请实施例中由于针对第一待上链区块的第二共识过程中是不需要生成第一待上链区块的提案消息的,只需获取在提案节点针对第一待上链区块发起的共识周期内,共识节点所并行生成针对第一待上链区块的提案消息即可,因此可以节省生成第一待上链区块的提案消息的时长,从而在极大程度上提升了共识效率。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图9所示,该区块链网络的共识方法可以包括步骤S901、步骤S802至步骤S804。
步骤S901详细介绍如下:
步骤S901,若检测到共识节点被选择为在提案节点之后进行下一轮共识过程的提案节点,则生成针对第一待上链区块的提案消息。
可选实施例中,区块链网络中可以采用轮询的方式选举出提案节点,并由提案节点发起待上链区块的共识。例如承接前述示例,区块链网络中可以按照节点设备B->节点设备A->节点设备C->节点设备D的顺序进行轮询,具体地,针对Block-X1所发起的第N-1轮共识过程选举出的提案节点为节点设备B,则由节点设备B针对Block-X1发起第N-1轮共识过程,针对Block-X1所发起的第N轮共识过程选举出提案节点为节点设备A,则由节点设备A针对Block-X1发起第N轮共识过程,以此类推。其中,可选实施例中轮询顺序可以根据具体应用场景进行灵活调整。
可选实施例中,区块链网络中可以采用通过指定计算策略选举出提案节点,并由提案节点发起待上链区块的共识。例如针对Block-X1所发起的第N-1轮共识过程通过指定计算策略选举出的提案节点为节点设备B,则由节点设备B针对Block-X1发起第N-1轮共识过程,针对Block-X1所发起的第N轮共识过程通过指定计算策略选举出提案节点为节点设备C,则由节点设备C针对Block-X1发起第N轮共识过程,以此类推。其中,可选实施例中指定计算策略可以根据具体应用场景进行灵活调整。
因此,可选实施例中共识节点可以检测其是否被选择为在提案节点之后进行下一轮共识过程的提案节点,如果检测到共识节点被选择为在提案节点之后进行下一轮共识过程的提案节点,则共识节点可以生成针对第一待上链区块的提案消息,如果未检测到共识节点被选择为在提案节点之后进行下一轮共识过程的提案节点,则共识节点可以不做处理,即不生成针对第一待上链区块的提案消息。
举例说明,例如在节点设备B针对Block-X1发起的第N-1轮共识过程中,节点设备A检测到其被选择为在节点设备B之后进行下一轮共识过程(可以是针对Block-X1的第N轮共识过程,还可以是针对Block-X2的第1轮共识过程)的提案节点,则节点设备A需要在节点设备B针对Block-X1发起的第N-1轮共识过程中,生成针对Block-X1的提案消息,以为后续使用该针对Block-X1的提案消息进行共识提供支持。
也即,可选实施例中在提案节点针对第一待上链区块发起的共识周期内,生成针对第一待上链区块的提案消息的对象是,被选择为在提案节点之后进行下一轮共识过程的提案节点对应的共识节点。
需要说明的是,图9所示中步骤S802至步骤S804的详细介绍请参见图8所示的步骤S802至步骤S804,在此不再赘述。
这样,通过实施可选实施例,由被选择为在提案节点之后进行下一轮共识过程的提案节点对应的共识节点,生成针对第一待上链区块的提案消息,避免了始终由同一共识节点生成针对第一待上链区块的提案消息所导致的该同一共识节点资源消耗大或者作恶的现象,提升了生成针对第一待上链区块的提案消息的准确性,进一步提升了共识效率。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图10所示,该区块链网络的共识方法可以包括步骤S1001、步骤S1003、步骤S802、步骤S804。
步骤S1001、步骤S1003详细介绍如下:
步骤S1001,生成针对第一待上链区块的提案消息,并将提案消息存储在指定存储区域中;
步骤S1003,若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则从指定存储区域中获取提案消息。
也即,可选实施例中共识节点在提案节点针对第一待上链区块发起的共识周期内,生成针对第一待上链区块的提案消息,之后需要将针对第一待上链区块的提案消息进行缓存,之后检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果,其中如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则可以获取所缓存的该针对第一待上链区块的提案消息,之后可以根据所获取到的该针对第一待上链区块的提案消息发起针对第一待上链区块的第二共识过程。
其中,可选实施例中将针对第一待上链区块的提案消息进行缓存可以是将第一待上链区块的提案消息存储在指定存储区域中,指定存储区域可以根据具体应用场景进行灵活调整。
其中,可选实施例中当共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则需要从指定存储区域中获取到该第一待上链区块的提案消息。
举例说明,例如承接前述示例,在节点设备B针对Block-X1发起的第N-1轮共识过程中,节点设备A生成针对Block-X1的提案消息,并将该针对Block-X1的提案消息存储在指定存储区域如磁盘的某个虚拟文件夹中,之后当共识结果表征节点设备B针对Block-X1所发起的第N-1轮共识失败,则节点设备A可以从指定存储区域如磁盘的某个虚拟文件夹中获取到该针对Block-X1的提案消息。
需要说明的是,图10所示中步骤S802、步骤S804的详细介绍请参见图8所示的步骤S802、步骤S804,在此不再赘述。
这样,通过实施可选实施例,在提案节点针对第一待上链区块发起的共识周期内,共识节点生成并缓存针对第一待上链区块的提案消息,为后续使用该针对第一待上链区块的提案消息进行共识提供支持。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图11所示,该区块链网络的共识方法可以包括步骤S1101至步骤S1102、步骤S1001、步骤S802、步骤S804。
步骤S1101至步骤S1102详细介绍如下:
步骤S1101,确定第一待上链区块的标识信息;
步骤S1102,从指定区域中获取与第一待上链区块的标识信息相匹配的提案消息。
也即,可选实施例中从指定存储区域中获取提案消息的过程,可以是通过确定第一待上链区块的标识信息,之后从指定区域中确定与第一待上链区块的标识信息相匹配的提案消息。
其中,可选实施例中第一待上链区块的标识信息是用于唯一标识第一待上链区块的信息,其可以是通过第一待上链区块的相关信息生成得到。
举例说明,例如承接前述示例,当共识结果表征节点设备B针对Block-X1所发起的第N-1轮共识失败,则节点设备A可以先确定Block-X1的标识信息如XX,之后从指定区域中查找与Block-X1的标识信息如XX相匹配的提案消息,进而获取该查找到的与Block-X1的标识信息如XX相匹配的提案消息。
需要说明的是,图11所示中步骤S1001的详细介绍请参见图10所示的步骤S1001,图11所示中步骤S802、步骤S804的详细介绍请参见图8所示的步骤S802、步骤S804,在此不再赘述。
这样,通过实施可选实施例,基于第一待上链区块的标识信息可以快速简便地获取到与第一待上链区块的标识信息相匹配的提案消息,为后续使用该针对第一待上链区块的提案消息进行共识提供支持。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图12所示,该区块链网络的共识方法可以包括步骤S1201,步骤S802至步骤S804。其中,步骤S1201中共识周期包括提案阶段。
步骤S1201详细介绍如下:
步骤S1201,在提案节点针对第一待上链区块所发起的共识的提案阶段,生成针对第一待上链区块的提案消息。
如前所述,共识周期包括提案阶段、预投票阶段和预提交阶段,其中:
方式一,可选实施例中共识节点可以在提案节点针对第一待上链区块所发起的共识的提案阶段,生成针对第一待上链区块的提案消息。
举例说明,例如请参阅图13,在节点设备B针对Block-X1所发起的第N-1轮共识的提案阶段,节点设备B生成并广播了针对Block-X1的提案消息,以及经过预投票阶段和预提交阶段;相应地,节点设备A在节点设备B针对Block-X1所发起的第N-1轮共识的提案阶段,生成了针对Block-X1的提案消息。
方式二,可选实施例中共识节点可以在提案节点针对第一待上链区块所发起的共识的预投票阶段,生成针对第一待上链区块的提案消息。
举例说明,例如请参阅图14,在节点设备B针对Block-X1所发起的第N-1轮共识的提案阶段,节点设备B生成并广播了针对Block-X1的提案消息,以及经过预投票阶段和预提交阶段;相应地,节点设备A在节点设备B针对Block-X1所发起的第N-1轮共识的预投票阶段,生成了针对Block-X1的提案消息。
方式三,可选实施例中共识节点可以在提案节点针对第一待上链区块所发起的共识的预提交阶段,生成针对第一待上链区块的提案消息。
举例说明,例如请参阅图15,在节点设备B针对Block-X1所发起的第N-1轮共识的提案阶段,节点设备B生成并广播了针对Block-X1的提案消息,以及经过预投票阶段和预提交阶段;相应地,节点设备A在节点设备B针对Block-X1所发起的第N-1轮共识的预提交阶段,生成了针对Block-X1的提案消息。
也即,可选实施例中共识节点可以是在提案节点针对第一待上链区块发起的共识周期所对应的任意阶段,生成针对第一待上链区块的提案消息,只要在提案节点针对第一待上链区块发起的共识周期内生成即可;在实际应用中,生成针对第一待上链区块的提案消息的时机,可以根据具体应用场景进行灵活调整。
需要说明的是,图12所示中步骤S802至步骤S804的详细介绍请参见图8所示的步骤S802至步骤S804,在此不再赘述。
这样,通过实施可选实施例,由于共识节点生成针对第一待上链区块的提案消息所耗费的时长较长,因此选择在提案节点针对第一待上链区块所发起的共识的提案阶段生成,避免了由于生成时长过长,该轮共识结束,而未成功生成针对第一待上链区块的提案消息的现象,保证了共识节点生成针对第一待上链区块的提案消息的准确性、及时性。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图16所示,该区块链网络的共识方法在图8中所示的步骤S804之后增加了步骤S1601至步骤S1602。
步骤S1601至步骤S1602详细介绍如下:
步骤S1601,获取提案节点针对第一待上链区块的第一提案消息生成时长,以及统计共识节点针对第一待上链区块的第二提案消息生成时长;
步骤S1602,根据第一提案消息生成时长与第二提案消息生成时长之间的关系,确定提案节点对应的行为状态的类型。
也即,可选实施例中共识节点可以获取提案节点针对第一待上链区块的第一提案消息生成时长,以及统计共识节点针对第一待上链区块的第二提案消息生成时长,之后根据第一提案消息生成时长与第二提案消息生成时长之间的关系,确定提案节点对应的行为状态的类型。
其中,可选实施例中第一提案消息生成时长是提案节点针对第一待上链区块所生成的提案消息的时长;例如节点设备B针对Block-X1所生成提案消息的时长。同理,第二提案消息生成时长是共识节点针对第一待上链区块所生成的提案消息的时长;例如节点设备A针对Block-X1所生成提案消息的时长。
其中,可选实施例中行为状态的类型包括但不限于与安全性相关的类型。示例性地,可选实施例中根据第一提案消息生成时长与第二提案消息生成时长之间的关系,确定提案节点对应的行为状态的类型,可以包括至少以下三种情况:
情况一,若第一提案消息生成时长大于第二提案消息生成时长,且第一提案消息生成时长与第二提案消息生成时长的差值大于预设时长阈值,则确定提案节点对应的行为状态为第一类型。
也即,可选实施例中如果第一提案消息生成时长大于第二提案消息生成时长,且第一提案消息生成时长与第二提案消息生成时长的差值大于预设时长阈值,则表征以共识节点为参照,提案节点对应的第一提案消息生成时长与共识节点对应的第二提案消息生成时长相差较大,此时提案节点可能作恶的程度较高,因此可以将提案节点对应的行为状态确定为安全性较低的第一类型。
情况二,若第一提案消息生成时长大于第二提案消息生成时长,且第一提案消息生成时长与第二提案消息生成时长的差值小于或等于预设时长阈值,则确定提案节点对应的行为状态为第二类型。
也即,可选实施例中如果第一提案消息生成时长大于第二提案消息生成时长,且第一提案消息生成时长与第二提案消息生成时长的差值小于或等于预设时长阈值,则表征以共识节点为参照,提案节点对应的第一提案消息生成时长与共识节点对应的第二提案消息生成时长相差较小,此时提案节点可能作恶的程度适中,因此可以将提案节点对应的行为状态确定为安全性适中的第二类型。
情况三,若第一提案消息生成时长小于或等于第二提案消息生成时长,则确定提案节点对应的行为状态为第三类型;
也即,可选实施例中如果第一提案消息生成时长小于或等于第二提案消息生成时长,则表征以共识节点为参照,此时提案节点可能作恶的程度较低,因此可以将提案节点对应的行为状态确定为安全性较高的第三类型。
如前所述,第一类型、第二类型,以及第三类型的安全性是依次递增的,且可选实施例中包括但不限于这三种类型,还可以根据预设时长阈值的细化设定,细分为三种以上的类型,在实际应用中,可以根据具体应用场景进行灵活调整。
其中,可选实施例中当检测到提案节点对应的行为状态为安全性较低的类型时,可以对提案节点采取相应的管理措施如重新对提案节点进行完整的身份验证、收取保证金等,以保证区块链网络的安全性。
需要说明的是,图16所示中步骤S801至步骤S804的详细介绍请参见图8所示的步骤S801至步骤S804,在此不再赘述。
这样,通过实施可选实施例,可以基于提案节点针对第一待上链区块的第一提案消息生成时长,以及共识节点针对第一待上链区块的第二提案消息生成时长,对提案节点的安全性进行检测,以便更好地管理区块链网络中的共识节点,保证了区块链网络的安全性。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图17所示,该区块链网络的共识方法可以包括步骤S1701至步骤S1703,步骤S801至步骤S803。
步骤S1701至步骤S1703详细介绍如下:
步骤S1701,广播提案消息;
步骤S1702,生成针对第一待上链区块的预投票消息,并广播第一待上链区块的预投票消息;
步骤S1703,若接收到预定数量个针对第一待上链区块的预投票消息,则生成针对第一待上链区块的预提交消息,并广播第一待上链区块的预提交消息,以实现针对第一待上链区块所发起的第二共识过程。
也即,可选实施例中共识节点根据所获取到的提案消息发起针对第一待上链区块的第二共识过程,可以是广播提案消息,之后生成针对第一待上链区块的预投票消息,并广播第一待上链区块的预投票消息,之后如果接收到预定数量个针对第一待上链区块的预投票消息,则可以生成针对第一待上链区块的预提交消息,并广播第一待上链区块的预提交消息。
其中,可选实施例中预投票阶段和预提交阶段的相关内容请参见前述实施例中,在此不再赘述。
需要说明的是,图17所示中步骤S801至步骤S803的详细介绍请参见图8所示的步骤S801至步骤S803,在此不再赘述。
这样,通过实施可选实施例,共识节点可以根据所获取到的提案消息发起针对第一待上链区块的第二共识过程,而无需生成针对第一待上链区块的提案消息,进而再基于所生成的提案消息发起针对第一待上链区块的第二共识过程,即获取提案消息相对于生成提案消息而言,所需耗费的时长更短,因而发起的针对第一待上链区块的第二共识过程时长更短,提升了共识效率。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图18所示,该区块链网络的共识方法在图8中所示的步骤S804之后增加了步骤S1801。
步骤S1801详细介绍如下:
步骤S1801,若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则在下一轮共识过程中,在区块链网络中发起针对第二待上链区块的提案消息。
可以理解的是,可选实施例中共识节点可以根据共识结果确定是否获取提案消息,具体地,如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则可以在下一轮共识过程中,在区块链网络中发起针对第二待上链区块的提案消息。
举例说明,例如承接前述示例,节点设备A在节点设备B针对Block-X1发起的第N-1轮共识过程中(即共识周期内),生成了针对Block-X1的提案消息,并且节点设备A需要检测节点设备B针对Block-X1所发起的第N-1轮共识过程的共识结果;其中,如果共识结果表征节点设备B针对Block-X1所发起的第N-1轮共识过程成功,则此时节点设备A可以在区块链网络中发起针对Block-X2的提案消息。
其中,可选实施例中在区块链网络中发起针对第二待上链区块的提案消息的过程,可以是生成针对第二待上链区块的提案消息,并广播第二待上链区块的提案消息。
可以理解的是,在针对新的区块(即第二待上链区块)进行共识时,由于共识节点在前一轮共识过程中所生成的是针对第一待上链区块的提案消息,该针对第一待上链区块的提案消息当前是不可用的;因此,可选实施例中共识节点是需要生成针对第二待上链区块的提案消息的。
需要说明的是,图18所示中步骤S801至步骤S804的详细介绍请参见图8所示的步骤S801至步骤S804,在此不再赘述。
这样,通过实施可选实施例,如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则在下一轮共识过程中,在区块链网络中发起针对第二待上链区块的提案消息,实现了不同区块的共识,更加符合应用场景。
在本申请的一个实施例中,提供了另一种区块链网络的共识方法,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图19所示,该区块链网络的共识方法在图8中所示的步骤S804之后增加了步骤S1901。
步骤S1901详细介绍如下:
步骤S1901,若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则删除针对第一待上链区块的提案消息。
可以理解的是,如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则可以针对新的区块(即第二待上链区块)进行共识,而在针对新的区块进行共识时,由于共识节点在前一轮共识过程中所生成的是针对第一待上链区块的提案消息,该针对第一待上链区块的提案消息当前是不可用的;因此,可选实施例中共识节点可以删除针对第一待上链区块的提案消息。
需要说明的是,图19所示中步骤S801至步骤S804的详细介绍请参见图8所示的步骤S801至步骤S804,在此不再赘述。
这样,通过实施可选实施例,如果共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则选择删除针对第一待上链区块的提案消息,避免了存储针对第一待上链区块的提案消息所导致的存储空间浪费的现象,节省了系统存储空间,更加符合应用场景。
以下对本申请实施例的一个具体应用场景进行详细说明:
请参阅图20,图20是本申请的一个实施例示出的区块链网络的共识方法的流程图,该区块链网络的共识方法可以由区块链网络中的共识节点来执行。如图20所示,该区块链网络的共识方法至少包括步骤S2001至步骤S2024,详细介绍如下:
步骤S2001,共识节点进入新的区块高度或新的共识轮次。
步骤S2002,共识节点检测自身是否被选择为当前共识过程的提案节点;若是,则执行步骤S2003,若否,则执行步骤S2013。
步骤S2003,共识节点检测是否缓存有针对当前待上链区块对应的提案消息;若否,则执行步骤S2004,若是,则执行步骤S2005。
步骤S2004,共识节点生成针对当前待上链区块对应的提案消息,并跳转至步骤S2006。
步骤S2005,共识节点获取针对当前待上链区块对应的提案消息。
步骤S2006,共识节点广播当前待上链区块对应的提案消息。
步骤S2007,共识节点广播当前待上链区块对应的预投票消息。
步骤S2008,共识节点等待接收预定数量个针对当前待上链区块的预投票消息。
可以理解的是,PBFT是目前联盟链里较为常见的共识算法,其是针对状态机复制为主的分布式系统执行的算法,其计算效率过于依赖参与协议的节点数量,不适用于节点数量过大的区块链,同时系统节点是事先固定,要求总节点数量N>3f+1,即只有拜占庭节点数量不超过全网1/3才能正常共识,提供容错性相对较低。可选地,预定数量个为3f+1。
步骤S2009,共识节点广播当前待上链区块对应的预提交消息。
步骤S2010,共识节点等待接收预定数量个针对当前待上链区块的预提交消息。
步骤S2011,共识节点将当前待上链区块添加到区块链上。
步骤S2012,若存在缓存的当前待上链区块对应的提案消息,则共识节点删除缓存的当前待上链区块对应的提案消息。
可选地,共识节点删除缓存的当前待上链区块对应的提案消息可以节省系统存储空间。
至此,共识节点作为当前共识过程的提案节点完成共识过程。
步骤S2013,共识节点检测自身是否被选择为当前共识过程的下一轮共识过程的提案节点;若是,则执行步骤S2014,若否,则执行步骤S2015。
步骤S2014,共识节点生成针对当前待上链区块对应的提案消息,并统计共识节点针对当前待上链区块对应的提案消息的生成时长。
可选地,共识节点可以根据当前共识过程中提案节点针对当前待上链区块对应的提案消息的生成时长,以及自身所针对当前待上链区块对应的提案消息的生成时长,确定提案节点对应的行为状态的类型,从而实现对提案节点的管理。
步骤S2015,共识节点等待接收当前待上链区块对应的提案消息。
步骤S2016,共识节点检测是否在指定时长内接收到当前待上链区块对应的提案消息;若是,则执行步骤S2017,若否,则执行步骤S2020。
步骤S2017,共识节点对当前待上链区块对应的提案消息进行验证。
步骤S2018,共识节点检测对当前待上链区块对应的提案消息验证是否成功;若是,则执行步骤S2019,若否,则执行步骤S2020。
步骤S2019,共识节点广播针对当前待上链区块的预投票消息,并跳转至步骤S2008。
步骤S2020,共识节点广播针对指定区块的预投票消息。
可选地,接收提案消息超时的情况所对应的指定区块为空区块或特定内容。
可选地,对提案消息验证失败的情况所对应的指定区块为计算出的区块。
步骤S2021,共识节点等待接收预定数量个针对当前待上链区块的预投票消息。
步骤S2022,共识节点广播针对指定区块的预提交消息。
步骤S2023,共识节点等待接收预定数量个针对当前待上链区块的预提交消息。
步骤S2024,共识节点将当前待上链区块添加到区块链上。
至此,共识节点作为当前共识过程的非提案节点完成共识过程。
需要说明的是,图20所示中步骤S2001至步骤S2024的详细介绍请参见前述实施例,在此不再赘述。
为了便于理解图20所示的提案节点网络异常(即接收提案消息超时)的应用场景。请参阅图21,节点设备B由于网络异常原因,在提案阶段,节点设备A、节点设备C、节点设备D都未在指定时长内接收到当前待上链区块对应的提案消息。因此,在预投票阶段,节点设备A、节点设备C、节点设备D都是广播的针对空区块的预投票消息,可选地,也可以是广播的针对特定内容的预投票消息。同理,在预提交阶段,节点设备A、节点设备C、节点设备D也都是广播的针对空区块的预提交消息,可选地,也可以是广播的针对特定内容的预提交消息。
可以理解的是,当提案节点网络异常会切换提案节点,如图21所示,提案节点由节点设备B切换至节点设备A,相应地,节点设备A会发起新一轮共识过程,具体发起新一轮共识过程请参见前述实施例,在此不再赘述。
为了便于理解图20所示的提案节点作恶(即对提案消息验证失败)的应用场景。请参阅图22,节点设备B由于作恶原因,在提案阶段,节点设备A、节点设备C、节点设备D都对当前待上链区块对应的提案消息验证失败。因此,在预投票阶段,节点设备A、节点设备C、节点设备D都是广播的针对自己计算得到的区块的预投票消息。同理,在预提交阶段,节点设备A、节点设备C、节点设备D也都是广播的针对自己计算得到的区块的预提交消息。
可以理解的是,当提案节点作恶也会切换提案节点,如图22所示,提案节点由节点设备B切换至节点设备A,相应地,节点设备A会发起新一轮共识过程,具体发起新一轮共识过程请参见前述实施例,在此不再赘述。
本申请实施例中由于针对第一待上链区块的第二共识过程中是不需要生成第一待上链区块的提案消息的,只需获取在提案节点针对第一待上链区块发起的共识周期内,共识节点所并行生成针对第一待上链区块的提案消息即可,因此可以节省生成第一待上链区块的提案消息的时长,从而在极大程度上提升了共识效率。
图23是本申请的一个实施例示出的区块链网络的共识装置的框图。如图23所示,该区块链网络的共识装置包括:
生成模块2301,配置为在提案节点针对第一待上链区块发起的共识周期内,生成针对第一待上链区块的提案消息;
检测模块2302,配置为检测提案节点针对第一待上链区块所发起的第一共识过程的共识结果;
获取模块2303,配置为若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程失败,则获取提案消息;
共识模块2304,配置为根据所获取到的提案消息发起针对第一待上链区块的第二共识过程。
在本申请的一个实施例中,生成模块2301,具体配置为:
若检测到共识节点被选择为在提案节点之后进行下一轮共识过程的提案节点,则生成针对第一待上链区块的提案消息。
在本申请的一个实施例中,生成模块2301,具体配置为:
生成针对第一待上链区块的提案消息,并将提案消息存储在指定存储区域中;
在本申请的一个实施例中,获取模块2303,具体配置为:
从指定存储区域中获取提案消息。
在本申请的一个实施例中,获取模块2303,包括:
确定单元,配置为确定第一待上链区块的标识信息;
获取单元,配置为从指定区域中获取与第一待上链区块的标识信息相匹配的提案消息。
在本申请的一个实施例中,生成模块2301,具体配置为:
在提案节点针对第一待上链区块所发起的共识的提案阶段,生成针对第一待上链区块的提案消息。
在本申请的一个实施例中,装置还包括:
获取与统计模块,配置为获取提案节点针对第一待上链区块的第一提案消息生成时长,以及统计共识节点针对第一待上链区块的第二提案消息生成时长;
确定模块,配置为根据第一提案消息生成时长与第二提案消息生成时长之间的关系,确定提案节点对应的行为状态的类型。
在本申请的一个实施例中,确定模块,具体配置为:
若第一提案消息生成时长大于第二提案消息生成时长,且第一提案消息生成时长与第二提案消息生成时长的差值大于预设时长阈值,则确定提案节点对应的行为状态为第一类型;
若第一提案消息生成时长大于第二提案消息生成时长,且第一提案消息生成时长与第二提案消息生成时长的差值小于或等于预设时长阈值,则确定提案节点对应的行为状态为第二类型;
若第一提案消息生成时长小于或等于第二提案消息生成时长,则确定提案节点对应的行为状态为第三类型;其中,第一类型、第二类型,以及第三类型的安全性依次递增。
在本申请的一个实施例中,共识模块2304,具体配置为:
广播提案消息;
生成针对第一待上链区块的预投票消息,并广播第一待上链区块的预投票消息;
若接收到预定数量个针对第一待上链区块的预投票消息,则生成针对第一待上链区块的预提交消息,并广播第一待上链区块的预提交消息,以实现针对第一待上链区块所发起的第二共识过程。
在本申请的一个实施例中,装置还包括:
发起模块,配置为若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则在下一轮共识过程中,在区块链网络中发起针对第二待上链区块的提案消息。
在本申请的一个实施例中,发起模块,具体配置为:
生成针对第二待上链区块的提案消息,并广播第二待上链区块的提案消息。
在本申请的一个实施例中,装置还包括:
删除模块,配置为若共识结果表征提案节点针对第一待上链区块所发起的第一共识过程成功,则删除针对第一待上链区块的提案消息。
在本申请的一个实施例中,共识周期包括提案阶段、预投票阶段和预提交阶段;检测模块2302,具体配置为:
若在预投票阶段或预提交阶段的共识不满足共识策略,则得到用于表征提案节点针对第一待上链区块所发起的第一共识过程失败的共识结果;
若在预投票阶段和预提交阶段的共识满足共识策略,则得到用于表征提案节点针对第一待上链区块所发起的第一共识过程成功的共识结果。
需要说明的是,前述实施例所提供的装置与前述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备实现如前所述的区块链网络的共识方法。
图24是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图24示出的电子设备的计算机系统2400仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图24所示,计算机系统2400包括中央处理单元(Central Processing Unit,CPU)2401,其可以根据存储在只读存储器(Read-Only Memory,ROM)2402中的程序或者从存储部分2408加载到随机访问存储器(Random Access Memory,RAM)2403中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 2403中,还存储有系统操作所需的各种程序和数据。CPU 2401、ROM 2402以及RAM 2403通过总线2404彼此相连。输入/输出(Input/Output,I/O)接口2405也连接至总线2404。
以下部件连接至I/O接口2405:包括键盘、鼠标等的输入部分2406;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分2407;包括硬盘等的存储部分2408;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分2409。通信部分2409经由诸如因特网的网络执行通信处理。驱动器2410也根据需要连接至I/O接口2405。可拆卸介质2411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2410上,以便于从其上读出的计算机程序根据需要被安装入存储部分2408。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分2409从网络上被下载和安装,和/或从可拆卸介质2411被安装。在该计算机程序被中央处理单元(CPU)2401执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不相同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前所述的区块链网络的共识方法。该计算机可读介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读介质中。计算机设备的处理器从计算机可读介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的区块链网络的共识方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。

Claims (16)

1.一种区块链网络的共识方法,其特征在于,所述方法由所述区块链网络中的共识节点执行,所述方法包括:
在提案节点针对第一待上链区块发起的共识周期内,生成针对所述第一待上链区块的提案消息;
检测所述提案节点针对所述第一待上链区块所发起的第一共识过程的共识结果;
若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程失败,则获取所述提案消息;
根据所获取到的提案消息发起针对所述第一待上链区块的第二共识过程。
2.如权利要求1所述的方法,其特征在于,所述生成针对所述第一待上链区块的提案消息,包括:
若检测到所述共识节点被选择为在所述提案节点之后进行下一轮共识过程的提案节点,则生成针对所述第一待上链区块的提案消息。
3.如权利要求1所述的方法,其特征在于,所述生成针对所述第一待上链区块的提案消息,包括:
生成针对所述第一待上链区块的提案消息,并将所述提案消息存储在指定存储区域中;
所述获取所述提案消息,包括:
从所述指定存储区域中获取所述提案消息。
4.如权利要求3所述的方法,其特征在于,所述从所述指定存储区域中获取所述提案消息,包括:
确定所述第一待上链区块的标识信息;
从所述指定区域中获取与所述第一待上链区块的标识信息相匹配的提案消息。
5.如权利要求1所述的方法,其特征在于,所述共识周期包括提案阶段;所述生成针对所述第一待上链区块的提案消息,包括:
在所述提案节点针对所述第一待上链区块所发起的共识的提案阶段,生成针对所述第一待上链区块的提案消息。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述提案节点针对所述第一待上链区块的第一提案消息生成时长,以及统计所述共识节点针对所述第一待上链区块的第二提案消息生成时长;
根据所述第一提案消息生成时长与所述第二提案消息生成时长之间的关系,确定所述提案节点对应的行为状态的类型。
7.如权利要求6所述的方法,其特征在于,所述根据所述第一提案消息生成时长与所述第二提案消息生成时长之间的关系,确定所述提案节点对应的行为状态的类型,包括:
若所述第一提案消息生成时长大于所述第二提案消息生成时长,且所述第一提案消息生成时长与所述第二提案消息生成时长的差值大于预设时长阈值,则确定所述提案节点对应的行为状态为第一类型;
若所述第一提案消息生成时长大于所述第二提案消息生成时长,且所述第一提案消息生成时长与所述第二提案消息生成时长的差值小于或等于所述预设时长阈值,则确定所述提案节点对应的行为状态为第二类型;
若所述第一提案消息生成时长小于或等于所述第二提案消息生成时长,则确定所述提案节点对应的行为状态为第三类型;其中,所述第一类型、所述第二类型,以及所述第三类型的安全性依次递增。
8.如权利要求1所述的方法,其特征在于,所述根据所获取到的提案消息发起针对所述第一待上链区块的第二共识过程,包括:
广播所述提案消息;
生成针对所述第一待上链区块的预投票消息,并广播所述第一待上链区块的预投票消息;
若接收到预定数量个针对所述第一待上链区块的预投票消息,则生成针对所述第一待上链区块的预提交消息,并广播所述第一待上链区块的预提交消息,以实现针对所述第一待上链区块所发起的第二共识过程。
9.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程成功,则在下一轮共识过程中,在所述区块链网络中发起针对第二待上链区块的提案消息。
10.如权利要求9所述的方法,其特征在于,所述在所述区块链网络中发起针对第二待上链区块的提案消息,包括:
生成针对所述第二待上链区块的提案消息,并广播所述第二待上链区块的提案消息。
11.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程成功,则删除针对所述第一待上链区块的提案消息。
12.如权利要求1至11中任一项所述的方法,其特征在于,所述共识周期包括提案阶段、预投票阶段和预提交阶段;所述检测所述提案节点针对所述第一待上链区块所发起的第一共识过程的共识结果,包括:
若在所述预投票阶段或所述预提交阶段的共识不满足共识策略,则得到用于表征所述提案节点针对所述第一待上链区块所发起的第一共识过程失败的共识结果;
若在所述预投票阶段和所述预提交阶段的共识满足所述共识策略,则得到用于表征所述提案节点针对所述第一待上链区块所发起的第一共识过程成功的共识结果。
13.一种区块链网络的共识装置,其特征在于,所述装置配置于所述区块链网络中的共识节点,所述装置包括:
生成模块,配置为在提案节点针对第一待上链区块发起的共识周期内,生成针对所述第一待上链区块的提案消息;
检测模块,配置为检测所述提案节点针对所述第一待上链区块所发起的第一共识过程的共识结果;
获取模块,配置为若所述共识结果表征所述提案节点针对所述第一待上链区块所发起的第一共识过程失败,则获取所述提案消息;
共识模块,配置为根据所获取到的提案消息发起针对所述第一待上链区块的第二共识过程。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述电子设备执行时,使得所述电子设备实现如权利要求1至12中任一项所述的区块链网络的共识方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的区块链网络的共识方法。
16.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1至12中任一项所述的区块链网络的共识方法。
CN202210502354.0A 2022-05-07 2022-05-07 区块链网络的共识方法及装置、设备、计算机可读介质 Pending CN117061303A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210502354.0A CN117061303A (zh) 2022-05-07 2022-05-07 区块链网络的共识方法及装置、设备、计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210502354.0A CN117061303A (zh) 2022-05-07 2022-05-07 区块链网络的共识方法及装置、设备、计算机可读介质

Publications (1)

Publication Number Publication Date
CN117061303A true CN117061303A (zh) 2023-11-14

Family

ID=88657776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210502354.0A Pending CN117061303A (zh) 2022-05-07 2022-05-07 区块链网络的共识方法及装置、设备、计算机可读介质

Country Status (1)

Country Link
CN (1) CN117061303A (zh)

Similar Documents

Publication Publication Date Title
US11128522B2 (en) Changing a master node in a blockchain system
US12010138B2 (en) Secure blockchain-based consensus
US10742424B2 (en) Trusted identity solution using blockchain
EP3610436B1 (en) Rapid distributed consensus on blockchain
CN109936457B (zh) 区块链多方见证方法、装置、设备及计算机可读存储介质
EP3635606B1 (en) Blockchain for general computation
US20200076602A1 (en) Trusted identity solution using blockchain
US10985907B2 (en) Identifying faults in a blockchain ordering service
US11296864B2 (en) Identifying faults in a blockchain ordering service
JP2019160312A (ja) ブロックチェーン・ノード、ブロックチェーン・ノードの方法、およびブロックチェーン・ノードのコンピュータ・プログラム
CN110633963B (zh) 电子票据处理方法、装置、计算机可读存储介质和设备
CN108769230B (zh) 交易数据存储方法、装置、服务器及存储介质
CN112527912B (zh) 基于区块链网络的数据处理方法、装置及计算机设备
CN111861477A (zh) 基于区块链的交易后数据处理方法、装置和计算机设备
CN111556120A (zh) 基于区块链的数据处理方法、装置、存储介质及设备
CN111698315B (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
CN111523890A (zh) 基于区块链的数据处理方法、装置、存储介质及设备
CN111314067A (zh) 区块存储方法、装置、计算机设备及存储介质
CN111292174A (zh) 一种纳税信息处理方法、装置及计算机可读存储介质
US20200204338A1 (en) Securing public key cryptographic algorithms
CN110992035A (zh) 区块链节点管理方法、装置及系统
CN115701078B (zh) 跨链交易处理方法、装置、电子设备以及存储介质
CN117061303A (zh) 区块链网络的共识方法及装置、设备、计算机可读介质
CN116074327A (zh) 区块链的共识方法、装置、计算机可读介质及电子设备
CN113379542B (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