掌桥专利:专业的专利平台
掌桥专利
首页

区块链的共识方法、装置、计算机可读介质及电子设备

文献发布时间:2023-06-19 19:33:46


区块链的共识方法、装置、计算机可读介质及电子设备

技术领域

本申请涉及计算机及通信技术领域,具体而言,涉及一种区块链的共识方法、装置、计算机可读介质及电子设备。

背景技术

区块链技术广泛应用于金融、征信、银行等领域,相关技术中针对区块链技术提出的BFT(Byzantine Fault Tolerance,拜占庭容错)等共识算法属于串行共识算法,每个区块都需要经过一个提案、预投票、预提交等三个阶段,导致共识效率较低。

发明内容

本申请的实施例提供了一种区块链的共识方法、装置、计算机可读介质及电子设备,进而至少在一定程度上可以提高区块的共识效率。

本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。

根据本申请实施例的一个方面,提供了一种区块链的共识方法,包括:接收区块链网络中的共识节点针对待共识的目标区块的投票消息;根据区块之间的链式关系,将针对所述目标区块的投票消息作为针对所述目标区块及处于所述目标区块之前的待共识区块的投票消息;根据针对各个待共识区块的投票消息,统计所述各个待共识区块的投票结果;根据所述各个待共识区块的投票结果进行共识处理。

根据本申请实施例的一个方面,提供了一种区块链的共识装置,包括:接收单元,配置为接收区块链网络中的共识节点针对待共识的目标区块的投票消息;第一处理单元,配置为根据区块之间的链式关系,将针对所述目标区块的投票消息作为针对所述目标区块及处于所述目标区块之前的待共识区块的投票消息;统计单元,配置为根据针对各个待共识区块的投票消息,统计所述各个待共识区块的投票结果;第二处理单元,配置为根据所述各个待共识区块的投票结果进行共识处理。

在本申请的一些实施例中,基于前述方案,所述第二处理单元还配置为:若对指定区块共识成功,则将所述指定区块和处于所述指定区块之前的区块写入区块链账本中。

在本申请的一些实施例中,基于前述方案,所述投票消息包括预投票阶段的投票消息;所述第二处理单元配置为:根据所述各个待共识区块的投票结果,确定投票数量满足预投票阶段的投票数量要求的第一区块;将所述第一区块作为预提交区块在所述区块链网络中进行广播,以对所述预提交区块进行预提交处理。

在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:若确定出的投票数量满足预投票阶段的投票数量要求的区块为一个,则将确定出的区块作为所述第一区块;若确定出的投票数量满足预投票阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为所述第一区块。

在本申请的一些实施例中,基于前述方案,所述第二处理单元还配置为:在对所述预提交区块进行预提交处理之后,接收区块链网络中的共识节点针对预提交区块的投票消息;根据区块之间的链式关系,将针对所述预提交区块的投票消息作为针对所述预提交区块及处于所述预提交区块之前的预提交区块的投票消息;根据针对各个预提交区块的投票消息,统计所述各个预提交区块的投票结果;根据所述各个预提交区块的投票结果确定能够写入区块链账本的区块。

在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:根据所述各个预提交区块的投票结果,确定投票数量满足预提交阶段的投票数量要求的第二区块;将所述第二区块及处于所述第二区块之前的区块确定为能够写入区块链账本中的区块。

在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:若确定出的投票数量满足预提交阶段的投票数量要求的区块为一个,则将确定出的区块作为所述第二区块;若确定出的投票数量满足预提交阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为所述第二区块。

在本申请的一些实施例中,基于前述方案,所述投票消息包括预提交阶段的投票消息;所述第二处理单元配置为:根据所述各个待共识区块的投票结果,确定投票数量满足预提交阶段的投票数量要求的第二区块;将所述第二区块及处于所述第二区块之前的区块写入区块链账本中。

在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:若确定出的投票数量满足预提交阶段的投票数量要求的区块为一个,则将确定出的区块作为所述第二区块;若确定出的投票数量满足预提交阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为所述第二区块。

