CN111061769A - 一种区块链***的共识方法及相关设备 - Google Patents
一种区块链***的共识方法及相关设备 Download PDFInfo
- Publication number
- CN111061769A CN111061769A CN201911348339.XA CN201911348339A CN111061769A CN 111061769 A CN111061769 A CN 111061769A CN 201911348339 A CN201911348339 A CN 201911348339A CN 111061769 A CN111061769 A CN 111061769A
- Authority
- CN
- China
- Prior art keywords
- consensus
- block
- node device
- block chain
- height
- 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.)
- Granted
Links
Images
Classifications
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种区块链***的共识方法及相关设备,其中,区块链***包括区块链和共识委员会,共识委员会包括多个参与共识的节点设备,该方法由第一节点设备执行,第一节点设备为共识委员会中的任一个节点设备,该方法包括:在区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数;若缓存空间中存在处于锁定状态的区块,则将处于锁定状态的区块确定为待共识的目标区块;对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。本申请实施例可以保证共识准确性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链***的共识方法,一种区块链***的共识装置、一种区块链***的共识设备及一种计算机存储介质。
背景技术
区块链***是一个分布式的***,共识机制是保证区块链***正常运行的基础。所谓共识即是达成一致的意思;区块链***中的每个节点设备各自存储有一份分布式账本(即区块链);区块链***的共识过程就是让各个节点设备之间的分布式账本保持一致的过程。区块链***的共识过程通常是基于共识算法来实现,该共识算法可包括但不限于:BFT(Byzantine Fault Tolerance,拜占庭容错)算法、PBFT(Practical Byzantine FaultTolerance,实用拜占庭容错)算法等等。实践中发现,现有的区块链***的共识过程容易产生共识错误,导致区块链***中各个节点设备之间的分布式账本出现账本数据不一致的情况。
发明内容
本申请实施例提供一种区块链***的共识方法及相关设备,可以保证共识准确性。
一方面,本申请实施例提供一种区块链***的共识方法,所述区块链***包括区块链和共识委员会,所述共识委员会包括多个参与共识的节点设备,所述方法由第一节点设备执行,所述第一节点设备为所述共识委员会中的任一个节点设备,所述方法包括:
在所述区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数;
若所述缓存空间中存在处于锁定状态的区块,则将所述处于锁定状态的区块确定为待共识的目标区块;
对所述目标区块进行共识处理,得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果。
一方面,本申请实施例提供一种区块链***的共识装置,所述区块链***包括区块链和共识委员会,所述共识委员会包括多个参与共识的节点设备,所述共识装置运行于第一节点设备中,所述第一节点设备为所述共识委员会中的任一个节点设备,所述共识装置包括:
检查单元,用于在所述区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数;
确定单元,用于若所述缓存空间中存在处于锁定状态的区块,则将所述处于锁定状态的区块确定为待共识的目标区块;
处理单元,用于对所述目标区块进行共识处理,得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果。
一方面,本申请实施例提供一种区块链***的共识设备,所述区块链***包括区块链和共识委员会,所述共识委员会包括多个参与共识的节点设备,所述共识设备是第一节点设备,所述第一节点设备为所述共识委员会中的任一个节点设备,所述共识设备包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行上述的区块链***的共识方法。
一方面,本申请实施例提供一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述的区块链***的共识方法。
本申请实施例在共识过程中设置锁机制,在区块链的区块高度H的第N轮共识过程中,对节点设备的缓存空间中保存的处于锁定状态的区块进行共识处理;这样可以不必在每次共识过程中都创建新的区块,简化了共识过程的流程及节省了创建区块所耗费的资源,同时可有效保证区块链在同一区块高度的数据一致性,保证了共识准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个示例性实施例提供的区块链***的架构图;
图2示出了本申请一个示例性实施例提供的区块链的结构示意图;
图3示出了本申请一个示例性实施例提供的区块链网络的架构示意图;
图4示出了本申请一个示例性实施例提供的一种共识委员会的组成架构图;
图5示出了本申请一个示例性实施例提供的一种区块链***的共识方法的流程图;
图6示出了本申请一个示例性实施例提供的一种区块链***的共识方法的流程图;
图7示出了本申请一个示例性实施例提供的一种区块链***的共识方法的流程图;
图8示出了本申请一个示例性实施例提供的一种区块链***的共识装置的结构示意图;
图9示出了本申请一个示例性实施例提供的一种区块链***的共识设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例中涉及区块链技术。区块链是一套去中心化、具备分布式存储特点的基础架构,具体是一种按照时间顺序将数据区块用类似链表的方式组成的数据结构,能够安全存储有先后关系的、能在***内进行验证的数据,并以密码学方式保证数据不可篡改和不可伪造。
图1示出了本申请一个示例性实施例提供的区块链***的架构图;如图1所示,区块链***按照由底至上的顺序主要包括101-105共5个层级结构。其中:
(1)信息数据和默克尔(Merkle)树位于底层101。此处的信息数据是指请求发布至区块链网络,但尚未形成区块的原始数据,例如可以是借贷数据、交易数据等等。这些原始数据需要进一步加工(例如经过区块链网络中各节点的验证、进行散列运算等)才能被写入区块内。Merkle树是区块链技术的重要组成部分,区块链不会直接保存明文的原始数据,原始数据需要被执行散列运算,以散列值的方式被存储。默克尔树就用于将多个原始数据经散列运算形成的散列值按照二叉树结构组织起来,保存在区块的块体中。
(2)区块位于层级102。区块即数据块,底层101的信息数据经过进一步加工之后被写入至层级102中的区块内。一个区块被创建后会被执行共识处理,当该区块共识成功后,该区块才被允许添加至区块链上。区块链包含多个区块,这些区块按照创建时间戳由小到大的顺序连接成链式结构。区块链是一种分布式账本,区块链上的区块内包含的信息数据是该分布式账本的账本数据。图2示出了本申请一个示例性实施例提供的区块链的结构示意图;如图2所示,区块201、区块202和区块203按序连接成链式结构。其中,区块202分为区块头和区块体两部分,区块头包含前一区块201的摘要值、本区块202的摘要值及本区块的默克尔(Merkle)根。区块体包含本区块202的完整数据,并以Merkle树的形式组织在一起。
(3)区块链所遵循的协议与机制位于层级103。这些协议可包括:P2P(Peer-to-Peer,对等式网络)协议;机制可包括但不限于:广播机制、共识机制(包括PoW(Proof OfWork,工作量证明)机制、POS(Proof Of Stake,权益证明)机制等核心机制)。
(4)区块链网络位于层级104。区块链网络由多个节点设备组成;节点设备可包括但不限于:PC(Personal Computer,个人计算机)、服务器、用于比特币挖矿设计的矿机、智能手机、平板电脑、移动计算机等等。图3示出了本申请一个示例性实施例提供的区块链网络的架构示意图;图中以7个节点设备为例进行说明,区块链网络中各节点设备以P2P方式组网,节点设备与节点设备之间按照P2P协议相互通信;各节点设备共同遵循广播机制、共识机制(包括PoW机制、POS机制等核心机制),共同保证区块链上的数据的不可篡改、不可伪造性,同时实现区块链的去中心化、去信任化等特性。
(5)智能合约位于上层105。智能合约是一组情景——应对型的程序化规则和逻辑,是部署在区块链上的去中心化、可信息共享的程序代码。签署合约的各参与方就合约内容达成一致,以智能合约的形式部署在区块链中,即可不依赖任何中心机构自动化地代表各签署方执行合约。
由于区块链具备去中心化、分布式存储、数据的不可篡改、不可伪造等特性,越来越多的业务活动(例如借贷活动、金融交易活动)基于区块链技术展开,以利用区块链的特性来保证业务活动的公平性和公开性。
本申请实施例中还涉及共识机制。区块链***是一个分布式的***,共识机制是保证区块链***正常运行的基础。所谓共识即是达成一致的意思;区块链***中的每个节点设备各自存储有一份分布式账本(即区块链);区块链***的共识过程就是让各个节点设备之间的分布式账本保持一致的过程。区块链***中的全部或部分节点设备可参与到区块链***的共识过程中,这些参与共识的节点设备共同组成区块链***的共识委员会,并且每个参与共识的节点设备均作为共识委员会中的成员;换句话说,区块链***的共识委员会包括参与共识的多个节点设备,而区块链***的共识过程就是由共识委员会中的节点设备来执行的,具体地,区块链***的共识过程通常是基于共识算法来实现,该共识算法可包括但不限于:BFT算法、PBFT算法等等;共识委员会中的各个节点设备通过运行共识算法来执行共识过程的相应流程。
通常,在区块链的某个区块高度需要进行一轮或多轮共识过程,才能在共识委员会的各个节点设备之间达成一致。区块高度用于表示连接在区块链上的区块数量。区块高度是区块的标志符,可用来指示区块在区块链中的位置;区块链中创始区块的区块高度默认为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个节点设备。图4示出了本申请一个示例性实施例提供的一种共识委员会的组成架构图;如图4所示,区块链***的共识委员会中的成员分别是节点设备A、节点设备B、节点设备C和节点设备D,在区块链的区块高度H的第N-1轮共识过程中,节点设备B为提案节点,节点设备A、节点设备C和节点设备D为非提案节点。在区块链的区块高度H的第N-1轮共识过程的具体流程包括:
一、提案阶段:
1-1、节点设备B(即提案节点)产生待共识的目标区块Block-X,该Block-X可以是由节点设备B创建的新区块。
1-2、节点设备B将Block-X确定为待共识的目标区块,并且将Block-X广播给节点设备A、节点设备C和节点设备D。
二、预投票阶段:
2-1、由于网络故障、设备故障或其他原因,会存在部分节点设备无法在第一时间内接收到节点设备B广播的Block-X的情况,例如设节点设备A未在第一时间内接收到节点设备B广播的Block-X,节点设备C和节点设备D均在第一时间内接收到节点设备B广播的Block-X;那么在该预投票阶段,节点设备B、节点C和节点设备D均将Block-X作为待共识的目标区块,并对Block-X进行预投票处理得到各自的预投票信息;此处的预投票信息中包含被执行预投票处理的区块标识;例如:节点设备C对该Block-X进行预投票处理生成节点设备C的预投票信息,该预投票信息中包括Block-X的标识,且该预投票信息表示节点设备C同意对该Block-X进行预投票,即同意将该Block-X添加至区块链,该Block-X获得节点设备C的预投票;可以理解的是,如果未生成节点设备C的预投票信息,表示节点设备C未对Block-X进行预投票处理;或者如果节点设备C的预投票信息中未包括Block-X的标识,表示节点设备C不同意对该Block-X进行预投票,即不同意将该Block-X添加至区块链上。而节点设备A由于未在第一时间内接到Block-X,因此其可将空区块emptyBlock确定为待共识的目标区块,并对emptyBlock进行预投票处理得到节点设备A的预投票信息,该节点设备A的预投票信息包括emptyBlock的标识。其中第一时间可以根据实际需要进行设定,例如为1分钟、3分钟等等。
2-2、节点设备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。
三、预提交阶段:
3-1、节点设备B、节点C和节点设备D均将Block-X确定为待共识的目标区块,所以均对Block-X进行预提交处理得到各自的预提交信息;此处的预提交信息中包含被执行预提交处理的区块标识;例如:节点设备C对该Block-X进行预提交处理生成节点设备C的预提交信息,该预提交信息中包括Block-X的标识,且该预提交信息表示节点设备C同意对该Block-X进行预提交,即表示确认同意将该Block-X添加至区块链,该Block-X获得节点设备C的预提交;可以理解的是,如果未生成节点设备C的预提交信息,表示节点设备C未对Block-X进行预提交处理;或者如果节点设备C的预提交信息中未包括Block-X的标识,表示节点设备C不同意对该Block-X进行预提交,即确认不同意将该Block-X添加至区块链上。而节点设备A由于将空区块emptyBlock确定为待共识的目标区块,因此节点设备A对emptyBlock进行预提交处理得到节点设备A的预提交信息,该节点设备A的预提交信息包括emptyBlock的标识。
3-2、节点设备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轮共识过程。按照上述例子,由于节点设备D在区块链的区块高度H的第N-1轮共识过程中对Block-X已达成共识,并将Block-X添加至本地存储的区块链上,因此针对节点设备D的本地存储的区块链的区块高度H对应的区块为Block-X。那么,在区块链的区块高度H的第N轮共识过程及后续各轮的共识过程中,需要同样对Block-X达成共识,才能保证区块链在同一区块高度的一致性,否则就会出现共识错误;这要求在区块链的区块高度H的第N轮共识过程及后续各轮的共识过程中,Block-X始终为待共识的目标区块,为了达到此目的,本申请实施例在共识过程中设置锁机制,锁机制要求共识委员会的节点设备将在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块锁定存储至各自的缓存空间中,并在缓存空间中保持锁定状态,那么在区块链的区块高度H的第N轮及后续多轮的共识过程中,节点设备就只对处于锁定状态的区块进行共识处理;此处的锁定条件可以包括以下条件:①已经在区块链的区块高度H的第N-i轮共识过程的提案阶段中被创建且创建时间戳最大,例如:在区块链的区块高度H的第N-i轮共识过程中,共有两个区块Block-Y和Block-X被创建,但Block-X的创建时间戳大于Block-Y的创建时间戳,那么Block-X满足条件;②在所述区块链的区块高度H的第N-i轮共识过程的预投票阶段所获得的预投票总数大于数量阈值;例如上述例子中,节点设备B和节点设备C均确认Block-X所获得的预投票数量大于数量阈值,该Block-X满足条件;③在所述区块链的区块高度H的第N-i轮共识过程的预提交阶段所获得的预提交总数小于提交阈值;例如上述例子中,节点设备B和节点设备C均确认Block-X所获得的预提交数量小于提交阈值,该Block-X满足条件。按照锁机制,节点设备B和节点设备C会在各自的缓存空间中锁定存储Block-X,当进行在区块链的区块高度H的第N轮共识过程中,节点设备B只对Block-X进行共识处理,节点设备C也只对Block-X进行共识处理,那么当节点设备A、节点设备B和节点设备C在区块链的区块高度H的第N轮共识过程中均对Block-X达成共识时,节点设备A、节点设备B和节点设备C均会在各自的本地存储的区块链上添加Block-X,这就保证了区块链在同一区块高度的数据一致性,保证了共识过程的准确性。
基于上述描述可知,本申请实施例提出的区块链***的共识方案,该方案在共识过程中设置锁机制,锁机制要求共识委员会的节点设备将在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块锁定存储至各节点设备各自的缓存空间中,并在缓存空间中保持锁定状态,那么在区块链的区块高度H的第N轮及后续多轮的共识过程中,共识委员会中的各个节点设备就只对处于锁定状态的区块进行共识处理;这样可以保证区块链在同一区块高度的数据一致性,保证了共识过程不受提案节点变化、待共识的目标区块的变化等因素的影响,保证共识准确性。
图5示出了本申请一个示例性实施例提供的一种区块链***的共识方法的流程图;本实施例中,区块链***包括区块链和共识委员会,共识委员会包括多个参与共识的节点设备;该方法由第一节点设备执行,第一节点设备为共识委员会中的任一个节点设备,该方法包括以下步骤S501-S503:
S501,在区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数。
S502,若缓存空间中存在处于锁定状态的区块,则将处于锁定状态的区块确定为待共识的目标区块。
步骤S501-S502中,处于锁定状态的区块是指在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块。如果第一节点设备检测到在区块链的区块高度H的第N-i轮共识过程中存在满足锁定条件的区块,则第一节点设备按照锁机制会将该区块锁定存储至自己的缓存空间中,并将其作为在区块链的区块高度H的第N轮共识过程中的待共识的目标区块,并在区块链的区块高度H的第N轮共识过程对该目标区块进行共识处理。
S503,对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
共识处理可包括预投票处理和预提交处理。共识结果可用于表示共识成功或共识失败,如果共识结果表示共识成功,表示第一节点设备在区块链的区块高度H的第N轮共识过程对该目标区块达成共识,该目标区块后续会被第一节点设备添加至第一节点设备本地存储的区块链上。如果共识结果表示共识失败,表示第一节点设备在区块链的区块高度H的第N轮共识过程未对该目标区块达成共识,该目标区块将继续锁定存储在第一节点设备的缓存空间中,并在区块高度H的第N+j(j为正整数)轮共识过程中被继续进行共识处理。
本申请实施例在共识过程中设置锁机制,在区块链的区块高度H的第N轮共识过程中,对节点设备的缓存空间中保存的处于锁定状态的区块进行共识处理;这样可以不必在每次共识过程中都创建新的区块,简化了共识过程的流程及节省了创建区块所耗费的资源,同时可有效保证区块链在同一区块高度的数据一致性,保证了共识准确性。
图6示出了本申请一个示例性实施例提供的一种区块链***的共识方法的流程图;本实施例中,区块链***包括区块链和共识委员会,共识委员会包括多个参与共识的节点设备;该方法由第一节点设备执行,第一节点设备为共识委员会中的任一个节点设备,并且第一节点设备为区块链的区块高度H的第N轮共识过程中的提案节点。该方法包括以下步骤S601-S609:
S601,在区块链的区块高度H的第N-i轮共识过程中,为满足锁定条件的区块设置锁定标识,并将设有锁定标识的区块存储至缓存空间中;其中,设有锁定标识的区块处于锁定状态。
共识过程包括提案阶段、预投票阶段和预提交阶段;锁定条件包括:在区块链的区块高度H的第N-i轮共识过程的提案阶段被创建且创建时间戳最大;在区块链的区块高度H的第N-i轮共识过程的预投票阶段所获得的预投票总数大于数量阈值;以及,在区块链的区块高度H的第N-i轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值。
S602,在区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块。若缓存空间中存在处于锁定状态的区块,则执行步骤S603;若缓存空间中不存在处于锁定状态的区块,则执行步骤S604;
S603,将处于锁定状态的区块确定为待共识的目标区块;转入执行S605。
S604,在区块链的区块高度H的第N轮共识过程的提案阶段创建区块,并将创建的区块确定为待共识的目标区块。
S605,在区块链的区块高度H的第N轮共识过程的提案阶段,将目标区块广播至共识委员会中的其他节点设备。
步骤S603-S605中,第一节点设备作为在区块链的区块高度H的第N轮共识过程中的提案节点,在区块链的区块高度H的第N轮共识过程的提案阶段有两种方式产生待共识的目标区块,一种方式是创建新区块,将创建的新区块确定为待共识的目标区块。另一种方式是从缓存空间中获取处于锁定状态的区块作为待共识的目标区块。按照本申请实施例的锁机制,为了保证共识准确性,当第一节点设备的缓存空间中存在处于锁定状态的区块时,该处于锁定状态的区块则优先被确定为待共识的目标区块被第一节点设备广播给其他节点设备进行共识处理。当第一节点设备的缓存空间中不存在处于锁定状态的区块时,才创建新区块作为待共识的目标区块并广播给其他节点设备进行后续的共识处理。
S606,获取共识委员会中的各节点设备在区块链的区块高度H的第N轮共识过程中对目标区块进行共识处理所生成的共识消息。共识处理包括预投票处理和预提交处理,共识消息则包括预投票信息和预提交信息。
S607,对共识消息进行分析得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
在一种实施方式中,共识消息包含预投票信息;S607具体包括以下步骤s11-s12:
s11,根据预投票信息确定目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数。
s12,若目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数小于或等于数量阈值,则生成用于指示共识失败的共识结果。
数量阈值可以根据实际需要进行设定,如数量阈值可以为共识委员会中节点设备的数量的50%,或者为共识委员会中节点设备的数量的2/3。
在另一种实施方式中,共识消息还包含预提交信息;S607还包括:
s13,若目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数大于数量阈值,则根据预提交信息确定目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数;
s14,若目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数大于提交阈值,则生成用于指示共识成功的共识结果;
s15,若目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值,则生成用于指示共识失败的共识结果。
上述步骤s11-s15中,在区块链的区块高度H的第N轮共识过程中,只有当目标区块所获得的预投票总数大于数量阈值,并且目标区块所获得的预提交总数也大于提交阈值的情况下,目标区块才共识成功。
S608,若共识结果指示共识成功,则将目标区块添加至区块链。第一节点设备将目标区块添加至区块链,此处的区块链是指第一节点设备本地存储的区块链(即分布式账本)。
S609,从缓存空间中删除处于锁定状态的区块。
步骤S609为可选步骤,如果目标区块为缓存空间中处于锁定状态的区块,那么当该目标区块共识成功,即第一节点设备对该目标区块达成共识并将该目标区块添加至第一节点设备本地存储的区块链上后,可以将缓存空间中该目标区块对应的处于锁定状态的区块进行删除。可以理解的是,如果共识结果指示失败,即第一节点设备在本轮共识过程中并未对该目标区块达成共识,该目标区块会被继续锁定存储在第一节点设备的缓存空间中。当然,如果目标区块是由第一节点设备在本轮共识过程中创建的待共识的区块,则无需执行步骤S609。另外,在本轮共识过程(即在区块链的区块高度H的第N轮共识过程)中,如果产生一个满足锁定条件的新区块,由于该满足锁定条件的新区块的创建时间戳大于缓存空间中处于锁定状态的区块之间的创建时间戳,因此第一节点设备会将该满足锁定条件的新区块锁定存储至缓存空间中,并替换原缓存空间中处于锁定状态的区块;例如:设第一节点设备的缓存空间中处于锁定状态的区块为Block-X,该Block-X是在区块链的区块高度H的第N-i轮共识过程被锁定存储至缓存空间内的,在区块链的区块高度H的第N轮共识过程中产生满足锁定状态的新区块Block-Y,由于Block-Y的创建时间戳大于Block-X的创建时间戳,因此第一节点设备会将缓存空间中的Block-X替换为Block-Y。
本申请实施例在共识过程中设置锁机制,锁机制要求共识委员会的节点设备将在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块锁定存储至该节点设备的缓存空间中,并在缓存空间中保持锁定状态,那么在区块链的区块高度H的第N轮共识过程中,该节点设备就只对处于锁定状态的区块进行共识处理;这样可以保证区块链在同一区块高度的数据一致性,保证了共识过程不受提案节点变化、待共识的目标区块的变化等因素的影响,保证共识准确性。
图7示出了本申请一个示例性实施例提供的一种区块链***的共识方法的流程图;本实施例中,区块链***包括区块链和共识委员会,共识委员会包括多个参与共识的节点设备;该方法由第一节点设备执行,第一节点设备为共识委员会中的任一个节点设备,并且第一节点设备为区块链的区块高度H的第N轮共识过程中的非提案节点,区块链的区块高度H的第N轮共识过程中的提案节点是第二节点设备,该第二节点设备是共识委员会中除第一节点设备之外的任一个节点设备。该方法包括以下步骤S701-S709:
S701,在区块链的区块高度H的第N-i轮共识过程中,为满足锁定条件的区块设置锁定标识,并将设有锁定标识的区块存储至缓存空间中;其中设有锁定标识的区块处于锁定状态。
S702,在区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块。若缓存空间中存在处于锁定状态的区块,则执行步骤S703;若缓存空间中不存在处于锁定状态的区块,则执行步骤S705。
S703,将处于锁定状态的区块确定为待共识的目标区块。
S704,当在区块链的区块高度H的第N轮共识过程的提案阶段接收到第二节点设备广播的待共识的目标区块时,丢弃接收到的目标区块。转入步骤S706。
S705,在区块链的区块高度H的第N轮共识过程的提案阶段接收第二节点设备广播的待共识的目标区块。
步骤S703-S705中,第一节点设备作为在区块链的区块高度H的第N轮共识过程中的非提案节点,在区块链的区块高度H的第N轮共识过程的提案阶段有两种方式获得待共识的目标区块,一种方式是接收提案节点创建的新区块,将创建的新区块确定为待共识的目标区块。另一种方式是从缓存空间中获取处于锁定状态的区块作为待共识的目标区块。按照本申请实施例的锁机制,为了保证共识准确性,当第一节点设备的缓存空间中存在处于锁定状态的区块时,该处于锁定状态的区块则优先被确定为待共识的目标区块,此时无论提案节点广播任何区块,第一节点设备均对接收到的广播区块进行丢弃,即只对缓存空间中处于锁定状态的区块进行共识处理。当第一节点设备的缓存空间中不存在处于锁定状态的区块时,才会接收提案节点广播的待共识的目标区块进行后续的共识处理。
S706,获取共识委员会中的各节点设备在区块链的区块高度H的第N轮共识过程中对目标区块进行共识处理所生成的共识消息。
S707,对共识消息进行分析得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
S708,若共识结果指示共识成功,则将目标区块添加至区块链。
S709,从缓存空间中删除处于锁定状态的区块。
本申请实施例在共识过程中设置锁机制,锁机制要求共识委员会的节点设备将在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块锁定存储至该节点设备的缓存空间中,并在缓存空间中保持锁定状态,那么在区块链的区块高度H的第N轮共识过程中,该节点设备就只对处于锁定状态的区块进行共识处理;这样可以保证区块链在同一区块高度的数据一致性,保证了共识过程不受提案节点变化、待共识的目标区块的变化等因素的影响,保证共识准确性。
图8示出了本申请一个示例性实施例提供的一种区块链***的共识装置的结构示意图;区块链***包括区块链和共识委员会,共识委员会包括多个参与共识的节点设备,共识装置运行于第一节点设备中,该第一节点设备为共识委员会中的任一个节点设备。具体的,该共识装置可以是运行于第一节点设备中的一个计算机程序(包括程序代码),例如该共识装置可以是第一节点设备中的一个应用软件;该共识装置可以用于执行图5-图7所示的方法中的相应步骤。如图8所示,该共识装置包括:
检查单元801,用于在区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数。
确定单元802,用于若缓存空间中存在处于锁定状态的区块,则将处于锁定状态的区块确定为待共识的目标区块。
处理单元803,用于对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
在区块链的区块高度H的第N-i轮共识过程中,为满足锁定条件的区块设置锁定标识,并将设有锁定标识的区块存储至缓存空间中;
其中i为正整数且i小于N;设有锁定标识的区块处于锁定状态。
在一种实施方式中,共识过程包括提案阶段、预投票阶段和预提交阶段;
锁定条件包括:在区块链的区块高度H的第N-i轮共识过程的提案阶段被创建且创建时间戳最大;在区块链的区块高度H的第N-i轮共识过程的预投票阶段所获得的预投票总数大于数量阈值;以及,在区块链的区块高度H的第N-i轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值。
在一种实施方式中,处理单元803具体用于:
获取共识委员会中的各节点设备在区块链的区块高度H的第N轮共识过程中对目标区块进行共识处理所生成的共识消息;
对共识消息进行分析得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
在一种实施方式中,共识过程包括预投票阶段,共识消息包含预投票信息;处理单元803具体用于:
根据预投票信息确定目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数;
若目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数小于或等于数量阈值,则生成用于指示共识失败的共识结果。
在一种实施方式中,共识过程还包括预提交阶段,共识消息还包含预提交信息;处理单元803还用于:
若目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数大于数量阈值,则根据预提交信息确定目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数;
若目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数大于提交阈值,则生成用于指示共识成功的共识结果;
若目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值,则生成用于指示共识失败的共识结果。
在一种实施方式中,处理单元803还用于:
若共识结果指示共识成功,则将目标区块添加至区块链,并从缓存空间中删除处于锁定状态的区块。
在一种实施方式中,共识过程包括提案阶段;第一节点设备是区块链的区块高度H的第N轮共识过程中的提案节点,该处理单元803还用于:
在区块链的区块高度H的第N轮共识过程的提案阶段,将目标区块广播至共识委员会中的其他节点设备。
在一种实施方式中,处理单元803还用于
若缓存空间中不存在处于锁定状态的区块,则在区块链的区块高度H的第N轮共识过程的提案阶段创建区块;
将创建的区块确定为待共识的目标区块并广播至共识委员会中的其他节点设备。
在一种实施方式中,共识过程包括提案阶段;第一节点设备是区块链的区块高度H的第N轮共识过程中的非提案节点,区块链的区块高度H的第N轮共识过程中的提案节点是第二节点设备,该第二节点设备是共识委员会中除第一节点设备之外的任一个节点设备;处理单元803还用于:
当在区块链的区块高度H的第N轮共识过程的提案阶段接收到第二节点设备广播的待共识的目标区块时,丢弃接收到的目标区块。
在一种实施方式中,处理单元803还用于:
若缓存空间中不存在处于锁定状态的区块,则在区块链的区块高度H的第N轮共识过程的提案阶段接收第二节点设备广播的待共识的目标区块。
根据本申请的一个实施例,图8所示的共识装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该共识装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图5-图7所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图8中所示的共识装置,以及来实现本申请实施例的共识方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例在共识过程中设置锁机制,锁机制要求共识委员会的节点设备将在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块锁定存储至该节点设备的缓存空间中,并在缓存空间中保持锁定状态,那么在区块链的区块高度H的第N轮共识过程中,该节点设备就只对处于锁定状态的区块进行共识处理;这样可以保证区块链在同一区块高度的数据一致性,保证了共识过程不受提案节点变化、待共识的目标区块的变化等因素的影响,保证共识准确性。
图9示出了本申请一个示例性实施例提供的一种区块链***的共识设备的结构示意图。区块链***包括区块链和共识委员会,共识委员会包括多个参与共识的节点设备,该共识设备是第一节点设备,第一节点设备是共识委员会中的任一个节点设备。请参见图9,该共识设备至少包括处理器901、输入设备902、输出设备903以及计算机存储介质904。其中,处理器901、输入设备902、输出设备903以及计算机存储介质904可通过总线或者其它方式连接。计算机存储介质904可以存储在共识设备的存储器中,计算机存储介质904用于存储计算机程序,计算机程序包括程序指令,处理器901用于执行计算机存储介质904存储的程序指令。处理器901(或称CPU(Central Processing Unit,中央处理器))是共识设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
本申请实施例还提供了一种计算机存储介质(Memory),计算机存储介质是共识设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括共识设备中的内置存储介质,当然也可以包括共识设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了共识设备的操作***。并且,在该存储空间中还存放了适于被处理器901加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,该计算机存储介质中存储有一条或多条指令;由处理器901加载并执行计算机存储介质中存放的一条或多条指令,以实现上述区块链***的共识状态的共识方法实施例中的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器901加载并执行如下步骤:
在区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数;
若缓存空间中存在处于锁定状态的区块,则将处于锁定状态的区块确定为待共识的目标区块;
对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
在一种实施方式中,计算机存储介质中的一条或多条指令由处理器901加载并且还执行如下步骤:
在区块链的区块高度H的第N-i轮共识过程中,为满足锁定条件的区块设置锁定标识,并将设有锁定标识的区块存储至缓存空间中;
其中i为正整数且i小于N;设有锁定标识的区块处于锁定状态。
在一种实施方式中,共识过程包括提案阶段、预投票阶段和预提交阶段;
锁定条件包括:在区块链的区块高度H的第N-i轮共识过程的提案阶段被创建且创建时间戳最大;在区块链的区块高度H的第N-i轮共识过程的预投票阶段所获得的预投票总数大于数量阈值;以及,在区块链的区块高度H的第N-i轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值。
在一种实施方式中,计算机存储介质中的一条或多条指令由处理器901加载并执行对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果的步骤时,具体如下步骤:
获取共识委员会中的各节点设备在区块链的区块高度H的第N轮共识过程中对目标区块进行共识处理所生成的共识消息;
对共识消息进行分析得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果。
在一种实施方式中,共识过程包括预投票阶段,共识消息包含预投票信息;计算机存储介质中的一条或多条指令由处理器901加载并执行对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果的步骤时,具体如下步骤:
根据预投票信息确定目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数;
若目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数小于或等于数量阈值,则生成用于指示共识失败的共识结果。
在一种实施方式中,共识过程还包括预提交阶段,共识消息还包含预提交信息;计算机存储介质中的一条或多条指令由处理器901加载并执行对目标区块进行共识处理,得到目标区块在区块链的区块高度H的第N轮共识过程中的共识结果的步骤时,还执行如下步骤:
若目标区块在区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数大于数量阈值,则根据预提交信息确定目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数;
若目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数大于提交阈值,则生成用于指示共识成功的共识结果;
若目标区块在区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值,则生成用于指示共识失败的共识结果。
在一种实施方式中,计算机存储介质中的一条或多条指令由处理器901加载并且还执行如下步骤:
若共识结果指示共识成功,则将目标区块添加至区块链,并从缓存空间中删除处于锁定状态的区块。
在一种实施方式中,共识过程包括提案阶段;第一节点设备是区块链的区块高度H的第N轮共识过程中的提案节点,计算机存储介质中的一条或多条指令由处理器901加载并且还执行如下步骤:
在区块链的区块高度H的第N轮共识过程的提案阶段,将目标区块广播至共识委员会中的其他节点设备。
在一种实施方式中,计算机存储介质中的一条或多条指令由处理器901加载并且还执行如下步骤:
若缓存空间中不存在处于锁定状态的区块,则在区块链的区块高度H的第N轮共识过程的提案阶段创建区块;
将创建的区块确定为待共识的目标区块并广播至共识委员会中的其他节点设备。
在一种实施方式中,共识过程包括提案阶段;第一节点设备是区块链的区块高度H的第N轮共识过程中的非提案节点,区块链的区块高度H的第N轮共识过程中的提案节点是第二节点设备,该第二节点设备是共识委员会中除第一节点设备之外的任一个节点设备;计算机存储介质中的一条或多条指令由处理器901加载并且还执行如下步骤:
当在区块链的区块高度H的第N轮共识过程的提案阶段接收到第二节点设备广播的待共识的目标区块时,丢弃接收到的目标区块。
在一种实施方式中,计算机存储介质中的一条或多条指令由处理器901加载并且还执行如下步骤:
若缓存空间中不存在处于锁定状态的区块,则在区块链的区块高度H的第N轮共识过程的提案阶段接收第二节点设备广播的待共识的目标区块。
本申请实施例在共识过程中设置锁机制,锁机制要求共识委员会的节点设备将在区块链的区块高度H的第N-i轮共识过程中满足锁定条件的区块锁定存储至该节点设备的缓存空间中,并在缓存空间中保持锁定状态,那么在区块链的区块高度H的第N轮共识过程中,该节点设备就只对处于锁定状态的区块进行共识处理;这样可以保证区块链在同一区块高度的数据一致性,保证了共识过程不受提案节点变化、待共识的目标区块的变化等因素的影响,保证共识准确性。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种区块链***的共识方法,其特征在于,所述区块链***包括区块链和共识委员会,所述共识委员会包括多个参与共识的节点设备,所述方法由第一节点设备执行,所述第一节点设备为所述共识委员会中的任一个节点设备,所述方法包括:
在所述区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数;
若所述缓存空间中存在处于锁定状态的区块,则将所述处于锁定状态的区块确定为待共识的目标区块;
对所述目标区块进行共识处理,得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述区块链的区块高度H的第N-i轮共识过程中,为满足锁定条件的区块设置锁定标识,并将所述设有锁定标识的区块存储至所述缓存空间中;
其中i为正整数且i小于N;所述设有锁定标识的区块处于锁定状态。
3.如权利要求2所述的方法,其特征在于,所述共识过程包括提案阶段、预投票阶段和预提交阶段;
所述锁定条件包括:在所述区块链的区块高度H的第N-i轮共识过程的提案阶段被创建且创建时间戳最大;在所述区块链的区块高度H的第N-i轮共识过程的预投票阶段所获得的预投票总数大于数量阈值;以及,在所述区块链的区块高度H的第N-i轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值。
4.如权利要求1所述的方法,其特征在于,所述对所述目标区块进行共识处理,得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果,包括:
获取所述共识委员会中的各节点设备在所述区块链的区块高度H的第N轮共识过程中对所述目标区块进行共识处理所生成的共识消息;
对所述共识消息进行分析得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果。
5.如权利要求4所述的方法,其特征在于,所述共识过程包括预投票阶段,所述共识消息包含预投票信息;
所述对所述共识消息进行分析得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果,包括:
根据所述预投票信息确定所述目标区块在所述区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数;
若所述目标区块在所述区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数小于或等于数量阈值,则生成用于指示共识失败的共识结果。
6.如权利要求5所述的方法,其特征在于,所述共识过程还包括预提交阶段,所述共识消息还包含预提交信息;
所述对所述共识消息进行分析得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果,还包括:
若所述目标区块在所述区块链的区块高度H的第N轮共识过程的预投票阶段所获得的预投票总数大于数量阈值,则根据所述预提交信息确定所述目标区块在所述区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数;
若所述目标区块在所述区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数大于提交阈值,则生成用于指示共识成功的共识结果;
若所述目标区块在所述区块链的区块高度H的第N轮共识过程的预提交阶段所获得的预提交总数小于或等于提交阈值,则生成用于指示共识失败的共识结果。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
若所述共识结果指示共识成功,则将所述目标区块添加至所述区块链,并从所述缓存空间中删除所述处于锁定状态的区块。
8.如权利要求1所述的方法,其特征在于,所述共识过程包括提案阶段;所述第一节点设备是所述区块链的区块高度H的第N轮共识过程中的提案节点,所述方法还包括:
在所述区块链的区块高度H的第N轮共识过程的提案阶段,将所述目标区块广播至所述共识委员会中的其他节点设备。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
若所述缓存空间中不存在处于锁定状态的区块,则在所述区块链的区块高度H的第N轮共识过程的提案阶段创建区块;
将所述创建的区块确定为待共识的目标区块并广播至所述共识委员会中的其他节点设备。
10.如权利要求1所述的方法,其特征在于,所述共识过程包括提案阶段;所述第一节点设备是所述区块链的区块高度H的第N轮共识过程中的非提案节点,所述区块链的区块高度H的第N轮共识过程中的提案节点是第二节点设备,所述第二节点设备是所述共识委员会中除第一节点设备之外的任一个节点设备;所述方法还包括:
当在所述区块链的区块高度H的第N轮共识过程的提案阶段接收到所述第二节点设备广播的待共识的目标区块时,丢弃所述接收到的目标区块。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
若所述缓存空间中不存在处于锁定状态的区块,则在所述区块链的区块高度H的第N轮共识过程的提案阶段接收所述第二节点设备广播的待共识的目标区块。
12.一种区块链***的共识装置,其特征在于,所述区块链***包括区块链和共识委员会,所述共识委员会包括多个参与共识的节点设备,所述共识装置运行于第一节点设备中,所述第一节点设备为所述共识委员会中的任一个节点设备,所述共识装置包括:
检查单元,用于在所述区块链的区块高度H的第N轮共识过程中,检查缓存空间内是否存在处于锁定状态的区块,其中H、N均为正整数;
确定单元,用于若所述缓存空间中存在处于锁定状态的区块,则将所述处于锁定状态的区块确定为待共识的目标区块;
处理单元,用于对所述目标区块进行共识处理,得到所述目标区块在所述区块链的区块高度H的第N轮共识过程中的共识结果。
13.一种区块链***的共识设备,其特征在于,所述区块链***包括区块链和共识委员会,所述共识委员会包括多个参与共识的节点设备,所述共识设备是第一节点设备,所述第一节点设备为所述共识委员会中的任一个节点设备,所述共识设备包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-11任一项所述的区块链***的共识方法。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-11任一项所述的区块链***的共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911348339.XA CN111061769B (zh) | 2019-12-24 | 2019-12-24 | 一种区块链***的共识方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911348339.XA CN111061769B (zh) | 2019-12-24 | 2019-12-24 | 一种区块链***的共识方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111061769A true CN111061769A (zh) | 2020-04-24 |
CN111061769B CN111061769B (zh) | 2021-09-10 |
Family
ID=70303152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911348339.XA Active CN111061769B (zh) | 2019-12-24 | 2019-12-24 | 一种区块链***的共识方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061769B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111368008A (zh) * | 2020-05-27 | 2020-07-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN111382456A (zh) * | 2020-06-01 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 提案消息处理方法、装置、设备以及存储介质 |
CN111654395A (zh) * | 2020-06-01 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 投票信息处理方法、装置、设备以及存储介质 |
CN111683118A (zh) * | 2020-05-16 | 2020-09-18 | 中信银行股份有限公司 | 基于区块链的共识方法、装置、主节点设备及从节点设备 |
CN111931220A (zh) * | 2020-09-24 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 区块链网络的共识处理方法、装置、介质及电子设备 |
CN112182113A (zh) * | 2020-10-23 | 2021-01-05 | 网易(杭州)网络有限公司 | 区块链共识方法、***、电子设备及存储介质 |
CN112202933A (zh) * | 2020-12-08 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 区块链网络的信息处理方法、装置及节点设备 |
CN112671761A (zh) * | 2020-12-22 | 2021-04-16 | 网易(杭州)网络有限公司 | 区块链的节点处理方法、装置、节点设备及存储介质 |
CN113094754A (zh) * | 2021-05-08 | 2021-07-09 | 重庆银行股份有限公司 | 大数据平台数据修改***及修改、响应、缓存、校验方法 |
CN113094753A (zh) * | 2021-05-08 | 2021-07-09 | 重庆银行股份有限公司 | 基于区块链的大数据平台hive数据修改方法以及*** |
CN114466034A (zh) * | 2022-03-21 | 2022-05-10 | 北京航空航天大学 | 一种基于匿名主节点的区块链共识方法 |
CN117478301A (zh) * | 2023-12-27 | 2024-01-30 | 湖南天河国云科技有限公司 | 基于有向无环图的区块链共识达成方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106060036A (zh) * | 2016-05-26 | 2016-10-26 | 布比(北京)网络技术有限公司 | 去中心化共识方法及装置 |
CN108648078A (zh) * | 2018-05-02 | 2018-10-12 | 杭州秘猿科技有限公司 | 一种交易预处理方法、装置及电子设备 |
CN109964446A (zh) * | 2018-06-08 | 2019-07-02 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
CN110012100A (zh) * | 2019-04-09 | 2019-07-12 | 杭州秘猿科技有限公司 | 一种带宽优化的区块链共识方法、装置及电子设备 |
-
2019
- 2019-12-24 CN CN201911348339.XA patent/CN111061769B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106060036A (zh) * | 2016-05-26 | 2016-10-26 | 布比(北京)网络技术有限公司 | 去中心化共识方法及装置 |
CN108648078A (zh) * | 2018-05-02 | 2018-10-12 | 杭州秘猿科技有限公司 | 一种交易预处理方法、装置及电子设备 |
CN109964446A (zh) * | 2018-06-08 | 2019-07-02 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
CN110012100A (zh) * | 2019-04-09 | 2019-07-12 | 杭州秘猿科技有限公司 | 一种带宽优化的区块链共识方法、装置及电子设备 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111683118A (zh) * | 2020-05-16 | 2020-09-18 | 中信银行股份有限公司 | 基于区块链的共识方法、装置、主节点设备及从节点设备 |
CN111368008A (zh) * | 2020-05-27 | 2020-07-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN111368008B (zh) * | 2020-05-27 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
EP4030314A4 (en) * | 2020-05-27 | 2022-12-28 | Tencent Technology (Shenzhen) Company Limited | BLOCKCHAIN BASED DATA PROCESSING METHOD, APPARATUS AND DEVICE AND READABLE STORAGE MEDIA |
US11914579B2 (en) | 2020-05-27 | 2024-02-27 | Tencent Technology (Shenzhen) Company Limited | Blockchain-based data processing method and apparatus, device, and readable storage medium |
CN111382456A (zh) * | 2020-06-01 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 提案消息处理方法、装置、设备以及存储介质 |
CN111654395A (zh) * | 2020-06-01 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 投票信息处理方法、装置、设备以及存储介质 |
CN111382456B (zh) * | 2020-06-01 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 提案消息处理方法、装置、设备以及存储介质 |
WO2021244208A1 (zh) * | 2020-06-01 | 2021-12-09 | 腾讯科技(深圳)有限公司 | 区块链的提案消息处理方法、装置、设备以及存储介质 |
US11971877B2 (en) | 2020-06-01 | 2024-04-30 | Tencent Technology (Shenzhen) Company Limited | Method, apparatus, device, and storage medium for proposal message processing for blockchain |
CN111931220A (zh) * | 2020-09-24 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 区块链网络的共识处理方法、装置、介质及电子设备 |
CN112182113A (zh) * | 2020-10-23 | 2021-01-05 | 网易(杭州)网络有限公司 | 区块链共识方法、***、电子设备及存储介质 |
CN112202933A (zh) * | 2020-12-08 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 区块链网络的信息处理方法、装置及节点设备 |
EP4198861A4 (en) * | 2020-12-08 | 2024-02-14 | Tencent Technology (Shenzhen) Company Limited | INFORMATION PROCESSING METHOD AND DEVICE FOR A BLOCKCHAIN NETWORK AND DEVICE AND STORAGE MEDIUM |
CN112671761A (zh) * | 2020-12-22 | 2021-04-16 | 网易(杭州)网络有限公司 | 区块链的节点处理方法、装置、节点设备及存储介质 |
CN113094754A (zh) * | 2021-05-08 | 2021-07-09 | 重庆银行股份有限公司 | 大数据平台数据修改***及修改、响应、缓存、校验方法 |
CN113094753A (zh) * | 2021-05-08 | 2021-07-09 | 重庆银行股份有限公司 | 基于区块链的大数据平台hive数据修改方法以及*** |
CN114466034A (zh) * | 2022-03-21 | 2022-05-10 | 北京航空航天大学 | 一种基于匿名主节点的区块链共识方法 |
CN117478301A (zh) * | 2023-12-27 | 2024-01-30 | 湖南天河国云科技有限公司 | 基于有向无环图的区块链共识达成方法及装置 |
CN117478301B (zh) * | 2023-12-27 | 2024-04-09 | 湖南天河国云科技有限公司 | 基于有向无环图的区块链共识达成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111061769B (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061769B (zh) | 一种区块链***的共识方法及相关设备 | |
US20210295321A1 (en) | Methods for decentralized digital asset transfer and smart contract state transition | |
CN107193490B (zh) | 一种基于区块链的分布式数据存储***及方法 | |
CN111630507A (zh) | 账户模型下的分布式区块链数据存储 | |
CN111163148B (zh) | 一种区块链***的共识状态的同步方法及相关设备 | |
CN111400112B (zh) | 分布式集群的存储***的写入方法、装置及可读存储介质 | |
CN111630830A (zh) | 账户模型下的分布式区块链数据存储 | |
CN111095218B (zh) | 基于纠错编码存储共享的区块链数据的方法、***及装置 | |
CN113826354A (zh) | 基于纠错码的区块链数据存储 | |
CN110941676B (zh) | 一种配置方法、装置、设备及介质 | |
KR20210045353A (ko) | 인코딩된 블록체인 데이터의 인덱싱 및 복구 | |
CN111095210A (zh) | 基于纠错编码存储共享的区块链数据 | |
WO2021190179A1 (zh) | 一种同步处理方法和相关装置 | |
CN110706113A (zh) | 一种跨区块链的数据处理方法、装置、设备及介质 | |
US20200394162A1 (en) | Operation management method for distributed ledger system, operation management system for distributed ledger system, and operation management program for distributed ledger system | |
CN111226206A (zh) | 拍摄区块链数据的快照 | |
CN111444204B (zh) | 一种同步处理方法、装置、设备及介质 | |
CN111033491A (zh) | 基于纠错编码存储共享的区块链数据 | |
CN110597922A (zh) | 数据处理方法、装置、终端及存储介质 | |
CN111386519B (zh) | 基于纠错码的动态区块链数据存储 | |
CN111316256A (zh) | 拍摄区块链数据的快照 | |
CN115988001A (zh) | 区块链***的共识投票处理方法、装置、设备以及介质 | |
CN111444206B (zh) | 一种同步处理方法、装置、设备及介质 | |
CN113157450A (zh) | 在区块链***中执行区块的方法及装置 | |
CN111177262A (zh) | 一种区块链共识方法、相关装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022315 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |