CN112685796A - 一种基于区块链的区块共识方法以及相关设备 - Google Patents
一种基于区块链的区块共识方法以及相关设备 Download PDFInfo
- Publication number
- CN112685796A CN112685796A CN202110273266.3A CN202110273266A CN112685796A CN 112685796 A CN112685796 A CN 112685796A CN 202110273266 A CN202110273266 A CN 202110273266A CN 112685796 A CN112685796 A CN 112685796A
- Authority
- CN
- China
- Prior art keywords
- block
- result
- consensus
- proposed
- proposed block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q2220/00—Business processing using cryptography
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的区块共识方法以及相关设备,该区块共识方法包括:获取提议区块,对提议区块进行合法性验证;若提议区块的合法性验证结果为合法结果,则通过智能合约执行提议区块中的交易数据,得到目标合约执行结果,将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中;在通过智能合约执行交易数据的过程中,并行对提议区块进行两轮共识投票处理,得到第一共识结果;若第一共识结果为共识通过结果,则在临时列表中获取提议区块的区块哈希值所映射的目标合约执行结果,将提议区块和目标合约执行结果关联存储至区块链中。采用本发明提供的方法,可以减少区块上链的耗时,提高区块链的吞吐量。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的区块共识方法以及相关设备。
背景技术
随着网络技术的快速发展以及政府和企业对数据安全的重视,区块链得到了极大的重视和应用。当区块链中的节点将提议区块写入区块链之前,需要先通过共识网络中的共识节点分别对该提议区块进行验证,达成对该提议区块的共识。
现有技术中,通常采用tendermint(一种拜占庭容错类型的协议)共识协议来进行区块共识。在tendermint共识协议中,一个提议区块在进入提交阶段之前,需要通过共识网络中进行两轮投票,每轮投票都需要得到共识网络中三分之二以上的共识节点的认可,完成区块共识,进入提交阶段,然后才能执行合约,得到合约执行结果。其中,每轮投票时每个共识节点都需要在该共识网络中广播投票信息,网络延迟使得共识阶段需要消耗一段时间,而且合约的执行也会消耗不少时间。因此,提议区块需要完成区块共识再执行合约,整个过程花费时间较长,导致区块链的吞吐量低。
发明内容
本申请实施例提供一种基于区块链的区块共识方法以及相关设备,可以减少区块上链的耗时,提高区块链的吞吐量。
本申请实施例一方面提供了一种基于区块链的区块共识方法,包括:
获取区块高度为M且在第N轮生成的提议区块,对提议区块进行合法性验证;M和N均为正整数;
若提议区块的合法性验证结果为合法结果,则通过智能合约执行提议区块中的交易数据,得到目标合约执行结果,将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中;临时列表包括区块高度为M的N个合约执行结果,N个合约执行结果包括目标合约执行结果;
在通过智能合约执行交易数据的过程中,并行对提议区块进行两轮共识投票处理,得到第一共识结果;
若第一共识结果为共识通过结果,则在临时列表中获取提议区块的区块哈希值所映射的目标合约执行结果,将提议区块和目标合约执行结果关联存储至区块链中。
本申请实施例一方面提供了一种基于区块链的区块共识装置,包括:
区块验证模块,用于获取区块高度为M且在第N轮生成的提议区块,对提议区块进行合法性验证;M和N均为正整数;
合约执行模块,用于若提议区块的合法性验证结果为合法结果,则通过智能合约执行提议区块中的交易数据,得到目标合约执行结果,将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中;临时列表包括区块高度为M的N个合约执行结果,N个合约执行结果包括目标合约执行结果;
第一共识模块,用于在通过智能合约执行交易数据的过程中,并行对提议区块进行两轮共识投票处理,得到第一共识结果;
第一存储模块,用于若第一共识结果为共识通过结果,则在临时列表中获取提议区块的区块哈希值所映射的目标合约执行结果,将提议区块和目标合约执行结果关联存储至区块链中。
其中,区块验证模块,包括:
哈希运算单元,用于获取提议区块中的交易数据,对交易数据进行哈希运算,得到待验证哈希值;
哈希运算单元,还用于根据提议区块中的默克尔树路径对待验证哈希值进行哈希运算,得到待验证树根哈希值;
根哈希获取单元,用于从提议区块的区块头中获取默克尔树根哈希值;
第一验证单元,用于若待验证树根哈希值和默克尔树根哈希值相同,则确定提议区块的合法性验证结果为合法结果;
第一验证单元,还用于若待验证树根哈希值和默克尔树根哈希值不相同,则确定提议区块的合法性验证结果为非法结果。
其中,区块验证模块,包括:
交易获取单元,用于获取提议区块中的交易数据;
交易验证单元,用于调用交易验证函数对交易数据进行验证,得到交易验证结果;
第二验证单元,用于若交易验证结果为有效结果,则确定提议区块的合法性验证结果为合法结果;
第二验证单元,还用于若交易验证结果为无效结果,则确定提议区块的合法性验证结果为非法结果。
其中,区块验证模块,包括:
第一哈希获取单元,用于在区块链中获取提议区块的父区块的区块哈希值,作为目标父区块哈希值;
第二哈希获取单元,还用于从提议区块的区块头中获取父区块哈希值,作为待验证父区块哈希值;
第三验证单元,用于若待验证父区块哈希值和目标父区块哈希值相同,则确定提议区块的合法性验证结果为合法结果;
第三验证单元,还用于若待验证父区块哈希值和目标父区块哈希值不相同,则确定提议区块的合法性验证结果为非法结果。
其中,区块验证模块,包括:
签名获取单元,用于获取提议区块相关联的签名数据;
签名验证单元,用于获取提议节点的公钥,通过公钥验证签名数据,得到签名验证结果;
第四验证单元,用于若签名验证结果为验签成功,则确定提议区块的合法性验证结果为合法结果;属于验签成功的签名数据,是由提议节点通过所拥有的私钥对提议区块进行签名得到的;属于验签成功的签名数据相关联的提议区块的是由提议节点生成的;
第四验证单元,还用于若签名验证结果为验签失败,则确定提议区块的合法性验证结果为非法结果。
其中,合约执行模块,包括:
第一获取单元,用于获取提议区块中的交易数据,调用用于执行交易数据的智能合约中的交易执行函数;
第二获取单元,用于根据交易执行函数获取针对交易数据的读取数据;
结果获取单元,用于根据读取数据以及交易数据执行交易执行函数,得到交易数据的目标合约执行结果;
缓存单元,用于将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中。
其中,第一共识模块,包括:
预投票单元,用于在第一轮共识投票中,根据提议区块的合法性验证结果对提议区块进行预投票处理,得到预投票结果;
预提交单元,用于在第二轮共识投票中,根据预投票结果对提议区块进行预提交处理,得到第一共识结果。
其中,预投票单元,包括:
第一确定子单元,用于在第一轮共识投票中,根据合法结果将第一预投票结果确定为针对提议区块的第一赞成结果;
第一广播子单元,用于将第一预投票结果广播至至少两个目标共识节点;
第一接收子单元,用于接收至少两个目标共识节点分别发送的第二预投票结果;至少两个第二预投票结果中存在针对提议区块的第一赞成结果,或者至少两个第二预投票结果中存在针对提议区块的第一反对结果;
第一统计子单元,用于根据第一预投票结果和所述至少两个第二预投票结果,确定针对提议区块的第一赞成票数量和第一反对票数量;
预投票处理子单元,用于若第一赞成票数量超过第一预投票阈值,确定预投票结果为预投票成功结果;
预投票处理子单元,还用于若第一反对票数量超过第二预投票阈值,确定预投票结果为预投票失败结果。
其中,预提交单元,包括:
第二确定子单元,用于若预投票结果为预投票成功结果,则将第一预提交结果确定为针对提议区块的第二赞成结果;
第二确定子单元,还用于若预投票结果为预投票失败结果,则将第一预提交结果确定为针对提议区块的第二反对结果;
第二广播子单元,用于将第一预提交结果广播至至少两个目标共识节点;
第二接收子单元,用于接收至少两个目标共识节点分别发送的第二预提交结果;至少两个第二预提交结果中存在针对提议区块的第二赞成结果,或者至少两个第二预提交结果中存在针对提议区块的第二反对结果;
第二统计子单元,用于根据第一预提交结果和所述至少两个第二预提交结果,确定针对提议区块的第二赞成票数量和第二反对票数量;
预提交处理子单元,用于若第二赞成票数量超过第一预提交阈值,确定第一共识结果为共识通过结果;
预提交处理子单元,还用于若第二反对票数量超过第二预提交阈值,确定第一共识结果为共识不通过结果。
其中,区块共识装置,还包括:
第二共识模块,用于若提议区块的合法性验证结果为非法结果,则对提议区块进行两轮共识投票处理,得到第二共识结果;
第二存储模块,用于若第二共识结果为共识通过结果,则从已完成共识节点中同步已存储至区块链中区块高度为M的提议区块,以及提议区块对应的目标合约执行结果;已完成共识节点为成功将提议区块以及目标合约执行结果存储至区块链中的目标共识节点。
其中,区块验证模块,包括:
成功获取单元,用于若在验证时间阈值内,获取到区块高度为M且在第N轮生成的提议区块,则对提议区块进行合法性验证;
则区块共识装置,还包括:
失败获取模块,用于若在验证时间阈值内,未获取到区块高度为M且在第N轮生成的提议区块,则构建临时空区块;
第三共识模块,用于对临时空区块进行两轮共识投票处理,得到第三共识结果;
第三存储模块,用于若第三共识结果为共识通过结果,则从已完成共识节点中同步已存储至区块链中区块高度为M的提议区块,以及提议区块对应的目标合约执行结果;已完成共识节点为成功将提议区块以及目标合约执行结果存储至区块链中的目标共识节点。
其中,区块共识装置,还包括:
第一删除模块,用于将临时列表中区块高度为M的N个合约执行结果删除;
第二删除模块,用于获取临时列表中所有合约执行结果的总数量,若总数量大于或等于存储数量阈值,则删除临时列表中的所有合约执行结果;所有合约执行结果包括一个或多个区块高度分别对应的合约执行结果。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
在本申请实施中,获取到区块高度为M且在第N轮生成的提议区块后,会对该提议区块进行合法性验证;如果该提议区块的合法性验证结果为合法结果,则通过智能合约执行提议区块中的交易数据,得到目标合约执行结果,将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中;在通过智能合约执行交易数据的过程中,并行对提议区块进行两轮共识投票处理,得到第一共识结果;若第一共识结果为共识通过结果,则在临时列表中获取提议区块的区块哈希值所映射的目标合约执行结果,将提议区块和目标合约执行结果关联存储至区块链中。其中,M和N均为正整数。其中,临时列表包括区块高度为M的N个合约执行结果,N个合约执行结果包括目标合约执行结果。采用本申请实施例提供的方法,将合约的执行和区块的两轮共识投票并行处理,可以缩短提议区块通过共识后,与目标合约执行结果关联存储至区块链的时间,即提高了区块的上链效率,从而可以有效地提高区块链的吞吐量。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链节点系统的结构示意图;
图2a-图2b是本申请实施例提供的一种区块共识的场景示意图;
图3是本申请实施例提供的一种基于区块链的区块共识方法的流程示意图;
图4是本申请实施例提供的一种区块合法性验证的场景示意图;
图5是本申请实施例提供的一种合约执行的场景示意图;
图6a-图6b是本申请实施例提供的一种共识投票的场景示意图;
图7是本申请实施例提供的一种区块共识的过程示意图;
图8是本申请实施例提供的一种合约执行结果存储的示意图;
图9是本申请实施例提供的一种区块共识装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
具体的,请参见图1,图1是本申请实施例提供的一种区块链节点系统的结构示意图。区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络中包括共识节点,共识节点负责区块链全网的共识。
可以理解的是,区块(Block)是在区块链网络上承载交易数据(即交易业务)的数据包,是一种被标记上时间戳和之前一个区块的哈希值的数据结构,区块经过网络的共识机制验证并确定区块中的交易。
可以理解的是,区块链系统中可以包括有智能合约,该智能合约可以是指一种区块链各节点(包括共识节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。应当理解,区块链中可以包括一个或多个智能合约,这些智能合约可以通过标识号(Identitydocument,ID)或名称来进行区分,而交易业务请求中可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。
如图1所示的区块链节点系统可以对应于区块链网络,该区块链网络可以包括但不限于联盟链所对应的区块链网络。区块链节点系统是指用于进行区块链节点与区块链节点之间数据共享的系统,该区块链节点系统中可以包括多个节点,多个节点具体可以包括节点10a、节点10b、节点10c、节点10d、…、节点10n,这里的节点10a、节点10b、节点10c、节点10d…、节点10n可以统称为区块链节点。其中,每个节点在进行正常工作时可以接收到外界发送的数据,并基于接收到的数据进行区块上链处理,也可以向外界发送数据。为了保证各个节点之间的数据互通,每个节点之间可以存在数据连接,例如节点10a和节点10b之间存在数据连接,节点10a和节点10c之间存在数据连接,节点10b和节点10c之间存在数据连接。
可以理解的是,节点之间可以通过上述数据连接进行数据或者区块传输。区块链网络可以基于节点标识实现节点之间的数据连接,对于区块链网络中的每个节点,均具有与其对应的节点标识,而且上述每个节点均可以存储与自身有相连关系的其他节点的节点标识,以便后续根据其他节点的节点标识,将获取到的数据或生成的区块广播至其他节点,例如节点10a中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识:
表1
其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络中节点的信息,表1中仅以IP地址为例进行说明。例如,节点10a可以通过节点标识117.116.189.145向节点10b发送信息(例如,区块),且节点10b可以通过节点标识117.114.151.174确定该信息是由节点10a所发送的。
可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。
可以理解的是,本申请实施例所提供的区块共识方法可以由计算机设备执行,计算机设备包括但不限于上述共识节点(可以为终端或服务器)。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
如图1所示,在区块链中,在将一个区块(即提议区块)进行上链之前,该区块必须经过区块链网络中的共识节点进行共识,在共识通过后才能将该区块添加到区块链上。可以理解的是,当区块链被用于政府或者商业机构的一些场景中时,并非区块链中的所有参与节点(即上述区块链节点系统中的区块链节点)都有足够的资源和必要性成为区块链的共识节点。例如,在图1所示的区块链节点系统中,可以将节点10a、节点10b、节点10c和节点10d作为该区块链节点系统中的共识节点。区块链节点系统中的共识节点参与共识,也就是对区块(包含一批交易)进行共识,包括生成提议区块,对提议区块进行投票;而非共识节点不参与共识,但会帮助传播区块和投票消息,以及相互同步状态等。
在一轮共识中,共识节点中的某一节点可以作为提议节点,生成提议区块,然后根据区块链节点系统中其他共识节点的节点标识,将提议区块分别发送给区块链节点系统中的其他共识节点。每个共识节点在接收到提议区块后,会验证该提议区块的合法性,如果该提议区块合法,共识节点会根据智能合约执行提议区块中的交易数据,得到目标合约执行结果,然后缓存该目标合约执行结果;在通过智能合约执行交易数据的过程中,共识节点会对该提议区块进行两轮共识投票处理,如果两轮共识投票处理中都有三分之二以上的共识节点对该提议区块投了赞成票,则认为共识通过,然后共识节点会将该提议区块和目标合约执行结果一起添加至其存储的区块链中。需要说明的是,提议节点也属于共识节点,也需要对提议区块进行两轮共识投票处理。
下述以提议节点为节点10a,节点10a生成提议区块,然后节点10a将该提议区块广播至其余共识节点,也就是节点10b、节点10c和节点10d,然后一起对该提议区块进行共识为例进行说明。
为便于理解,进一步地,请参见图2a-图2b,图2a-图2b是本申请实施例提供的一种区块共识的场景示意图。
如图2a所示,节点10a作为提议节点,会监听整个区块链网络的交易,然后收集所有的交易,根据收集到的交易对应的交易数据,组装生成一个提议区块11。提议区块11存储至区块链之前,需要先通过共识网络中的共识节点进行两轮共识投票处理,共识通过才能存储至区块链。因此,节点10a会先将该提议区块11广播至共识网络中的其他共识节点,也就是节点10b、节点10c和节点10d。共识网络中的所有共识节点,都会对该提议区块11进行两轮共识投票处理。其中,两轮共识投票处理的过程可以为:在第一轮共识投票中,每个共识节点根据提议区块11的合法性对提议区块11进行预投票处理,得到针对提议区块11的预投票结果,并将自己的预投票结果广播至共识网络中的其余共识节点,同时从其余共识节点中接收针对该提议区块11的预投票结果;在第二轮共识投票中,每个共识节点根据所有获取到的预投票结果对提议区块11进行预提交处理(即基于预投票结果再次进行共识投票),得到针对提议区块11的预提交结果,并将自己的预提交结果广播至共识网络中的其余共识节点,同时从其余共识节点中接收针对该提议区块11的预提交结果。其中,每个预投票结果可以包含第一赞成结果或第一反对结果,第一赞成结果表示该共识节点确定该提议区块11合法;第一反对结果表示该共识节点确定该提议区块11非法。其中,每个预提交结果可以包含第二赞成结果或第二反对结果,第二赞成结果表示共识节点获取到的预投票结果中,有三分之二以上的共识节点投票第一赞成结果,第二反对结果表示共识节点获取到的预投票结果中,有三分之一以上的共识节点投票第一反对结果。共识节点根据获取到的预提交结果,如果确定第二赞成结果的数量达到共识网络中共识节点数量的三分之二,则确定共识通过,否则,确定共识失败。
如图2b所示,以节点10b接收到提议区块11为例进行说明。节点10b在接收到提议区块11以后,会对该提议区块11进行合法性验证,得到合法性验证结果。其中,合法性验证是为了验证该提议区块11是否合法,比如是否由本轮的提议节点10a生成的,提议区块11中的数据结构、数值等是否合理等等。节点10b在确定提议区块11的合法性验证结果为合法结果后,会读取提议区块11中的交易数据,然后通过智能合约执行提议区块11中的交易数据,得到目标合约执行结果12,目标合约执行结果12只有在共识网络达成对提议区块11的共识以后,才能同提议区块11一起写入区块链14中,因此节点10b会先将目标合约执行结果12存入临时列表13中。临时列表13中还可以存有其他提议区块对应的合约执行结果,因此,在将目标合约执行结果12写入临时列表时,还会将该目标合约执行结果12同提议区块11的区块哈希值相关联,在提议区块11完成共识以后,可以通过该提议区块11的区块哈希值来获取目标合约执行结果12,然后将提议区块11和目标合约执行结果12共同存储至区块链14中。需要说明的是,对提议区块11进行共识投票和通过智能合约执行该提议区块11中的交易数据,两个过程是同时进行的。共识网络中的每个共识节点在接收到提议区块11后,都会执行与节点10b相同的操作,即可以同步进行合约执行和区块共识的操作。其中,合约执行的具体过程和区块共识的区块过程,可以参见下述图3所对应的实施例的描述。
进一步地,请参见图3,图3是本申请实施例提供的一种基于区块链的区块共识方法的流程示意图。其中,该方法可以由共识节点(例如上述图2a所对应的节点10a、节点10b、节点10c或者节点10d)执行,下述以该方法由共识节点执行为例进行说明。如图3所示,该基于区块链的区块共识方法至少可以包括以下步骤S101-步骤S104:
步骤S101,获取区块高度为M且在第N轮生成的提议区块,对所述提议区块进行合法性验证;M和N均为正整数。
具体的,提议区块也可以称之为备选区块或待上链区块,是提议节点在一段时间内监听并收集全网的所有交易以后,组装生成包含每个交易对应的交易数据的区块。其中,提议节点可用由共识网络中的某一共识节点担任,负责提出备选区块并在网络中广播。提议区块不能直接存储至区块链中,需要先经过共识网络的共识验证,共识通过以后才能上链,然后连接到上一个存储进区块链中的区块。因此,简单来说,区块链是由一个个提议区块在共识通过后链接起来组成的一个链条。
具体的,区块高度是区块的标示符,用来丈量区块链中某一个区块到第一个区块之间的距离,通过区块高度可以准确地了解到某一区块在链上的位置,相当于给区块定位了一个坐标。假设区块链中有五个区块,则第一个区块的区块高度为0,第二个区块的区块高度为1……以此类推,第五个区块的区块高度为4。此时,提议区块作为准备添加至区块链中的新区块,对应的区块高度就为5。上述提到,提议区块不能直接存储至区块链中,只有在通过区块共识才可以添加至区块链。其中,区块共识可以是投票型共识,即共识网络中的提议节点生成提议区块后,共识节点针对该提议区块进行两轮共识投票的过程。比如说,区块共识采用的是Tendermint共识算法,那么在两轮共识投票中均有三分之二及以上的共识节点针对该提议区块投了赞成票,则可以认为针对该提议区块的共识通过;如果在两轮共识投票中存在其中一轮共识投票没有三分之二及以上的共识节点针对该提议区块投了赞成票,则认为针对该提议区块的共识不通过,则该提议区块无法存储至区块链中。假设区块高度为5的提议区块共识失败,此时共识网络中会选举出新的共识节点来担任新的提议节点,然后该新的提议节点会生成一个新的提议区块,共识网络会针对新的提议区块进行区块共识。可以理解的是,新的提议区块的区块高度依然为5,为了区分,可以将共识失败的提议区块称之为区块高度为5且在第1轮生成的提议区块,新的提议区块称之为区块高度为5且在第2轮生成的提议区块。如果区块高度为5且在第2轮生成的提议区块依然共识失败,则下一提议区块为区块高度为5且在第3轮生成的提议区块。需要说明的是,每一轮的提议节点是由选举算法选出(如轮流产生),不一定是固定不变的。
具体的,共识节点在接收到提议区块后,会对其进行合法性验证。其中,合法性验证可以是对提议节点身份的验证,可以是对提议区块内容的验证。
一个可行的实施例中,共识节点对提议区块做合法性验证,可以是获取提议区块中的交易数据,对交易数据进行哈希运算,得到待验证哈希值;根据提议区块中的默克尔树路径对待验证哈希值进行哈希运算,得到待验证树根哈希值;从提议区块的区块头中获取默克尔树根哈希值;若待验证树根哈希值和默克尔树根哈希值相同,则确定提议区块的合法性验证结果为合法结果;若待验证树根哈希值和默克尔树根哈希值不相同,则确定提议区块的合法性验证结果为非法结果。其中,哈希(hash)值,也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。其中,默克尔(Merkle)树由一个根节点(root)、一组中间节点和一组叶节点(leaf)组成。叶节点(leaf)包含存储数据或其哈希值,中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。所以Merkle树也称哈希树。
为便于理解,请一并参见图4,图4是本申请实施例提供的一种区块合法性验证的场景示意图。如图4所示,共识节点40(可以为上述图2a所示的任一共识节点)接收到提议区块41,提议区块41包含有包含区块头411(Header)和区块体412(Body)两部分。在区块头411中存有默克尔树根哈希值HX(1234),当然,在实际应用时,区块头411中可以存储有版本号、时间戳和难度值等基本数据,还可以存储有其他相关数据。区块体412中存有默克尔树和交易数据4121,其中,交易数据4121中包含有交易数据Y1、交易数据Y2、交易数据Y3和交易数据Y4。其中,每个交易数据对应有一个交易,实际上一个提议区块中可能包含多个交易对应的交易数据。如图4所示,共识节点40首先对交易数据Y1、交易数据Y2、交易数据Y3和交易数据Y4分别进行哈希计算,得到交易数据Y1的待验证哈希值HY(1)、交易数据Y2的待验证哈希值HY(2)、交易数据Y3的待验证哈希值HY(3),以及交易数据Y4的待验证哈希值HY(4);然后共识节点会根据默克尔树路径,对这些待验证哈希值进行哈希运算,即对待验证哈希值HY(1)以及待验证哈希值HY(2)进行哈希运算,得到包括上述两个待验证哈希值的待验证叶哈希值HY(12),对待验证哈希值HY(3)以及待验证哈希值HY(4)进行哈希运算,得到包括上述两个待验证哈希值的待验证叶哈希值HY(34);最后对待验证叶哈希值HY(12)以及待验证叶哈希值HY(34)进行哈希运算,得到包括待验证叶哈希值HY(12)以及待验证叶哈希值HY(34)的待验证树根哈希值HY(1234)。然后共识节点40将待验证树根哈希值HY(1234)与区块头411中的默克尔树根哈希值HX(1234)进行对比,若两者相同,可以确定提议区块11的合法性验证结果为合法结果;否则确定提议区块11的合法性验证结果为非法结果。
一个可行的实施例中,共识节点对提议区块做合法性验证,可以是获取提议区块中的交易数据;调用交易验证函数对交易数据进行验证,得到交易验证结果;若交易验证结果为有效结果,则确定提议区块的合法性验证结果为合法结果;若交易验证结果为无效结果,则确定提议区块的合法性验证结果为非法结果。其中,交易验证函数是根据校验标准规则来设定的,比如Check(检查)函数。通过Check函数,可以验证区块的数据结构语法是否有效,区块大小是否在长度限制范围内,区块时间戳是否早于验证时刻未来两个小时,区块中的签名数据是否小于签名操作的上限等等。如果区块的数据格式、大小、签名等符合校验标准规则,Check函数可以返回0,即有效的交易验证结果,此时共识节点会确定提议区块的合法性验证结果为合法结果,如果调用该Check函数返回其他值,共识节点会确定提议区块的合法性验证结果为非法结果。
一个可行的实施例中,共识节点对提议区块做合法性验证,可以是在区块链中获取提议区块的父区块的区块哈希值,作为目标父区块哈希值;从提议区块的区块头中获取父区块哈希值,作为待验证父区块哈希值;若待验证父区块哈希值和目标父区块哈希值相同,则确定提议区块的合法性验证结果为合法结果;若待验证父区块哈希值和目标父区块哈希值不相同,则确定提议区块的合法性验证结果为非法结果。其中,区块哈希值也是区块的标示符,区块哈希值是由父区块哈希值、区块内容、区块创建时间三个字段拼接以后通过哈希算法计算得到的。其中,父区块就是区块链中某一区块的前一个区块,比如说,区块高度为5的区块的父区块就为区块高度为4的区块。
一个可行的实施例中,共识节点对提议区块做合法性验证,可以是获取提议区块相关联的签名数据;获取提议节点的公钥,通过公钥验证签名数据,得到签名验证结果;若签名验证结果为验签成功,则确定提议区块的合法性验证结果为合法结果;若签名验证结果为验签失败,则确定提议区块的合法性验证结果为非法结果。其中,属于验签成功的签名数据,是由提议节点通过所拥有的私钥对提议区块进行签名得到的。其中,公钥是与私钥就是俗称的不对称加密方式,公钥是面向大家的,也就是说,别的共识节点可以获取到提议节点的公钥;私钥是私有的,别的共识节点无法获取提议节点的私钥。提议节点采用自己的私钥对提议区块加以处理,由于该私钥仅为提议节点所有,这样就产生了其他节点无法生成的文件,也就形成了数字签名。在一轮共识中,共识节点可以知道谁是本轮生成提议区块的提议节点,并获取提议节点的公钥,然后通过公钥来对签名数据进行解密,也就是验签,验签成功说明该签名数据是由提议节点发送的,与该签名数据相关联的提议区块是由本轮共识的提议节点生成的提议区块,不是误接收了别的节点传来的提议区块或者其他非法区块,则可以确定该提议区块合法性验证通过;否则确定提议区块合法性验证不通过。
需要说明的是,上述一个或多个可选实施例中提到的针对提议区块的合法性验证方法,可以在验证提议区块合法性的时候同时使用。
步骤S102,若所述提议区块的合法性验证结果为合法结果,则通过智能合约执行所述提议区块中的交易数据,得到目标合约执行结果,将所述提议区块的区块哈希值与所述目标合约执行结果关联缓存至临时列表中。
具体的,共识节点在获取到提议区块,并验证该提议区块合法以后,会调用用于执行交易数据的智能合约中的交易执行函数,然后通过交易执行函数获取针对交易数据的读取数据,再通过读取数据和交易数据执行交易执行函数,得到目标合约执行结果。然后,共识节点会获取提议区块的区块哈希值,将提议区块的区块哈希值和目标合约执行结果关联缓存至临时列表中。其中,智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。在区块链系统当中,智能合约是一种区块链各节点可以理解并执行的代码,可以执行任意逻辑并得到结果。在实际应用中,智能合约通过区块链上的交易来管理与试用。每条交易对应的交易数据相当于对区块链系统的一个远程过程调用(Remote Procedure Call,RPC)请求。如果说智能合约相当于可执行程序,区块链就相当于提供运行环境的操作系统。区块链可以包含多个合约,以合约账号(Identity ,ID)、标识号或名称来区分。
为便于理解,请一并参见图5,图5是本申请实施例提供的一种合约执行的场景示意图。如图5所示,共识节点50(可以为上述图2a所示的任一共识节点)获取了提议区块51,其中,提议区块51可以是共识网络中的提议节点生成的待共识区块。提议区块51的区块体中包含有交易数据511,交易数据511可以包含交易1、交易2、交易3、…、交易n,以及每个交易对应的函数名称。共识节点50可以根据函数名称调用用于执行交易数据的智能合约52中的交易执行函数,如图5所示,执行交易1的函数为交易执行函数1,执行交易2的函数为交易执行函数2,执行交易3的函数为交易执行函数3,…,执行交易n的函数为交易执行函数n。可以理解的是,函数(包括函数名称1、函数名称2、函数名称3、…、函数名称n分别对应的函数),可以在同一个智能合约下被调用,也可以在不同的智能合约下被调用,例如函数名称1对应的函数(即交易执行函数1)与函数名称2对应的函数(即交易执行函数2)在智能合约B中被调用,函数名称3对应的函数(即交易执行函数3)与函数名称n对应的函数(即交易执行函数n)在智能合约V中被调用。
然后,共识节点50可以根据交易执行函数获取针对交易数据的历史交易数据,将历史交易数据确定为读取数据。如图5所示,通过交易执行函数1获取交易1的读取数据1,通过交易执行函数2获取交易2的读取数据2,通过交易执行函数3获取交易3的读取数据3,…,通过交易执行函数n获取交易n的读取数据n。例如,交易1为甲方通过自己的账户向乙方转账10元,交易执行函数1为转移执行函数,读取数据1,也就是交易1的历史交易数据为甲方账户上剩余20元,针对交易1的交易执行结果1可以为20-10=10元,即执行交易1后,甲方的账户上剩余10元。
上文简单以交易1为例叙述交易数据、读取数据以及交易执行结果之间的联系,故根据交易2、读取数据2以及交易执行函数2,可以得到交易2的交易执行结果2,根据交易3、读取数据3以及交易执行函数3,可以得到交易3的交易执行结果3,…,根据交易n、读取数据n以及交易执行函数n,可以得到交易n的交易执行结果n。共识节点会将交易执行结果1、交易执行结果2、交易执行结果3,…,交易执行结果n作为目标合约执行结果,然后将目标合约执行结果与提议区块的区块哈希值建立关联关系,将该关联关系缓存在临时列表中。
步骤S103,在通过所述智能合约执行所述交易数据的过程中,并行对所述提议区块进行两轮共识投票处理,得到第一共识结果。
具体的,合约执行和两轮共识投票处理是并行执行的,也就是说,在共识节点开始对提议区块进行共识投票时,就同时通过智能合约执行交易数据了。在第一轮共识投票中,共识节点根据提议区块的合法性验证结果对提议区块进行预投票处理,得到预投票结果;在第二轮共识投票中,根据预投票结果对提议区块进行预提交处理,得到第一共识结果。
具体的,在第一轮共识投票中,共识节点根据提议区块的合法性验证结果对提议区块进行预投票处理,得到预投票结果,可以是,在第一轮共识投票中,因为共识节点已经确定提议区块的合法性,共识节点会将第一预投票结果确定为针对提议区块的第一赞成结果;将第一预投票结果广播至至少两个目标共识节点;接收至少两个目标共识节点分别发送的第二预投票结果;根据第一预投票结果和至少两个第二预投票结果,确定针对提议区块的第一赞成票数量和第一反对票数量;若第一赞成票数量超过第一预投票阈值,确定预投票结果为预投票成功结果;若第一反对票数量超过第二预投票阈值,确定预投票结果为预投票失败结果。其中,至少两个第二预投票结果中存在针对提议区块的第一赞成结果,或者至少两个第二预投票结果中存在针对提议区块的第一反对结果。其中,第一预投票阈值可以为共识网络中共识节点总数量的三分之二,比如,共识节点总数量为30,则第一预投票阈值可以为20;第二预投票阈值可以为共识网络中共识节点总数量的三分之一,比如,共识节点总数量为30,则第二预投票阈值可以为10。
具体的,在第二轮共识投票中,根据预投票结果对提议区块进行预提交处理,得到第一共识结果,可以是,若共识节点在第一轮共识投票中确定预投票结果为预投票成功结果,则将第一预提交结果确定为针对提议区块的第二赞成结果;否则将第一预提交结果确定为针对提议区块的第二反对结果;然后共识节点会将第一预提交结果广播至至少两个目标共识节点;同时共识节点会接收至少两个目标共识节点分别发送的第二预提交结果;根据第一预提交结果和至少两个第二预提交结果,确定针对提议区块的第二赞成票数量和第二反对票数量;若第二赞成票数量超过第一预提交阈值,确定第一共识结果为共识通过结果;若第二反对票数量超过第二预提交阈值,确定第一共识结果为共识不通过结果。其中,至少两个第二预提交结果中存在针对提议区块的第二赞成结果,或者至少两个第二预提交结果中存在针对提议区块的第二反对结果。其中,第一预提交阈值可以为共识网络中共识节点总数量的三分之二,比如,共识节点总数量为30,则第一预提交阈值可以为20;第二预提交阈值可以为共识网络中共识节点总数量的三分之一,比如,共识节点总数量为30,则第二预提交阈值可以为10。
为便于理解,请一并参见图6a-图6b,图6a-图6b是本申请实施例提供的一种共识投票的场景示意图。如图6a所示,共识节点60(可以为上述图2a所示的节点10a、节点10b、节点10c或者节点10d),共识节点60在验证提议区块合法以后,对提议区块进行了第一轮共识投票,也就是预投票处理。因为提议区块的合法性验证结果为合法结果,共识节点60确定针对提议区块的第一预投票结果为第一赞成结果,然后将第一赞成结果广播给共识网络中的其他共识节点。可以理解的是,提议节点生成提议区块后会广播至共识网络中的所有共识节点,因此,除去共识节点60,其余共识节点在接收到提议区块后,会执行与共识节点60一样对提议区块进行共识处理。也就是说,共识节点61、共识节点62和共识节点63也会对提议区块进行第一轮共识投票,然后广播自己的预投票结果,对于共识节点60来说,共识节点61、共识节点62或者共识节点63的预投票结果为第二预投票结果。如图6a所示,共识节点60将接收到共识节点61的第一赞成结果,共识节点62的第一反对结果和共识节点63的第一赞成结果。其中,第一反对结果可能是因为共识节点62由于网络问题迟迟未接收到提议区块,或者共识节点62确定提议区块的合法性验证结果为非法,从而确定的预投票结果。然后,共识节点60根据第一预投票结果和接收到的其余共识节点的第二预投票结果,统计出第一赞成票数量为3,第一反对票数量为1,明显第一赞成票数量大于共识网络中所有共识节点数量的三分之二,共识节点60会确定预投票成功。
如图6b所示,共识节点60确定预投票成功以后,会进入第二轮共识投票,也就是预提交处理。预提交处理实际是根据共识节点的预投票结果来进行的,共识节点60的预投票结果为预投票成功结果,共识节点60会将第一预提交结果确定为第二赞成结果,然后广播给共识网络中的其余共识节点。同样,共识节点60会接收其余共识节点的第二预提交结果。其中,第二预提交结果可以为第二赞成结果,或者第二反对结果。如图6b所示,共识节点61可能因为网络问题或者广播传输问题,确定预投票结果为预投票失败,从而将第二预提交结果确定为第二反对结果,但是共识节点62、共识节点63和共识节点61均确定预投票结果为预投票成功,因此都是第二赞成结果,共识节点60根据第一预提交结果和接收到的第二预提交结果,可以确定针对提议区块的第二赞成票数量为3,第二反对票数量为1,因此,共识节点60会确定该提议区块共识通过。
可选的,在上述两轮共识投票过程中,共识节点60在接收其余共识节点的第二预投票结果或者第二预提交结果时,由于共识节点60和其余共识节点的距离、网络速度等原因,共识节点60接收到其余共识节点的第二预投票结果可以是不同步的,比如说,共识节点60可以在接收到共识节点62的第二预投票结果的10s后,才接收到共识节点61传来的第二预投票结果;第二预提交结果同理。因此,在进行两轮共识投票处理时,共识节点可以持续根据已经获取到的投票结果,来统计赞成票或者反对票的数量,只要赞成票的数量达到共识节点总数量的三分之二,就可以进行下一步动作,无需等待接收到所有共识节点的投票结果。
步骤S104,若所述第一共识结果为共识通过结果,则在所述临时列表中获取所述提议区块的区块哈希值所映射的目标合约执行结果,将所述提议区块和所述目标合约执行结果关联存储至区块链中。
具体的,当提议区块的共识通过后,共识节点可以根据提议区块的区块哈希值在临时列表中获取映射的目标合约执行结果,然后将提议区块和目标合约执行结果关联存储至区块链中。
通过本申请实施提供的方法,共识节点获取到提议区块,然后验证该提议区块为合法后,同时进行提议区块中的合约执行和提议区块的共识投票处理,将合约执行得到的目标合约执行结果缓存在临时列表中,如果针对该提议区块的共识结果为共识通过结果,就获取缓存在临时列表中的目标合约执行结果,同提议区块一起存储至区块链中。采用本申请实施例提供的方法,减少了整个区块上链处理的时间,大大提高了区块链的吞吐量。
进一步的,请参见图7,图7是本申请实施提供的一种区块共识的过程示意图。如图7所示,提议(Proposer)节点开始监听并收集全网的所有交易,经过一段时间后,组装一个新块,并向全网广播,这个就是提议区块(proposal block)。全网所有共识(validator)节点收到这个提议区块后,开始读取这个提议区块里的所有交易数据,一一进行验证,如果没有问题,确认这个提议区块为有效块(valid block),然后就发出一条预投票同意消息(Prevote Block),表示同意这个提议区块,投一个赞成票,与此同时,共识节点开始通过智能合约执行提议区块中的交易数据,即执行合约(Execute contract),并将得到的目标合约执行结果缓存起来;如果共识节点没有收到该提议区块,或者共识节点发现提议区块里有非法交易,确认这个提议区块为无效块(invalid block),则发出一条预投票反对消息(Prevote Nil),表示反对这个提议区块,投一个反对票。
如图7所示,这些预投票消息会被广播到所有共识节点,所以每个共识节点既会发出一个预投票消息,又会收集别人的预投票消息。当共识节点发现收集到的预投票消息中同意投票数量超过共识节点总数量的 2/3时,就发出一个预提交同意(Precommit Block)的预提交信息,这是第二阶段的投票了,同样的,每个共识节点既会发出一个预提交消息,又会收集别人的预提交消息。当一个共识节点收集到的预提交消息中同意票数超过共识节点总数量的2/3时,说明这个提议区块是得到了大多数共识节点同意的,然后共识节点可以把这个提议区块和缓存的目标合约执行结果写入本地的区块链,追加到末尾,即完成提交(Commit),同时区块高度增一,得到新高度(New Height),进入下一轮(round), 开始提议新高度对应的新区块。但是当一个共识节点收集到的预提交消息中同意票数不超过共识节点总数量的2/3,换言之,共识节点收集到的预提交消息中反对票数超过了共识节点总数量的1/3,说明这个提议区块是不能得到大多数共识节点同意,因此,共识节点不会把这个提议区块和缓存的目标合约执行结果写入本地的区块链,提交失败,此时,区块高度不会改变,进入下一round, 开始提议该区块高度对应的新区块。
由上述可知,在区块链中的当前区块高度写入一个新的区块,需要经历一个或多个round。其中,一个round包括4个阶段(step):Propose,Execute contract,Prevote和Precommit,可以理解的是,Execute contract步骤同Prevote和Precommit步骤是并行执行的。整个区块共识过程就是由一个或多个round,再加上两个特殊的阶段:Commit和NewHeight,如下所示:
NewHeight -> {Propose ->(Execute contract)/ (Prevote -> Precommit) }+-> Commit -> NewHeight ->...
可选的,若提议区块的合法性验证结果为非法结果,即提议区块为无效块,共识节点依然会对提议区块进行两轮共识投票处理,得到第二共识结果;若第二共识结果为共识通过结果,则从已完成共识节点中同步已存储至区块链中区块高度为M的提议区块,以及提议区块对应的目标合约执行结果。其中,已完成共识节点为成功将提议区块以及目标合约执行结果存储至区块链中的目标共识节点。
可选的,在一个round中,共识节点由于网络等问题没有及时收到提议区块,共识节点自然不会一直等待下去,因此,在验证时间阈值内,共识节点未获取到区块高度为M且在第N轮生成的提议区块,会构建临时空区块,然后针对临时空区块进行两轮共识投票处理,得到第三共识结果。若第三共识结果为共识通过结果,空区块中又没有交易数据,共识节点会从已完成共识节点中同步已存储至所述区块链中区块高度为M的提议区块,以及提议区块对应的目标合约执行结果。其中,已完成共识节点为成功将提议区块以及目标合约执行结果存储至区块链中的目标共识节点。
通过本申请实施例提供的方法,合约的执行在检测到提议区块为有效块时就执行,即在广播预投票信息和预提交信息的同时能进行合约的执行,当合约的执行与这两次广播时间相当时,相当于节省了合约执行的时间,大大提高了区块链的性能。
进一步的,请参见图8,图8是本申请实施例提供的一种合约执行结果存储的示意图。在本申请实施例中,共识节点提前执行了可能最终无法提交的提议区块中的合约,因此执行合约时不能将执行结果直接保存到数据库中,而需要将临时的执行结果缓存起来,比如保存在存储器中的一个临时列表中,或者保存在临时数据库中的临时列表中,等等。如图8所示,区块H3/R1是指区块高度为3且在第1轮生成的提议区块,区块H3/R2是指区块高度为3且在第2轮生成的提议区块,区块H3/R3是指区块高度为3且在第3轮生成的提议区块。可能由于网络等问题,区块H3/R1和区块H3/R2的共识投票失败了,都进入到了下一轮,尽管共识节点已经执行了区块H3/R1和区块H3/R2中的合约,但是并不会将对应的合约执行结果写入区块链中。如图8所示,在得到合约执行结果以后,共识节点会先将合约执行结果缓存至存储器的临时列表中,可以理解的是,临时列表中可能存储有多个提议区块对应的合约执行结果,因此可以采用[k,v]键值对(Key-Value存储,简称KV存储,键:就是存的值的编号,值:就是要存放的数据)来存储,即将合约执行结果作为值,关联上唯一的键值。可以用提议区块的区块哈希值(block hash)作为key(唯一标记)保存这个临时的合约执行结果。然后,在共识节点提交提议区块时,只需要找出决定提交的提议区块的区块哈希值对应的合约执行结果,将其保存到账本中。
可选的,在提交完区块高度为M的最终提议区块后,共识节点可以将临时列表中区块高度为M的N个合约执行结果删除。
可选的,共识节点可以获取临时列表中所有合约执行结果的总数量,若总数量大于或等于存储数量阈值,则删除临时列表中的所有合约执行结果。其中,所有合约执行结果包括一个或多个区块高度分别对应的合约执行结果。
通过本申请实施例提供的方法,采用区块哈希值来标识提议区块对应的合约执行结果,即使同一块高存在多个对应的提议区块,在最终提交最终提议区块时,也可以根据该最终提议区块的区块哈希值来找到临时缓存的合约执行结果,不会出现存储混乱。同时,在提交完提议区块后删除缓存的合约执行结果,可以释放内存,提示区块链的性能。
进一步地,请参见图9,图9是本申请实施例提供的一种区块共识装置的结构示意图。该区块共识装置1可以包括:区块验证模块11、合约执行模块12、第一共识模块13以及第一存储模块14。
区块验证模块11,用于获取区块高度为M且在第N轮生成的提议区块,对提议区块进行合法性验证;M和N均为正整数;
合约执行模块12,用于若提议区块的合法性验证结果为合法结果,则通过智能合约执行提议区块中的交易数据,得到目标合约执行结果,将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中;临时列表包括区块高度为M的N个合约执行结果,N个合约执行结果包括目标合约执行结果;
第一共识模块13,用于在通过智能合约执行交易数据的过程中,并行对提议区块进行两轮共识投票处理,得到第一共识结果;
第一存储模块14,用于若第一共识结果为共识通过结果,则在临时列表中获取提议区块的区块哈希值所映射的目标合约执行结果,将提议区块和目标合约执行结果关联存储至区块链中。
其中,区块验证模块11、合约执行模块12、第一共识模块13以及第一存储模块14的具体功能实现方式可以参见图3对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
请再参见图9,区块验证模块11可以包括:哈希运算单元1111、根哈希获取单元1112以及第一验证单元1113。
哈希运算单元1111,用于获取提议区块中的交易数据,对交易数据进行哈希运算,得到待验证哈希值;
哈希运算单元1111,还用于根据提议区块中的默克尔树路径对待验证哈希值进行哈希运算,得到待验证树根哈希值;
根哈希获取单元1112,用于从提议区块的区块头中获取默克尔树根哈希值;
第一验证单元1113,用于若待验证树根哈希值和默克尔树根哈希值相同,则确定提议区块的合法性验证结果为合法结果;
第一验证单元1113,还用于若待验证树根哈希值和默克尔树根哈希值不相同,则确定提议区块的合法性验证结果为非法结果。
其中,哈希运算单元1111、根哈希获取单元1112以及第一验证单元1113的具体功能实现方式可以参见图3对应实施例中的步骤S101,这里不再进行赘述。
请再参见图9,区块验证模块11可以包括:交易获取单元1121、交易验证单元1122以及第二验证单元1123。
交易获取单元1121,用于获取提议区块中的交易数据;
交易验证单元1122,用于调用交易验证函数对交易数据进行验证,得到交易验证结果;
第二验证单元1123,用于若交易验证结果为有效结果,则确定提议区块的合法性验证结果为合法结果;
第二验证单元1123,还用于若交易验证结果为无效结果,则确定提议区块的合法性验证结果为非法结果。
其中,交易获取单元1121、交易验证单元1122以及第二验证单元1123的具体功能实现方式可以参见图3对应实施例中的步骤S101,这里不再进行赘述。
请再参见图9,区块验证模块11可以包括:第一哈希获取单元1131、第二哈希获取单元1132以及第三验证单元1133。
第一哈希获取单元1131,用于在区块链中获取提议区块的父区块的区块哈希值,作为目标父区块哈希值;
第二哈希获取单元1132,还用于从提议区块的区块头中获取父区块哈希值,作为待验证父区块哈希值;
第三验证单元1133,用于若待验证父区块哈希值和目标父区块哈希值相同,则确定提议区块的合法性验证结果为合法结果;
第三验证单元1133,还用于若待验证父区块哈希值和目标父区块哈希值不相同,则确定提议区块的合法性验证结果为非法结果。
其中,第一哈希获取单元1131、第二哈希获取单元1132以及第三验证单元1133的具体功能实现方式可以参见图3对应实施例中的步骤S101,这里不再进行赘述。
请再参见图9,区块验证模块11可以包括:签名获取单元1141、签名验证单元1142以及第四验证单元1143。
签名获取单元1141,用于获取提议区块相关联的签名数据;
签名验证单元1142,用于获取提议节点的公钥,通过公钥验证签名数据,得到签名验证结果;
第四验证单元1143,用于若签名验证结果为验签成功,则确定提议区块的合法性验证结果为合法结果;属于验签成功的签名数据,是由提议节点通过所拥有的私钥对提议区块进行签名得到的;属于验签成功的签名数据相关联的提议区块是由提议节点生成的;
第四验证单元1143,还用于若签名验证结果为验签失败,则确定提议区块的合法性验证结果为非法结果。
其中,签名获取单元1141、签名验证单元1142以及第四验证单元1143的具体功能实现方式可以参见图3对应实施例中的步骤S101,这里不再进行赘述。
请再参见图9,合约执行模块12可以包括:第一获取单元121、第二获取单元122、结果获取单元123以及缓存单元124。
第一获取单元121,用于获取提议区块中的交易数据,调用用于执行交易数据的智能合约中的交易执行函数;
第二获取单元122,用于根据交易执行函数获取针对交易数据的读取数据;
结果获取单元123,用于根据读取数据以及交易数据执行交易执行函数,得到交易数据的目标合约执行结果;
缓存单元124,用于将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中。
其中,第一获取单元121、第二获取单元122、结果获取单元123以及缓存单元124的具体功能实现方式可以参见图3对应实施例中的步骤S102,这里不再进行赘述。
请再参见图9,第一共识模块13可以包括:预投票单元131以及预提交单元132。
预投票单元131,用于在第一轮共识投票中,根据提议区块的合法性验证结果对提议区块进行预投票处理,得到预投票结果;
预提交单元132,用于在第二轮共识投票中,根据预投票结果对提议区块进行预提交处理,得到第一共识结果。
其中,预投票单元131以及预提交单元132的具体功能实现方式可以参见图3对应实施例中的步骤S103,这里不再进行赘述。
请再参见图9,预投票单元131可以包括:第一确定子单元1311、第一广播子单元1312、第一接收子单元1313、第一统计子单元1314以及预投票处理子单元1315。
第一确定子单元1311,用于在第一轮共识投票中,根据合法结果将第一预投票结果确定为针对提议区块的第一赞成结果;
第一广播子单元1312,用于将第一预投票结果广播至至少两个目标共识节点;
第一接收子单元1313,用于接收至少两个目标共识节点分别发送的第二预投票结果;至少两个第二预投票结果中存在针对提议区块的第一赞成结果,或者至少两个第二预投票结果中存在针对提议区块的第一反对结果;
第一统计子单元1314,用于根据第一预投票结果和至少两个第二预投票结果,确定针对提议区块的第一赞成票数量和第一反对票数量;
预投票处理子单元1315,用于若第一赞成票数量超过第一预投票阈值,确定预投票结果为预投票成功结果;
预投票处理子单元1315,还用于若第一反对票数量超过第二预投票阈值,确定预投票结果为预投票失败结果。
其中,第一确定子单元1311、第一广播子单元1312、第一接收子单元1313、第一统计子单元1314以及预投票处理子单元1315的具体功能实现方式可以参见图6a对应实施例中的具体描述,这里不再进行赘述。
请再参见图9,预提交单元132可以包括:第二确定子单元1321、第二广播子单元1322、第二接收子单元1323、第二统计子单元1324以及预提交处理子单元1325。
第二确定子单元1321,用于若预投票结果为预投票成功结果,则将第一预提交结果确定为针对提议区块的第二赞成结果;
第二确定子单元1321,还用于若预投票结果为预投票失败结果,则将第一预提交结果确定为针对提议区块的第二反对结果;
第二广播子单元1322,用于将第一预提交结果广播至至少两个目标共识节点;
第二接收子单元1323,用于接收至少两个目标共识节点分别发送的第二预提交结果;至少两个第二预提交结果中存在针对提议区块的第二赞成结果,或者至少第二两个预提交结果中存在针对提议区块的第二反对结果;
第二统计子单元1324,用于根据第一预提交结果和至少两个第二预提交结果,确定针对提议区块的第二赞成票数量和第二反对票数量;
预提交处理子单元1325,用于若第二赞成票数量超过第一预提交阈值,确定第一共识结果为共识通过结果;
预提交处理子单元1325,还用于若第二反对票数量超过第二预提交阈值,确定第一共识结果为共识不通过结果。
其中,第二确定子单元1321、第二广播子单元1322、第二接收子单元1323、第二统计子单元1324以及预提交处理子单元1325的具体功能实现方式可以参见图6b对应实施例中的具体描述,这里不再进行赘述。
请再参见图9,该区块共识装置1还可以包括:第二共识模块15以及第二存储模块16。
第二共识模块15,用于若提议区块的合法性验证结果为非法结果,则对提议区块进行两轮共识投票处理,得到第二共识结果;
第二存储模块16,用于若第二共识结果为共识通过结果,则从已完成共识节点中同步已存储至区块链中区块高度为M的提议区块,以及提议区块对应的目标合约执行结果;已完成共识节点为成功将提议区块以及目标合约执行结果存储至区块链中的目标共识节点。
其中,第二共识模块15以及第二存储模块16的具体功能实现方式可以参见图7对应实施例中的具体描述,这里不再进行赘述。
请再参见图9,区块验证模块11可以包括:成功获取单元1151。
成功获取单元1151,用于若在验证时间阈值内,获取到区块高度为M且在第N轮生成的提议区块,则对提议区块进行合法性验证。
则,区块共识装置1还可以包括:失败获取模块17、第三共识模块18以及第三存储模块19。
失败获取模块17,用于若在验证时间阈值内,未获取到区块高度为M且在第N轮生成的提议区块,则构建临时空区块;
第三共识模块18,用于对临时空区块进行两轮共识投票处理,得到第三共识结果;
第三存储模块19,用于若第三共识结果为共识通过结果,则从已完成共识节点中同步已存储至区块链中区块高度为M的提议区块,以及提议区块对应的目标合约执行结果;已完成共识节点为成功将提议区块以及目标合约执行结果存储至区块链中的目标共识节点。
其中,成功获取单元1151、失败获取模块17、第三共识模块18以及第三存储模块19的具体功能实现方式可以参见图7对应实施例中的具体描述,这里不再进行赘述。
请再参见图9,该区块共识装置1还可以包括:第一删除模块110以及第二删除模块111。
第一删除模块110,用于将临时列表中区块高度为M的N个合约执行结果删除;
第二删除模块111,用于获取临时列表中所有合约执行结果的总数量,若总数量大于或等于存储数量阈值,则删除临时列表中的所有合约执行结果;所有合约执行结果包括一个或多个区块高度分别对应的合约执行结果。
其中,第一删除模块110以及第二删除模块111的具体功能实现方式可以参见图8对应实施例中的具体描述,这里不再进行赘述。
进一步地,请参见图10,图10是本申请实施例提供的一种计算机设备的结构示意图。如图10所示,上述图9所对应实施例中的区块共识装置1可以应用于上述计算机设备1000,上述计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取区块高度为M且在第N轮生成的提议区块,对提议区块进行合法性验证;M和N均为正整数;
若提议区块的合法性验证结果为合法结果,则通过智能合约执行提议区块中的交易数据,得到目标合约执行结果,将提议区块的区块哈希值与目标合约执行结果关联缓存至临时列表中;临时列表包括区块高度为M的N个合约执行结果,N个合约执行结果包括目标合约执行结果;
在通过智能合约执行交易数据的过程中,并行对提议区块进行两轮共识投票处理,得到第一共识结果;
若第一共识结果为共识通过结果,则在临时列表中获取提议区块的区块哈希值所映射的目标合约执行结果,将提议区块和目标合约执行结果关联存储至区块链中。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3所对应实施例中对该基于区块链的区块共识方法的描述,也可执行前文图9所对应实施例中对该基于区块链的区块共识装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的区块共识装置1所执行的计算机程序,当上述处理器加载并执行上述计算机程序时,能够执行前文任一实施例对上述区块共识方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的区块共识装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital, SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种基于区块链的区块共识方法,其特征在于,包括:
获取区块高度为M且在第N轮生成的提议区块,对所述提议区块进行合法性验证;M和N均为正整数;
若所述提议区块的合法性验证结果为合法结果,则通过智能合约执行所述提议区块中的交易数据,得到目标合约执行结果,将所述提议区块的区块哈希值与所述目标合约执行结果关联缓存至临时列表中;所述临时列表包括区块高度为M的N个合约执行结果,所述N个合约执行结果包括所述目标合约执行结果;
在通过所述智能合约执行所述交易数据的过程中,并行对所述提议区块进行两轮共识投票处理,得到第一共识结果;
若所述第一共识结果为共识通过结果,则在所述临时列表中获取所述提议区块的区块哈希值所映射的目标合约执行结果,将所述提议区块和所述目标合约执行结果关联存储至区块链中。
2.根据权利要求1所述的方法,其特征在于,所述对所述提议区块进行合法性验证,包括:
获取所述提议区块中的交易数据,对所述交易数据进行哈希运算,得到待验证哈希值;
根据所述提议区块中的默克尔树路径对所述待验证哈希值进行哈希运算,得到待验证树根哈希值;
从所述提议区块的区块头中获取默克尔树根哈希值;
若所述待验证树根哈希值和所述默克尔树根哈希值相同,则确定所述提议区块的合法性验证结果为合法结果;
若所述待验证树根哈希值和所述默克尔树根哈希值不相同,则确定所述提议区块的合法性验证结果为非法结果。
3.根据权利要求1所述的方法,其特征在于,所述验证所述提议区块的合法性,包括:
获取所述提议区块中的交易数据;
调用交易验证函数对所述交易数据进行验证,得到交易验证结果;
若所述交易验证结果为有效结果,则确定所述提议区块的合法性验证结果为合法结果;
若所述交易验证结果为无效结果,则确定所述提议区块的合法性验证结果为非法结果。
4.根据权利要求1所述的方法,其特征在于,所述验证所述提议区块的合法性,包括:
在区块链中获取所述提议区块的父区块的区块哈希值,作为目标父区块哈希值;
从所述提议区块的区块头中获取父区块哈希值,作为待验证父区块哈希值;
若所述待验证父区块哈希值和所述目标父区块哈希值相同,则确定所述提议区块的合法性验证结果为合法结果;
若所述待验证父区块哈希值和所述目标父区块哈希值不相同,则确定所述提议区块的合法性验证结果为非法结果。
5.根据权利要求1所述的方法,其特征在于,所述验证所述提议区块的合法性,包括:
获取所述提议区块相关联的签名数据;
获取提议节点的公钥,通过所述公钥验证所述签名数据,得到签名验证结果;
若所述签名验证结果为验签成功,则确定所述提议区块的合法性验证结果为合法结果;属于验签成功的签名数据,是由所述提议节点通过所拥有的私钥对所述提议区块进行签名得到的;所述属于验签成功的签名数据相关联的提议区块是由所述提议节点生成的;
若所述签名验证结果为验签失败,则确定所述提议区块的合法性验证结果为非法结果。
6.根据权利要求1所述的方法,其特征在于,所述通过智能合约执行所述提议区块中的交易数据,得到目标合约执行结果,将所述提议区块的区块哈希值与所述目标合约执行结果关联缓存至临时列表中,包括:
获取所述提议区块中的交易数据,调用用于执行所述交易数据的智能合约中的交易执行函数;
根据所述交易执行函数获取针对所述交易数据的读取数据;
根据所述读取数据以及所述交易数据执行所述交易执行函数,得到所述交易数据的目标合约执行结果;
将所述提议区块的区块哈希值与所述目标合约执行结果关联缓存至临时列表中。
7.根据权利要求1所述的方法,其特征在于,所述对所述提议区块进行两轮共识投票处理,得到第一共识结果,包括:
在第一轮共识投票中,根据所述提议区块的合法性验证结果对所述提议区块进行预投票处理,得到预投票结果;
在第二轮共识投票中,根据所述预投票结果对所述提议区块进行预提交处理,得到第一共识结果。
8.根据权利要求7所述的方法,其特征在于,所述在第一轮共识投票中,根据所述提议区块的合法性验证结果对所述提议区块进行预投票处理,得到预投票结果,包括:
在第一轮共识投票中,根据所述合法结果将第一预投票结果确定为针对所述提议区块的第一赞成结果;
将所述第一预投票结果广播至至少两个目标共识节点;
接收所述至少两个目标共识节点分别发送的第二预投票结果;至少两个第二预投票结果中存在针对所述提议区块的第一赞成结果,或者至少两个第二预投票结果中存在针对所述提议区块的第一反对结果;
根据所述第一预投票结果和所述至少两个第二预投票结果,确定针对所述提议区块的第一赞成票数量和第一反对票数量;
若所述第一赞成票数量超过第一预投票阈值,确定预投票结果为预投票成功结果;
若所述第一反对票数量超过第二预投票阈值,确定预投票结果为预投票失败结果。
9.根据权利要求7所述的方法,其特征在于,所述在第二轮共识投票中,根据所述预投票结果对所述提议区块进行预提交处理,得到第一共识结果,包括:
若所述预投票结果为预投票成功结果,则将第一预提交结果确定为针对所述提议区块的第二赞成结果;
若所述预投票结果为预投票失败结果,则将第一预提交结果确定为针对所述提议区块的第二反对结果;
将所述第一预提交结果广播至至少两个目标共识节点;
接收所述至少两个目标共识节点分别发送的第二预提交结果;至少两个第二预提交结果中存在针对所述提议区块的第二赞成结果,或者至少两个第二预提交结果中存在针对所述提议区块的第二反对结果;
根据所述第一预提交结果和所述至少两个第二预提交结果,确定针对所述提议区块的第二赞成票数量和第二反对票数量;
若所述第二赞成票数量超过第一预提交阈值,确定第一共识结果为共识通过结果;
若所述第二反对票数量超过第二预提交阈值,确定第一共识结果为共识不通过结果。
10.根据权利要求1所述的方法,其特征在于,还包括:
若提议区块的合法性验证结果为非法结果,则对所述提议区块进行两轮共识投票处理,得到第二共识结果;
若所述第二共识结果为共识通过结果,则从已完成共识节点中同步已存储至所述区块链中区块高度为M的所述提议区块,以及所述提议区块对应的目标合约执行结果;所述已完成共识节点为成功将所述提议区块以及所述目标合约执行结果存储至区块链中的目标共识节点。
11.根据权利要求1所述的方法,其特征在于,获取区块高度为M且在第N轮生成的提议区块,对所述提议区块进行合法性验证,包括:
若在验证时间阈值内,获取到区块高度为M且在第N轮生成的提议区块,则对所述提议区块进行合法性验证;
则所述方法还包括:
若在验证时间阈值内,未获取到区块高度为M且在第N轮生成的提议区块,则构建临时空区块;
对所述临时空区块进行两轮共识投票处理,得到第三共识结果;
若所述第三共识结果为共识通过结果,则从已完成共识节点中同步已存储至所述区块链中区块高度为M的所述提议区块,以及所述提议区块对应的目标合约执行结果;所述已完成共识节点为成功将所述提议区块以及所述目标合约执行结果存储至区块链中的目标共识节点。
12.根据权利要求1所述的方法,其特征在于,在所述将所述提议区块和所述目标合约执行结果关联存储至区块链中的步骤之后,还包括:
将所述临时列表中区块高度为M的N个合约执行结果删除;
或者,
获取所述临时列表中所有合约执行结果的总数量,若所述总数量大于或等于存储数量阈值,则删除所述临时列表中的所述所有合约执行结果;所述所有合约执行结果包括一个或多个区块高度分别对应的合约执行结果。
13.一种基于区块链的区块共识装置,其特征在于,包括:
区块验证模块,用于获取区块高度为M且在第N轮生成的提议区块,对所述提议区块进行合法性验证;M和N均为正整数;
合约执行模块,用于若所述提议区块的合法性验证结果为合法结果,则通过智能合约执行所述提议区块中的交易数据,得到目标合约执行结果,将所述提议区块的区块哈希值与所述目标合约执行结果关联缓存至临时列表中;所述临时列表包括区块高度为M的N个合约执行结果,所述N个合约执行结果包括所述目标合约执行结果;
第一共识模块,用于在通过所述智能合约执行所述交易数据的过程中,并行对所述提议区块进行两轮共识投票处理,得到第一共识结果;
第一存储模块,用于若所述第一共识结果为共识通过结果,则在所述临时列表中获取所述提议区块的区块哈希值所映射的目标合约执行结果,将所述提议区块和所述目标合约执行结果关联存储至区块链中。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行权利要求1-12任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110273266.3A CN112685796B (zh) | 2021-03-12 | 2021-03-12 | 一种基于区块链的区块共识方法以及相关设备 |
PCT/CN2022/080103 WO2022188831A1 (zh) | 2021-03-12 | 2022-03-10 | 一种基于区块链的区块共识方法以及相关设备 |
US18/071,271 US20230092484A1 (en) | 2021-03-12 | 2022-11-29 | Block chain-based block consensus method and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110273266.3A CN112685796B (zh) | 2021-03-12 | 2021-03-12 | 一种基于区块链的区块共识方法以及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685796A true CN112685796A (zh) | 2021-04-20 |
CN112685796B CN112685796B (zh) | 2021-06-18 |
Family
ID=75455632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110273266.3A Active CN112685796B (zh) | 2021-03-12 | 2021-03-12 | 一种基于区块链的区块共识方法以及相关设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230092484A1 (zh) |
CN (1) | CN112685796B (zh) |
WO (1) | WO2022188831A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112689848A (zh) * | 2019-06-28 | 2021-04-20 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN112887436A (zh) * | 2021-04-28 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、共识节点和流水线方式的区块链系统 |
CN113179272A (zh) * | 2021-04-28 | 2021-07-27 | 杭州丽冠科技有限公司 | 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 |
CN113342838A (zh) * | 2021-08-06 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN113408010A (zh) * | 2021-07-14 | 2021-09-17 | 湖北央中巨石信息技术有限公司 | 基于区块链的异步共识方法及系统及装置及介质 |
CN113610531A (zh) * | 2021-10-09 | 2021-11-05 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN113760999A (zh) * | 2021-04-30 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN114153827A (zh) * | 2021-10-11 | 2022-03-08 | 北京天德科技有限公司 | 一种基于区块链系统的交易数据移除方法 |
CN114219650A (zh) * | 2022-02-21 | 2022-03-22 | 浙江数秦科技有限公司 | 一种低交易延迟的区块链共识方法 |
CN114745131A (zh) * | 2022-04-06 | 2022-07-12 | 广东钜联信息科技有限公司 | 一种区块链的pbft改进共识算法 |
WO2022188831A1 (zh) * | 2021-03-12 | 2022-09-15 | 腾讯科技(深圳)有限公司 | 一种基于区块链的区块共识方法以及相关设备 |
WO2023016428A1 (zh) * | 2021-08-12 | 2023-02-16 | 清华大学 | 一种拜占庭容错方法、装置、电子设备及存储介质 |
WO2023045620A1 (zh) * | 2021-09-24 | 2023-03-30 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、计算机设备以及存储介质 |
WO2023071373A1 (zh) * | 2021-10-30 | 2023-05-04 | 中国银联股份有限公司 | 一种区块链共识方法、装置、设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055064B (zh) * | 2023-03-17 | 2023-06-23 | 安徽中科晶格技术有限公司 | 区块链分片中多区块同时共识方法、系统、介质及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109447810A (zh) * | 2018-11-29 | 2019-03-08 | 杭州秘猿科技有限公司 | 并行区块链共识方法、系统、电子设备和计算机可读存储介质 |
CN110020859A (zh) * | 2019-03-28 | 2019-07-16 | 杭州秘猿科技有限公司 | 一种并行执行的区块链共识方法、装置及电子设备 |
CN111199485A (zh) * | 2020-01-02 | 2020-05-26 | 支付宝(杭州)信息技术有限公司 | 用于在区块链节点处进行交易数据处理的方法及装置 |
CN111523901A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
CN111526217A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360191B2 (en) * | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
CN112685796B (zh) * | 2021-03-12 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种基于区块链的区块共识方法以及相关设备 |
-
2021
- 2021-03-12 CN CN202110273266.3A patent/CN112685796B/zh active Active
-
2022
- 2022-03-10 WO PCT/CN2022/080103 patent/WO2022188831A1/zh unknown
- 2022-11-29 US US18/071,271 patent/US20230092484A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109447810A (zh) * | 2018-11-29 | 2019-03-08 | 杭州秘猿科技有限公司 | 并行区块链共识方法、系统、电子设备和计算机可读存储介质 |
CN110020859A (zh) * | 2019-03-28 | 2019-07-16 | 杭州秘猿科技有限公司 | 一种并行执行的区块链共识方法、装置及电子设备 |
CN111199485A (zh) * | 2020-01-02 | 2020-05-26 | 支付宝(杭州)信息技术有限公司 | 用于在区块链节点处进行交易数据处理的方法及装置 |
CN111523901A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
CN111526217A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112689848B (zh) * | 2019-06-28 | 2024-06-11 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN112689848A (zh) * | 2019-06-28 | 2021-04-20 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
WO2022188831A1 (zh) * | 2021-03-12 | 2022-09-15 | 腾讯科技(深圳)有限公司 | 一种基于区块链的区块共识方法以及相关设备 |
CN112887436A (zh) * | 2021-04-28 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、共识节点和流水线方式的区块链系统 |
CN113179272A (zh) * | 2021-04-28 | 2021-07-27 | 杭州丽冠科技有限公司 | 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 |
CN112887436B (zh) * | 2021-04-28 | 2021-08-03 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、共识节点和流水线方式的区块链系统 |
CN113760999A (zh) * | 2021-04-30 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113408010A (zh) * | 2021-07-14 | 2021-09-17 | 湖北央中巨石信息技术有限公司 | 基于区块链的异步共识方法及系统及装置及介质 |
CN113408010B (zh) * | 2021-07-14 | 2023-08-11 | 湖北央中巨石信息技术有限公司 | 基于区块链的异步共识方法及系统及装置及介质 |
WO2023011019A1 (zh) * | 2021-08-06 | 2023-02-09 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备、可读存储介质及计算机程序产品 |
CN113342838B (zh) * | 2021-08-06 | 2021-11-09 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN113342838A (zh) * | 2021-08-06 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
WO2023016428A1 (zh) * | 2021-08-12 | 2023-02-16 | 清华大学 | 一种拜占庭容错方法、装置、电子设备及存储介质 |
WO2023045620A1 (zh) * | 2021-09-24 | 2023-03-30 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、计算机设备以及存储介质 |
CN113610531B (zh) * | 2021-10-09 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN113610531A (zh) * | 2021-10-09 | 2021-11-05 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN114153827A (zh) * | 2021-10-11 | 2022-03-08 | 北京天德科技有限公司 | 一种基于区块链系统的交易数据移除方法 |
CN114153827B (zh) * | 2021-10-11 | 2023-01-10 | 北京天德科技有限公司 | 一种基于区块链系统的交易数据移除方法 |
WO2023071373A1 (zh) * | 2021-10-30 | 2023-05-04 | 中国银联股份有限公司 | 一种区块链共识方法、装置、设备及存储介质 |
CN114219650A (zh) * | 2022-02-21 | 2022-03-22 | 浙江数秦科技有限公司 | 一种低交易延迟的区块链共识方法 |
CN114745131A (zh) * | 2022-04-06 | 2022-07-12 | 广东钜联信息科技有限公司 | 一种区块链的pbft改进共识算法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022188831A1 (zh) | 2022-09-15 |
US20230092484A1 (en) | 2023-03-23 |
CN112685796B (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685796B (zh) | 一种基于区块链的区块共识方法以及相关设备 | |
US11128522B2 (en) | Changing a master node in a blockchain system | |
CN110383279B (zh) | 用于检测重放攻击的系统和方法 | |
US11501533B2 (en) | Media authentication using distributed ledger | |
WO2021244208A1 (zh) | 区块链的提案消息处理方法、装置、设备以及存储介质 | |
CN111427957B (zh) | 区块链投票信息校验方法、装置、设备以及存储介质 | |
US11080691B2 (en) | Fork-tolerant consensus protocol | |
CN110431577B (zh) | 用于检测重放攻击的系统和方法 | |
WO2021233049A1 (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
WO2023045620A1 (zh) | 一种交易数据处理方法、装置、计算机设备以及存储介质 | |
CN113326165B (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
US20230259938A1 (en) | Blockchain-based data processing method and apparatus, device, readable storage medium and computer program product | |
CN109194493B (zh) | 一种信息管理系统、方法及装置 | |
CN113055188A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN113255014B (zh) | 一种基于区块链的数据处理方法以及相关设备 | |
CN112767151B (zh) | 应用于区块链中验证节点的交易处理方法和装置 | |
US20230370285A1 (en) | Block-chain-based data processing method, computer device, computer-readable storage medium | |
WO2022121612A1 (zh) | 区块链网络的信息处理方法、装置、设备及存储介质 | |
KR20220074971A (ko) | 블록체인 기반 데이터 프로세싱 방법, 장치 및 디바이스, 그리고 판독가능 저장 매체 | |
WO2023168993A1 (zh) | 基于区块链的数据处理方法、装置、设备、介质及产品 | |
WO2023005500A1 (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
WO2024066974A1 (zh) | 基于区块链的数据处理方法、设备以及可读存储介质 | |
CN116862679B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN115796863A (zh) | 区块链系统的共识方法及相关设备 | |
CN117255130A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042053 Country of ref document: HK |