在本申请的一些实施例中,基于前述方案,所述接收单元配置为:接收区块链网络中的各个共识节点针对本地维护的待共识最高区块所发送的投票消息,所述待共识最高区块是所述各个共识节点本地维护的需要进行共识、且区块高度最高的区块。

在本申请的一些实施例中,基于前述方案,所述区块链网络中的共识节点采用拜占庭容错BFT共识算法对待共识区块进行共识处理。

根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的区块链的共识方法。

根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上述实施例中所述的区块链的共识方法。

根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的区块链的共识方法。

在本申请的一些实施例所提供的技术方案中,通过根据区块之间的链式关系,将针对目标区块的投票消息作为针对目标区块及处于目标区块之前的待共识区块的投票消息,然后根据针对各个待共识区块的投票消息,统计各个待共识区块的投票结果,并根据各个待共识区块的投票结果进行共识处理,使得能够将区块链的链式结构引入到共识过程中,每一轮共识过程将针对某个区块的投票扩展到该区块的在先区块,进而能够加快区块达成共识,有效提高了区块的共识效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示出了一种区块链网络的结构示意图;

图2示出了区块链中各区块的连接关系示意图;

图3示出了根据本申请的一个实施例的共识节点广播区块的示意图;

图4示出了一种区块链网络的结构示意图;

图5示出了根据本申请的一个实施例的区块链的共识方法的流程图;

图6示出了根据本申请的一个实施例的共识节点的本地区块示意图;

图7示出了根据本申请的一个实施例的区块链的共识方法的流程图;

图8示出了根据本申请的一个实施例的区块链的共识方法的流程图;

图9示出了根据本申请的一个实施例的区块链的共识方法的流程图;

图10示出了根据本申请的一个实施例的区块链的共识装置的框图;

图11示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

现在参考附图以更全面的方式描述示例实施方式。然而,示例的实施方式能够以各种形式实施,且不应被理解为仅限于这些范例;相反,提供这些实施方式的目的是使得本申请更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。

此外,本申请所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,有许多具体细节从而可以充分理解本申请的实施例。然而,本领域技术人员应意识到,在实施本申请的技术方案时可以不需用到实施例中的所有细节特征,可以省略一个或更多特定细节,或者可以采用其它的方法、元件、装置、步骤等。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,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示出了根据本申请一个实施例的共识节点的区块广播示意图;如图3所示,区块链系统中参与共识过程的节点设备分别是节点设备A、节点设备B、节点设备C和节点设备D,在区块链的区块高度H的第N-1轮共识过程中,节点设备B为提案节点,节点设备A、节点设备C和节点设备D为非提案节点。在区块链的区块高度H的第N-1轮共识过程的具体流程包括:

一、提案阶段:

首先,节点设备B(即提案节点)产生待共识的目标区块Block-X,该Block-X可以是由节点设备B创建的新区块。然后,节点设备B将目标区块Block-X广播给节点设备A、节点设备C和节点设备D。

二、预投票阶段:

由于网络故障、设备故障或其他原因,会存在部分节点设备无法在第一时间内接收到节点设备B广播的Block-X的情况,例如设节点设备A未在第一时间内接收到节点设备B广播的Block-X,节点设备C和节点设备D均在第一时间内接收到节点设备B广播的Block-X;那么在预投票阶段,节点设备B、节点C和节点设备D均将Block-X作为待共识的目标区块,并对Block-X进行预投票处理得到各自的预投票信息。此处的预投票信息中包含被执行预投票处理的区块标识,例如节点设备C对该Block-X进行预投票处理生成节点设备C的预投票信息,节点设备C的预投票信息中包括Block-X的标识,且该预投票信息表示节点设备C同意对该Block-X进行预投票,即同意将该Block-X添加至区块链,该Block-X获得节点设备C的预投票。

可以理解的是,如果节点设备C未生成节点设备C的预投票信息,则表示节点设备C未对Block-X进行预投票处理;如果节点设备C的预投票信息中未包括Block-X的标识,则表示节点设备C不同意对该Block-X进行预投票,即不同意将该Block-X添加至区块链上。而节点设备A由于未在第一时间内接到Block-X,因此其可将空区块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-X进行了预投票处理,且节点设备B、节点设备C和节点设备D三者的预投票信息中均包含Block-X的标识;同时设节点设备A只接收到来自节点设备B的预投票信息,结合节点设备A自己的预投票信息统计得到Block-X在预投票阶段获得的预投票数量为1,确认Block-X所获得的预投票数量并未超过数量阈值2。设节点设备B接收到来自节点设备A、节点设备C和节点设备D三个预投票信息,再结合节点设备B自己的预投票信息统计得到Blcok-X获得的预投票数量为3,确认Block-X获得的预投票数量超过了数量阈值2。同理,设节点设备C接收到来自节点设备A、节点设备B和节点设备D三个预投票信息,再结合节点设备C自己的预投票信息统计得到Blcok-X获得的预投票数量为3,确认Block-X获得的预投票数量超过了数量阈值2。设节点设备D也接收到来自节点设备A、节点设备B和节点设备C三个预投票信息,再结合节点设备D自己的预投票信息统计得到Blcok-X获得的预投票数量为3,确认Block-X获得的预投票数量超过了数量阈值2。

三、预提交阶段:

节点设备B、节点设备C和节点设备D均将Block-X确定为待共识的目标区块,所以均对Block-X进行预提交处理得到各自的预提交信息;此处的预提交信息中包含被执行预提交处理的区块标识。例如:节点设备C对该Block-X进行预提交处理生成节点设备C的预提交信息,该预提交信息中包括Block-X的标识,且该预提交信息表示节点设备C同意对该Block-X进行预提交,即表示确认同意将该Block-X添加至区块链,该Block-X获得节点设备C的预提交。

可以理解的是,如果节点设备C未生成节点设备C的预提交信息,则表示节点设备C未对Block-X进行预提交处理;如果节点设备C的预提交信息中未包括Block-X的标识,则表示节点设备C不同意对该Block-X进行预提交,即不同意将该Block-X添加至区块链上。而节点设备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-X进行了预提交处理,且节点设备B、节点设备C和节点设备D三者的预提交信息中均包含Block-X的标识;同时设节点设备B接收到来自节点设备A和节点设备C的预提交信息,结合节点设备B自己的预提交信息统计得到Block-X在预提交阶段获得的预提交数量为2,确认Block-X所获得的预提交数量并未超过(不大于)提交阈值2。设节点设备C接收到来自节点设备A和节点设备C的预提交信息,再结合节点设备C自己的预提交信息统计得到Blcok-X获得的预提交数量为2,确认Block-X所获得的预提交数量并未超过(不大于)提交阈值2。同理,设节点设备A接收到来自节点设备B、节点设备C和节点设备D三个预提交信息,再结合节点设备A自己的预提交信息统计得到Blcok-X获得的预提交数量为3,确认Block-X获得的预提交数量超过了提交阈值2。设节点设备D也接收到来自节点设备A、节点设备B和节点设备C三个预提交信息,再结合节点设备D自己的预提交信息统计得到Blcok-X获得的预提交数量为3,确认Block-X获得的预提交数量超过了提交阈值2。

经过上述三个共识阶段,如果待共识的目标区块所获得的预投票数量超过数量阈值,同时所获得的预提交数量超过提交阈值,则该待共识的目标区块共识成功,可以被添加至区块链上;否则共识失败,不能被添加至区块链上。按照上述示例,节点设备A确认Block-X所获得的预提交数量超过提交阈值,但所获得的预投票数量并未超过数量阈值,因此认定Block-X共识失败。节点设备B确认Block-X所获得的预投票数量超过数量阈值,但所获得的预提交数量并未超过提交阈值,因此认定Block-X共识失败。节点设备C确认Block-X所获得的预投票数量超过数量阈值,但所获得的预提交数量并未超过提交阈值,因此认定Block-X共识失败。节点设备D确认Block-X所获得的预投票数量超过数量阈值,并且所获得的预提交数量超过提交阈值,因此认定Block-X共识成功,节点设备D将Block-X添加至节点设备D本地存储的区块链上。

综上所述,在区块链的区块高度为H的第N-1轮共识过程中,节点设备A、节点设备B和节点设备C并未对Block-X达成共识,未将Block-X写入各自的分布式账本中(即添加至各自本地存储的区块链上),但是节点设备D对Block-X达成共识,并将Block-X写入自己的分布式账本中,那么节点设备D本地存储的区块链的区块高度变为H+1;当在区块链的区块高度H的第N轮共识过程中,节点设备D将不再参与共识,参与共识的节点设备变更为节点设备A、节点设备B和节点设备C。

需要特别说明的是,当进行在区块链的区块高度为H的第N轮共识过程时,提案节点可能会发生变化,例如上述例子中在区块链的区块高度为H的第N-1轮共识过程中的提案节点为节点设备B,而在区块链的区块高度为H的第N轮共识过程可能变更为节点设备C;然后重新执行上述的三个共识阶段,以完成在区块链的区块高度为H的第N轮共识过程。

从上述的共识机制可以看出,每个区块都需要经过一个提案、预投票、预提交等三个阶段,导致共识效率较低。为了提高共识效率,加快区块生成,本申请实施例提出了将区块链的链式结构特性整合到共识算法中,具体地,如图4所示,以区块链网络中有5个共识节点为例进行说明。对于任意一个共识节点而言,当该共识节点接收到区块链网络中的共识节点针对待共识的目标区块的投票消息时,可以根据区块之间的链式关系,将针对该目标区块的投票消息作为针对该目标区块及处于该目标区块之前的待共识区块的投票消息,然后根据针对各个待共识区块的投票消息,统计各个待共识区块的投票结果,进而基于各个待共识区块的投票结果进行共识处理。

比如,共识节点1本地有6个待共识的区块(按照时间顺序依次记为区块1、区块2、区块3、区块4、区块5和区块6),假设在预投票阶段共识节点1接收到针对区块3的1票、区块4的2票、区块5的1票,那么在统计预投票阶段的票数时,区块3是4票、区块4是3票,区块5是1票,如果预投票阶段的票数数量条件是超过2/3的共识节点同意,那么只有区块3满足了条件,此时可以将区块3作为预提交区块进行广播。

类似地,在预提交阶段,假设共识节点1接收到针对区块3的2票、区块4的2票、区块5的2票,那么在统计预提交阶段的票数时,区块3是6票、区块4是4票,区块5是2票,如果预提交阶段的票数数量条件是超过2/3的共识节点同意,那么区块3和区块4都满足了条件,此时由于区块4的区块高度比区块3的区块高度要高,因此可以将区块4及区块4之前的区块(即区块1、区块2、区块3)同时写入区块链账本中。可见,本申请实施例的技术方案能够加快区块达成共识,有效提高了区块的共识效率。

以下对本申请实施例的技术方案的各种实现细节进行详细阐述:

图5示出了根据本申请的一个实施例的区块链的共识方法的流程图,该区块链的共识方法可以由共识节点来执行。具体而言,参照图5所示,该区块链的共识方法至少包括步骤S510至步骤S540,详细介绍如下:

在步骤S510中,接收区块链网络中的共识节点针对待共识的目标区块的投票消息。

可选地,该投票消息可以是预投票阶段的投票消息,或者也可以是预提交阶段的投票消息。当然,在本申请的一些实施例中,该投票消息可以既是预投票阶段的投票消息,也是预提交阶段的投票消息,即针对预投票阶段和预提交阶段都采用图5所示实施例的技术方案。

由于在本申请的实施例中,针对一个区块的投票消息可以扩展到处于该区块之前的那些区块上,因此区块链网络中的各个共识节点可以针对本地维护的待共识最高区块来进行投票,并发送投票消息,该待共识最高区块可以是各个共识节点本地维护的需要进行共识、且区块高度最高的区块。

可选地,区块链网络中的共识节点可以采用拜占庭容错BFT共识算法对待共识区块进行共识处理。当然,在本申请的一些实施例中,也可以采用其它的共识算法来进行共识处理。

在步骤S520中,根据区块之间的链式关系,将针对目标区块的投票消息作为针对目标区块及处于目标区块之前的待共识区块的投票消息。

在本申请的一个实施例中,由于区块链中每一个区块都包含有前面一个区块的哈希信息,因此在对某个区块进行投票确定后,根据区块链的链式结构特性,该区块的前序区块也可以理解为被确定,并以此类推直到创世区块。因此在投票时,针对某个区块的投票也可以扩展到对处于该区块之前的区块的投票。

具体而言,假设一个共识节点本地维护的区块链结构如图6所示,其收到了区块A、B、C、D,并在区块D处分叉,一条分叉是E1、F1、G1,另一条是E2、F2、G2。如果该共识节点收到了针对区块D的1票,针对区块E1的1票和针对区块F2的1票,那么在统计得票数时,区块D的得票数是3票(即将区块E1和区块F2的票数也作为区块D的票数)。

在步骤S530中,根据针对各个待共识区块的投票消息,统计各个待共识区块的投票结果。

在步骤S540中,根据各个待共识区块的投票结果进行共识处理。

在本申请的一个实施例中,如前所述,由于区块链中每一个区块都包含有前面一个区块的哈希信息,因此在对某个区块进行投票确定后,根据区块链的链式结构特性,该区块的前序区块也可以理解为被确定,并以此类推直到创世区块。因此,如果对指定区块共识成功,那么可以将指定区块和处于指定区块之前的区块写入区块链账本中。

以下针对预投票阶段和预提交阶段分别进行详细阐述:

在本申请的一个实施例中,图5所示实施例中的投票消息可以是预投票阶段的投票消息(为便于描述,以下简称为预投票消息),在这种情况下,图5所示的步骤S540可以是确定出满足预投票阶段的投票数量要求的区块,然后将确定出的区块作为预提交区块进行广播。具体而言,可以参照图7所示的区块链的共识方法,该区块链的共识方法可以由共识节点来执行,至少包括如下步骤S710至步骤S750,详细介绍如下:

在步骤S710中,接收区块链网络中的共识节点针对待共识的目标区块的预投票消息。

由于在本申请的实施例中,针对一个区块的预投票消息可以扩展到处于该区块之前的那些区块上,因此区块链网络中的各个共识节点可以针对本地维护的待共识最高区块来进行投票,并发送预投票消息,该待共识最高区块可以是各个共识节点本地维护的需要进行共识、且区块高度最高的区块。

在步骤S720中,根据区块之间的链式关系,将针对目标区块的预投票消息作为针对目标区块及处于目标区块之前的待共识区块的预投票消息。

在本申请的一个实施例中,由于区块链中每一个区块都包含有前面一个区块的哈希信息,因此在对某个区块进行预投票确定后,根据区块链的链式结构特性,该区块的前序区块也可以理解为被确定,并以此类推直到创世区块。因此在预投票阶段,针对某个区块的预投票也可以扩展到对处于该区块之前的区块的预投票。

具体而言,假设一个共识节点本地维护的区块链结构如图6所示,其收到了区块A、B、C、D,并在区块D处分叉,一条分叉是E1、F1、G1,另一条是E2、F2、G2。如果在预投票阶段,该共识节点收到了针对区块D的1票,针对区块E1的1票和针对区块F2的1票,那么在统计得票数时,区块D的得票数是3票(即将区块E1和区块F2的票数也作为区块D的票数)。

在步骤S730中,根据针对各个待共识区块的预投票消息,统计各个待共识区块的投票结果。

在步骤S740中,根据各个待共识区块的投票结果,确定投票数量满足预投票阶段的投票数量要求的第一区块。

在本申请的一个实施例中,如果确定出的投票数量满足预投票阶段的投票数量要求的区块为一个,则将确定出的区块作为第一区块。

如果确定出的投票数量满足预投票阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为第一区块。这是由于在本申请的实施例中,针对一个区块的投票消息(包括预投票阶段的投票消息和预提交阶段的投票消息)可以扩展到处于该区块之前的那些区块上,因此共识节点可以将确定出的多个区块中区块高度最高的区块作为第一区块来进行预提交处理。

在步骤S750中,将确定的第一区块作为预提交区块在区块链网络中进行广播,以对预提交区块进行预提交处理。

在本申请的一个实施例中,当对预提交区块进行预提交处理之后,可以对预提交区块进行预提交投票处理,进而在投票数量满足预提交阶段的投票数量要求时,确定预提交区块可以写入区块链账本中。

当然,在本申请的实施例中,预提交阶段的投票处理过程也可以采用预投票阶段类似的处理方式,具体如图8所示,在步骤S750之后,还可以包括如下步骤S810至步骤S840:

在步骤S810中,接收区块链网络中的共识节点针对预提交区块的投票消息。

由于在本申请的实施例中,在预提交阶段针对一个区块的投票消息可以扩展到处于该区块之前的那些区块上,因此区块链网络中的各个共识节点可以针对本地维护的待共识最高区块来进行投票,并发送投票消息,该待共识最高区块可以是各个共识节点本地维护的需要进行共识、且区块高度最高的区块。

在步骤S820中,根据区块之间的链式关系,将针对预提交区块的投票消息作为针对预提交区块及处于预提交区块之前的预提交区块的投票消息。

类似于预投票阶段,预提交阶段的投票消息也可以扩展到预提交区块之前的区块上。

在步骤S830中,根据针对各个预提交区块的投票消息,统计各个预提交区块的投票结果。

在步骤S840中,根据各个预提交区块的投票结果确定能够写入区块链账本的区块。

可选地,如果根据预提交区块的投票结果确定投票数量满足预提交阶段的投票数量要求,那么可以确定预提交区块能够写入区块链账本中。

另外,由于区块链中每一个区块都包含有前面一个区块的哈希信息,因此在对某个区块进行预投票确定后,根据区块链的链式结构特性,该区块的前序区块也可以理解为被确定,并以此类推直到创世区块,因此如果根据各个预提交区块的投票结果,确定出了投票数量满足预提交阶段的投票数量要求的第二区块,那么可以将第二区块及处于第二区块之前的区块确定为能够写入区块链账本中的区块。

在本申请的一个实施例中,如果确定出的投票数量满足预提交阶段的投票数量要求的区块为一个,则可以将确定出的区块作为第二区块。

如果确定出的投票数量满足预提交阶段的投票数量要求的区块为多个,则可以将确定出的多个区块中区块高度最高的区块作为第二区块。这是由于在本申请的实施例中,针对一个区块的预提交阶段的投票消息可以扩展到处于该区块之前的那些区块上,且一个区块共识成功之后,该区块的在先区块也可以理解为共识成功,因此共识节点可以将确定出的多个区块中区块高度最高的区块作为第二区块。

在图8所示的技术方案中,预投票阶段和预提交阶段的投票消息都可以扩展到之前的区块中,进而可以加快区块的共识过程,有利于提高区块链的共识效率。

在本申请的一个实施例中,图5所示实施例中的投票消息可以是预提交阶段的投票消息(为便于描述,以下简称为预提交投票消息),在这种情况下,图5所示的步骤S540可以是确定出满足预提交阶段的投票数量要求的区块,然后将确定出的区块及处于该区块之前的区块写入区块链账本中。具体而言,可以参照图9所示的区块链的共识方法,该区块链的共识方法可以由共识节点来执行,至少包括如下步骤S910至步骤S950,详细介绍如下:

在步骤S910中,接收区块链网络中的共识节点针对待共识的目标区块的预提交投票消息。

由于在本申请的实施例中,针对一个区块的预提交投票消息可以扩展到处于该区块之前的那些区块上,因此区块链网络中的各个共识节点可以针对本地维护的待共识最高区块来进行投票,并发送预提交投票消息,该待共识最高区块可以是各个共识节点本地维护的需要进行共识、且区块高度最高的区块。

在步骤S920中,根据区块之间的链式关系,将针对目标区块的预提交投票消息作为针对目标区块及处于目标区块之前的待共识区块的预提交投票消息。

在本申请的一个实施例中,由于区块链中每一个区块都包含有前面一个区块的哈希信息,因此在对某个区块进行预提交投票确定后,根据区块链的链式结构特性,该区块的前序区块也可以理解为被确定,并以此类推直到创世区块。因此在预提交阶段,针对某个区块的预提交投票也可以扩展到对处于该区块之前的区块的预提交投票。

具体而言,假设一个共识节点本地维护的区块链结构如图6所示,其收到了区块A、B、C、D,并在区块D处分叉,一条分叉是E1、F1、G1,另一条是E2、F2、G2。如果在预提交阶段,该共识节点收到了针对区块D的1票,针对区块E1的1票和针对区块F2的1票,那么在统计得票数时,区块D的得票数是3票(即将区块E1和区块F2的票数也作为区块D的票数)。

在步骤S930中,根据针对各个待共识区块的预提交投票消息,统计各个待共识区块的投票结果。

在步骤S940中,根据各个待共识区块的投票结果,确定投票数量满足预提交阶段的投票数量要求的第二区块。

在本申请的一个实施例中,如果确定出的投票数量满足预提交阶段的投票数量要求的区块为一个,则可以将确定出的区块作为第二区块。

如果确定出的投票数量满足预提交阶段的投票数量要求的区块为多个,则可以将确定出的多个区块中区块高度最高的区块作为第二区块。这是由于在本申请的实施例中,针对一个区块的预提交阶段的投票消息可以扩展到处于该区块之前的那些区块上,且一个区块共识成功之后,该区块的在先区块也可以理解为共识成功,因此共识节点可以将确定出的多个区块中区块高度最高的区块作为第二区块。

在步骤S950中,将第二区块及处于第二区块之前的区块写入区块链账本中。

在图9所示的技术方案中,预提交阶段的投票消息都可以扩展到之前的区块中,同样可以加快区块的共识过程,有利于提高区块链的共识效率。

以下结合图6,以一个具体示例对本申请实施例的技术方案进行详细说明:

在本申请的实施例中,可以在BFT算法的前提下,将区块链链式结构整合到了共识过程中,区块链共识节点对其认为有效的最高区块进行投票,每一轮共识过程中,每个阶段的投票将按照区块链链式结构特性传递给有效的最高区块的所有前序区块,并且每个共识节点可以基于自身维护的链的状态确定出最高区块(即区块高度最高的区块)。

具体地,假设共识网络包括4个共识节点,其中一个共识节点本地维护的区块链的状态如图6所示,其收到了区块A、B、C、D,并在区块D处分叉,一条分叉是E1、F1、G1,另一条是E2、F2、G2。由于网络等因素,每个共识节点收到的共识投票可能不一样,本申请实施例假设在预投票阶段,所述共识节点收到了针对区块C的1票、针对区块E2的1票,针对区块F1的1票,那么根据本申请实施例中的投票传递原则(即针对一个区块的投票可以扩展到该区块的在先区块),区块C得到3票,满足了BFT要求的2/3条件,故而在预提交阶段,所述节点将对区块C进行预提交并广播出去。

类似的,在预提交阶段,假设所有共识节点收到了针对区块C的1票、针对区块E2的2票、针对区块D的1票,那么根据前述的投票传递原则,区块C和区块D的预提交投票数均超过了2/3(区块C是4票,区块D是3票),而由于区块D的区块高度比区块C要高,因此可以将区块D作为区块最高的有效区块,同时区块D之前的区块A、区块B、区块C也都有效,故而本轮共识所有共识节点可以将A、B、C、D四个区块写入区块链账本中。

可见,本申请实施例的技术方案将区块链链式结构特性加入到共识过程中,每一轮共识过程可以将对一个区块的投票扩展到该区块的在先区块,加快了区块共识速度,有效提升了共识效率。

以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的区块链的共识方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的区块链的共识方法的实施例。

图10示出了根据本申请的一个实施例的区块链的共识装置的框图,该区块链的共识装置可以设置在共识节点内。

参照图10所示,根据本申请的一个实施例的区块链的共识装置1000,包括:接收单元1002、第一处理单元1004、统计单元1006和第二处理单元1008。

其中,接收单元1002配置为接收区块链网络中的共识节点针对待共识的目标区块的投票消息;第一处理单元1004配置为根据区块之间的链式关系,将针对所述目标区块的投票消息作为针对所述目标区块及处于所述目标区块之前的待共识区块的投票消息;统计单元1006配置为根据针对各个待共识区块的投票消息,统计所述各个待共识区块的投票结果;第二处理单元1008配置为根据所述各个待共识区块的投票结果进行共识处理。

在本申请的一些实施例中,基于前述方案,所述第二处理单元1008还配置为:若对指定区块共识成功,则将所述指定区块和处于所述指定区块之前的区块写入区块链账本中。

在本申请的一些实施例中,基于前述方案,所述投票消息包括预投票阶段的投票消息;所述第二处理单元1008配置为:根据所述各个待共识区块的投票结果,确定投票数量满足预投票阶段的投票数量要求的第一区块;将所述第一区块作为预提交区块在所述区块链网络中进行广播,以对所述预提交区块进行预提交处理。

在本申请的一些实施例中,基于前述方案,所述第二处理单元1008配置为:若确定出的投票数量满足预投票阶段的投票数量要求的区块为一个,则将确定出的区块作为所述第一区块;若确定出的投票数量满足预投票阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为所述第一区块。

在本申请的一些实施例中,基于前述方案,所述第二处理单元1008还配置为:在对所述预提交区块进行预提交处理之后,接收区块链网络中的共识节点针对预提交区块的投票消息;根据区块之间的链式关系,将针对所述预提交区块的投票消息作为针对所述预提交区块及处于所述预提交区块之前的预提交区块的投票消息;根据针对各个预提交区块的投票消息,统计所述各个预提交区块的投票结果;根据所述各个预提交区块的投票结果确定能够写入区块链账本的区块。

在本申请的一些实施例中,基于前述方案,所述第二处理单元1008配置为:根据所述各个预提交区块的投票结果,确定投票数量满足预提交阶段的投票数量要求的第二区块;将所述第二区块及处于所述第二区块之前的区块确定为能够写入区块链账本中的区块。

在本申请的一些实施例中,基于前述方案,所述第二处理单元1008配置为:若确定出的投票数量满足预提交阶段的投票数量要求的区块为一个,则将确定出的区块作为所述第二区块;若确定出的投票数量满足预提交阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为所述第二区块。

在本申请的一些实施例中,基于前述方案,所述投票消息包括预提交阶段的投票消息;所述第二处理单元1008配置为:根据所述各个待共识区块的投票结果,确定投票数量满足预提交阶段的投票数量要求的第二区块;将所述第二区块及处于所述第二区块之前的区块写入区块链账本中。

在本申请的一些实施例中,基于前述方案,所述第二处理单元1008配置为:若确定出的投票数量满足预提交阶段的投票数量要求的区块为一个,则将确定出的区块作为所述第二区块;若确定出的投票数量满足预提交阶段的投票数量要求的区块为多个,则将确定出的多个区块中区块高度最高的区块作为所述第二区块。

在本申请的一些实施例中,基于前述方案,所述接收单元1002配置为:接收区块链网络中的各个共识节点针对本地维护的待共识最高区块所发送的投票消息,所述待共识最高区块是所述各个共识节点本地维护的需要进行共识、且区块高度最高的区块。

在本申请的一些实施例中,基于前述方案,所述区块链网络中的共识节点采用拜占庭容错BFT共识算法对待共识区块进行共识处理。

图11示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

需要说明的是,图11示出的电子设备的计算机系统1100仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图11所示,计算机系统1100包括中央处理单元(Central Processing Unit,CPU)1101,其可以根据存储在只读存储器(Read-Only Memory,ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(Random Access Memory,RAM)1103中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1103中,还存储有系统操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(Input/Output,I/O)接口1105也连接至总线1104。

以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。

特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本申请的系统中限定的各种功能。

需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

相关技术
  • 并行区块链共识方法、系统、电子设备和计算机可读存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 模态框构建方法、装置、电子设备、计算机可读存储介质
  • 电子设备、音量调节方法及装置、计算机可读存储介质
  • 区块链共识方法、区块链共识系统和计算机可读存储介质
  • 一种区块链的共识方法、电子设备和计算机可读存储介质
技术分类

06120115950582