CN110647582B - 区块链网络共识校验的方法、装置、存储介质和计算机设备 - Google Patents
区块链网络共识校验的方法、装置、存储介质和计算机设备 Download PDFInfo
- Publication number
- CN110647582B CN110647582B CN201910875725.8A CN201910875725A CN110647582B CN 110647582 B CN110647582 B CN 110647582B CN 201910875725 A CN201910875725 A CN 201910875725A CN 110647582 B CN110647582 B CN 110647582B
- Authority
- CN
- China
- Prior art keywords
- block
- hash
- data
- transaction
- account book
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012795 verification Methods 0.000 title claims abstract description 34
- 238000004590 computer program Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种区块链网络共识校验的方法、装置、计算机可读存储介质和计算机设备。所述方法包括:获取区块中每一笔交易对应的交易数据,根据区块中全部交易对应的交易数据得到增量数据;进而计算增量数据的哈希值,并将增量数据的哈希值作为本区块内交易数据的特征值记录到区块头中;将区块头保存到账本之后,以利用区块头中记录的增量数据的哈希值进行共识校验。本申请提供的方案可以提高区块头交易数据的特征值的生成效率,由此构成的区块链中,共识校验的效率得以提高。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种区块链网络共识校验的方法、装置、计算机可读存储介质和计算机设备。
背景技术
区块链本身是一种数据的记录方式,与传统的数据记录方式不同的是,区块链将产生的数据分成一个个的数据块(即区块)记录,然后再根据区块的产生先后关联起来,形成区块链。
区块链网络中,针对新产生的交易数据进行记账之前,一般需要进行共识校验,共识校验的主要依据为区块的区块哈希,区块的区块哈希可以理解为新产生的交易数据与区块中的历史交易数据构成的新的状态树的树根,该树根可以通过新产生的交易数据的哈希值与区块中的历史交易数据的哈希值共同确定。
然而,由于区块中的历史交易数据可能较多,区块中全部交易数据构成的状态树庞大,传统的方法需要计算新构成的状态树中全部交易数据的哈希值,由此得到新的树根,该方式效率较低,导致区块链网络中的共识校验的效率较低。
发明内容
基于此,有必要针对传统区块链网络中的共识校验效率低的技术问题,提供一种区块链网络共识校验的方法、装置、计算机可读存储介质和计算机设备。
本发明一方面提供一种区块链网络共识校验的方法,包括:
获取区块中每一笔交易对应的交易数据;
根据所述区块中全部交易对应的交易数据,得到增量数据;
计算所述增量数据的哈希值;
将所述增量数据的哈希值记录到所述区块的区块头;
将所述区块头保存到账本,以利用所述区块头中记录的增量数据的哈希值进行共识校验。
本发明第二方面提供一种区块链网络共识校验的装置,包括:
数据获取模块,用于获取区块中每一笔交易对应的交易数据;
增量确定模块,用于根据所述区块中全部交易对应的交易数据,得到增量数据;
计算模块,用于计算所述增量数据的哈希值;
记录模块,用于将所述增量数据的哈希值记录到所述区块的区块头;
账本保存模块,用于将所述区块头保存到账本,以利用所述区块头中记录的增量数据的哈希值进行共识校验。
本发明第三方面提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述任一项方法的步骤。
本发明第四方面提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述任一项方法的步骤。
上述区块链网络共识校验的方法、装置、计算机可读存储介质和计算机设备,对于新产生的区块,通过获取区块中每一笔交易对应的交易数据,根据所述区块中全部交易对应的交易数据,得到增量数据;进而计算所述增量数据的哈希值,并将所述增量数据的哈希值,作为本区块内交易数据的特征值记录到区块头中;将新产生区块的区块头保存到账本之后,便可以利用区块头中记录的增量数据的哈希值进行共识校验。由于各个区块的区块头中,参与计算本区块内交易数据的特征值的数据量大大减少,因此提高了区块内交易数据的特征值的计算效率,进而提高了区块头的生成效率,由此构成的区块链中,各个区块的区块头均通过上述方法记录区块内交易数据的特征值,如此形成的区块链,可以显著提高区块链网络中涉及到的共识校验。
附图说明
图1为一个实施例中区块链网络共识校验的方法的应用环境图;
图2为另一个实施例中区块链网络共识校验的方法的应用环境图;
图3为一个实施例中区块的示意图;
图4为现有技术中区块中交易状态树树根的计算方法示意图;
图5为一个实施例中区块链网络共识校验的方法的流程示意图;
图6为另一个实施例中区块链网络共识校验的方法的流程示意图;
图7为一个实施例中区块链网络共识校验的装置的结构框图;
图8为一个实施例中计算机设备的结构框图;
图9为另一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中区块链网络共识校验的方法的应用环境图。参照图1,本申请实施例中区块链网络100包括多个节点101。多个节点101之间可以通过网络进行通信。
其中,多个节点101之间可以处于对等的地位,也可以处于不对等的地位,并且各个节点101既可作为服务器,又可以作为工作站,整个网络100可以不依赖专用的集中服务器,也没有专用的工作站。各个节点101既能充当网络服务的请求者,又对其它节点的请求做出响应。因此,本申请实施中的区块链网络共识校验的方法适用于区块链网络100中多个节点101中的每个节点。
其中,节点101可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。此外,节点101还可以是服务器,该服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本申请对节点101具体为何种设备并不做限定。
进一步地,该区块链网络100中多个节点101之间可以彼此知道身份,节点身份可以是节点名字、节点标识等可以表征节点在区块链网络100中的唯一性的信息,以实现多个节点101之间的通信和共识校验。
在一个实施例中,该区块链网络100可以是运行在互联网等公网的,每个节点101对其发出的信息需要进行签名,以保障信息传输的安全性;除此之外,在其他实施例中,该区块链网络100也可以是运行在专有网络中的,这种情况下,节点101对其发出的信息的签名过程可以简化。一般地,区块链网络100中每个节点101都有各自的私钥与公钥,公钥公开,私钥用于签名自身发出的信息。本申请对节点签名的具体方式不做限定。
进一步地,在区块链网络100中,每个节点101可以包含多个组件模块(可以理解为实现特定功能的功能模块),多个组件模块分别用于对交易信息进行不同的处理。
具体地,在一个实施例中,如图2所示,每个节点101的组件模块具体包括:接口模块、网络路由模块、共识模块、虚拟机模块、账本模块等。
其中,接口模块用于与接入区块链网络的客户端进行信息收发。网络路由模块用于实现节点101之间的连接通信。虚拟机模块可以理解为一组程序规则,该程序规则可以是固定的,虚拟机模块中的程序规则还可以是允许用户自行编写的,由此就可以扩展区块链网络的功能,比如以太坊的智能合约的功能;通过虚拟机模块使区块链中可以实现各种各样的业务功能,例如通过区块链来记账、记录订单、记录众筹账户、记录物流信息、记录供应链信息等。共识模块用于对包含交易数据的区块进行一致性校验。账本模块用于将通过共识校验的区块一个个的链接起来,形成区块链。
基于图2所示的区块链网络100,从用户通过客户端发起一个新的交易起,到在各个节点101的账本中生成对应的区块,这一过程需要多个节点以及各个节点中多个组件模块的共同参与,该过程可以包括:
(1)节点1通过接口模块接收客户端提交的交易信息。(2)节点1收到本次交易信息后,本次交易信息会进入共识模块,由共识模块进行处理。(3)节点1针对本次交易信息执行对应的虚拟机交易逻辑。(4)节点1将本次交易信息放入最新的区块的交易列表中,并针对本次交易信息执行账本校验。(5)节点1在本地完成上述操作后,得到本次交易信息的执行结果,向客户端返回交易执行结果。(6)节点1向其他节点广播包含本次交易信息的区块信息。(7)节点2接收节点1广播的区块信息,由共识模块进行处理。(8)节点2针对本次交易信息执行对应的虚拟机交易逻辑。(9)节点2针对本次交易信息执行账本校验。(10)节点2向其他节点广播账本校验结果。(11)各个节点接收其他节点广播的账本校验结果。(12)根据其他节点广播的账本校验结果,进行本次交易的共识投票,判断是否达成共识。(13)如达成共识,节点1向客户端返回本次交易信息对应的共识结果。(14)在达成共识之后,各个节点还将包含本次交易信息的区块保存至账本,即将包含本次交易信息的区块加入到区块链中。其中,客户端可以是APP,也可以浏览器。对于客户端的形式不作限定。通过上述过程,完成本次交易的区块链记账。
在区块链网络100中,每个节点101均维护有一个账本,共识模块用于执行共识机制,共识机制可以理解是一种规则,网络中每个节点都按这个规则去确认各节点的账本数据,以保证区块链网络100中各个节点101在的账本数据一致。
进一步地,参见图3所示,图3是一个区块的示意图,区块包括区块头和区块主体,区块主体用于记录本区块包含的若干交易数据。其中区块头可以包括版本号、时间戳、前一个区块的区块哈希、本区块的区块主体中所有交易数据的特征值,在一些例子中,该特征值可以为梅克尔树根。其中,一个区块的区块哈希由其前一个区块的区块哈希和本区块的所有交易数据的特征值共同哈希确定的。也即是,每个区块的区块头中,既保存有本区块的交易数据的特征值,同时还保存有其前一个区块的区块哈希。节点的账本模块在将区块一个个的链接起来形成区块链时,可以通过区块头中记录的区块哈希来串联区块,这样每个区块都是链接起来的,如果修改任一区块中的交易数据,那么该区块的区块哈希将发生变化,该区块后面的区块的区块哈希就会发生变化。因此,区块链网络100中,节点之间可以利用最后一个区块的区块头中记录的信息进行账本数据的一致性校验。
在一些情况下,区块头中时间戳可以表示区块的生成时间信息或者区块的最后一次更新信息。其中,哈希值可以理解为通过哈希函数对一段信息计算后得出一段摘要信息,该摘要信息与原始信息是唯一对应的。梅克尔树是一种二叉树的数据结构,最底层是叶子,每两片相邻的叶子联合起来做一次哈希计算成为上层节点的内容,持续这样的计算就产生了一个哈希值,即梅克尔树根。通过将梅克尔树根放在区块头,可以使得区块链网络中的大多数节点只需要保存区块头信息即可,由于区块头的字节数较少,多个区块的区块头也不至于占用节点的太多存储空间,由此可以节省网络中节点的存储要求。
进一步地,图4为现有方法中交易状态树树根的计算方法示意图,参见图4所示,区块链网络100中的每个节点101,执行每一笔交易时会产生新的状态数据,传统的机制下,产生的状态数据需要与区块中的当前状态树合并,生成一棵新的交易状态树,计算新的交易状态树的树根,将新的交易状态树的树根作为区块中所有交易数据的特征值记录到区块的区块头中。例如交易0、交易1、交易2分别产生数据0、数据1、数据2,并且数据0、数据1、数据2均需要与区块中的当前状态树中的历史数据合并,生成一棵新的交易状态树,计算新的交易状态树的树根,将新的交易状态树的树根作为本区块中所有交易数据的特征值记录到区块的区块头中。由此得到区块链的每一个区块的区块头,此后通过区块头的该特征值将实现共识校验。然而由于区块中的历史数据可能较较多,状态树庞大,针对新产生的交易数据,传统计算状态树的树根的效率较低,因此导致各个节点101的区块中交易数据的特征值的确定效率较低,因此存在区块链网络100中共识校验的效率较低的缺陷。
本申请实施例中,区块链网络100中的每个节点101,对于新产生的区块,通过获取区块中每一笔交易对应的交易数据,根据所述区块中全部交易对应的交易数据,得到增量数据;进而计算所述增量数据的哈希值,并将所述增量数据的哈希值,作为本区块内交易数据的特征值记录到区块头中;将新产生区块的区块头保存到账本之后,便可以利用区块头中记录的增量数据的哈希值进行共识校验。由于各个区块的区块头中,参与计算本区块内交易数据的特征值的数据量大大减少,因此提高了每个节点101区块内交易数据的特征值的计算效率,进而提高了每个节点101区块头的生成效率,由此构成的区块链中,各个区块的区块头均通过上述方法记录区块内交易数据的特征值,如此形成的区块链,可以显著提高区块链网络100中需要进行的共识校验。
基于上述应用环境的说明,提供了一种区块链网络共识校验的方法。在一个实施例中,如图5所示,以该区块链网络共识校验的方法应用于上述图1中的任一节点101来举例说明。该区块链网络共识校验的方法可以包括如下步骤:
S501,获取区块中每一笔交易对应的交易数据。
其中,区块中的交易可以是任何通过区块链网络完成记账的事务。针对每一笔交易,节点需要执行的交易处理包括但不限于接口接收交易信息、共识校验、虚拟机执行逻辑、账本校验、签名、广播执行结果、接收其他节点的共识校验结果、共识投票、向客户端返回执行结果、将执行结果信息保存至账本等。交易对应的交易数据可以是交易结果数据,例如:用户A向用户B转账100元;在一些情况下,交易数据中还可以包含关键交易处理信息,例如本次交易的共识校验结果信息。校验数据的具体内容可以根据实际情况确定,本申请实施例对此不作限定。
本申请实施例中,区块链网络中的节点可以实时检测本地新生成的区块,当该区块中交易数据量达到设定数据量时,执行获取区块中每一笔交易对应的交易数据的步骤,由此可以减少获取区块中交易数据的次数,减轻节点的负担。
S502,根据区块中全部交易对应的交易数据,得到增量数据。
本申请实施例中,增量数据可以理解为由区块中每一笔交易产生的状态数据,可以包括新增加的交易数据,或者发生变化的交易数据,而不应狭义的理解为区块中新增加的交易数据。
在一个区块中可能包含多个交易对应的交易数据,本发明实施例中,将区块中包含的多个交易对应的交易数据均作为增量数据,将这些增量数据参与当前区块的交易数据特征值的计算当中,以全面反应当前区块中的交易数据的特征信息。
S503,计算上述步骤确定出的增量数据的哈希值。
本步骤中,可以采用任一哈希函数来计算增量数据的哈希值。采用的哈希函数需要具有如下特点:同样的原始信息用同一个哈希函数总能得到相同的摘要信息;原始信息任何变化都会哈希出不一样的摘要信息;并且从摘要信息无法逆向推算出原始信息。
通过计算增量数据的哈希值,可以得到增量数据对应的摘要信息,进一步压缩增量信息的数据量,便于在区块链中存储和共识校验。
S504,将上述步骤计算出的增量数据的哈希值记录到所述区块的区块头。
参见上述应用场景中描述的,区块可以包括区块头和区块主体,与现有的区块不同之处包括,本申请实施例中,区块主体只需记录本区块内的若干交易产生的增量数据,而无需存储复杂的由交易数据形成的状态树,因此减轻了区块的数据存储压力。另外,本申请实施例中,在区块头中需要记录通过上述步骤计算出的增量数据的哈希值,以及记录有当前区块的前一区块的区块哈希。其中,前一区块的区块哈希可以根据该前一区块的增量数据的哈希值以及该前一区块的前一区块的区块哈希得到。例如图3所示的区块链中,区块n的区块哈希可以根据区块n的增量数据的哈希值和区块n-1的区块哈希共同哈希得到,区块n+1的区块哈希可以根据区块n+1的增量数据的哈希值和区块n的区块哈希共同哈希得到。
参考图6所示,在一个示例中,在一个区块中记录有交易0、交易1、交易2的交易数据,具体的,交易0、交易1、交易2分别产生的交易数据为数据0、数据1、数据2,通过本申请上述实施例的方法,无需将数据0、数据1、数据2与交易状态树中的历史数据合并以计算树根的哈希,只需对数据0、数据1、数据2计算哈希,将得到的哈希值作为区块中交易0、交易1和交易2的交易数据的特征值保存到区块头中,由此可以显著提高区块中交易数据的特征值的计算效率。
S505,将记录有区块中增量数据的哈希值的区块头保存到账本,以利用区块头中记录的增量数据的哈希值进行共识校验。
本申请实施例中,每个节点保存的账本均为区块链数据结构的账本,账本中可以存储若干个交易数据,并且所有交易数据进可以按照区块的形式存储,区块之间按照特定的规则链接成一条链,结合区块链的共识机制,以保证交易数据的安全性。
在一些实施例中,区块链网络中的某些节点可以不存储全量交易数据,而保存数据量较小的区块头信息即可,由于区块头中包含了代表本区块交易数据的特征值的哈希值,即上述步骤计算的增量数据的哈希值,还包含了前一区块的区块哈希,因此可以实现最小化节点存储要求,并且保证了链上数据的安全性。
基于上述实施例的区块链网络共识校验的方法,在区块链网络中,每个节点处可以对于新产生的区块,通过获取区块中每一笔交易对应的交易数据,根据所述区块中全部交易对应的交易数据,得到增量数据;进而计算所述增量数据的哈希值,并将所述增量数据的哈希值,作为本区块内交易数据的特征值记录到区块头中;将新产生区块的区块头保存到账本之后,便可以利用区块头中记录的增量数据的哈希值进行共识校验。由于各个区块中,参与计算本区块内交易数据的特征值的数据量大大减少,因此提高了区块的区块头的生成效率,由此构成的区块链中,各个区块的区块头均通过上述方法记录区块内交易数据的特征值,如此形成的区块链,可以显著提高区块链网络中的共识校验效率。
在一个实施例中,节点处生成的区块包括区块头和区块主体,区块主体用于存储上述的增量数据;区块头中还记录有前一区块的区块哈希;前一区块的区块哈希根据其增量数据的哈希值以及再前一区块的区块哈希得到。例如图3所示的区块链中,区块n的区块哈希可以根据区块n的增量数据的哈希值和区块n-1的区块哈希得到,区块n+1的区块哈希可以根据区块n+1的增量数据的哈希值和区块n的区块哈希得到。
进一步地,参考图3或者图4所示,本申请实施例的区块头中,还可以记录有版本号和时间戳,版本号为区块链中相关区块协议的版本信息,时间戳可以用于表现区块的生成时间,在其他情况下,时间戳还可以表现区块中最后一次交易的执行时间信息。
在一些实施例中,当各个节点处于对等地位时,或者节点为全量数据节点(全量数据节点指的是需要存储完整的区块主体的节点)时,还可以将区块整体保存到本地账本,即将区块的区块头和区块主体一并保存到账本。
基于上述步骤得到的账本之后,可以利用各个区块的区块头中记录的增量数据的哈希值进行共识校验。其中共识校验可以包括新的交易数据记账之前的账本校验,也可以包括对交易校验,防止区块中的交易数据被篡改。在一个实施例中,利用各个区块的区块头中记录的增量数据的哈希值进行的共识校验包括:利用所述区块头中记录的增量数据的哈希值,对区块链网络中各个节点的账本进行账本一致性校验。
进一步地,在一个实施例中,利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验具体可以包括:确定账本中的末位区块(即最后上链的区块);获取所述末位区块的区块头中记录的增量数据的哈希值以及前一区块的区块哈希;根据所述增量数据的哈希值和前一区块的区块哈希,计算所述末位区块的区块哈希,作为第一区块哈希;向区块链网络中的其他节点广播所述第一区块哈希,以触发所述其他节点比对所述第一区块哈希和第二区块哈希;所述第二哈希值为所述其他节点的账本中末位区块的区块哈希;接收所述其他节点返回的所述比对结果;根据所述比对结果得到所述账本校验结果。
在一个示例中:节点1确定本地的账本中的末位区块为区块1_n;获取区块1_n的区块头中记录的增量数据的哈希值10以及区块1_n-1(区块1_n的前一区块)的区块哈希;根据哈希值10以及区块1_n-1的区块哈希,计算区块1_n的区块哈希;向区块链网络中的其他节点广播区块1_n的区块哈希;节点2收到节点1广播的区块1_n的区块哈希之后,比对区块1_n的区块哈希和区块2_n的区块哈希;区块2_n为节点2本地的账本中的末位区块,并将比对结果广播出去;节点1接收节点2返回的比对结果,可以得到节点2的账本数据是否与本地的账本数据一致,通过这种方法,节点1接收区块链网络中其他节点返回的比对结果,可以得到其他节点的账本数据是否与本地账本数据一致,由此得到账本校验结果。
在一些实施例中,节点根据其他节点返回的比对结果得到账本校验结果的具体实现方式可以包括:若超过设定比例的节点返回的比对结果为一致,即区块链网络中超过设定比例的节点的账本数据与本地账本数据一致时,则账本校验通过,例如超过三分之二的节点的账本数据与本地账本数据一致时,则确认账本校验通过。可以理解的,在其他实施例中,也可以是区块链网络中全部节点的比对结果均为一致时,才认为账本校验通过,进一步提高账本数据的可靠性。对于具体共识校验的规则,本申请实施例不作限定。
应该理解的是,上述实施例中区块链网络共识校验的方法的流程示意图中,各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述实施例中区块链网络共识校验的方法的流程示意图中的至少一部分步骤,可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
基于与上述实施例中的区块链网络共识校验的方法相同的思想,本文还提供区块链网络共识校验的装置。
在一个实施例中,如图7所示,本实施例的区块链网络共识校验的装置001可以适用于区块链网络100中的任一节点101,该区块链网络共识校验的装置001包括:
数据获取模块701,用于获取区块中每一笔交易对应的交易数据;
增量确定模块702,用于根据所述区块中全部交易对应的交易数据,得到增量数据;
计算模块703,用于计算所述增量数据的哈希值;
记录模块704,用于将所述增量数据的哈希值记录到所述区块的区块头;
账本保存模块705,用于将所述区块头保存到账本,以利用所述区块头中记录的增量数据的哈希值进行共识校验。
在一个实施例中,所述区块包括区块头和区块主体,所述区块主体用于存储所述增量数据;所述区块头中还记录有前一区块的区块哈希;所述前一区块的区块哈希根据所述前一区块的增量数据的哈希值以及所述前一区块的前一区块的区块哈希得到。
在一个实施例中,所述区块头中还记录有版本号和时间戳,所述时间戳用于标识所述区块的生成时间。
在一个实施例中,所述账本保存模块705,还用于将所述区块的区块头和区块主体一并保存到账本。
在一个实施例中,上述区块链网络共识校验的装置001还包括共识模块,该共识模块用于利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验。
在一个实施例中,上述共识模块,具体用于利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验,包括:
确定账本中的末位区块;获取所述末位区块的区块头中记录的增量数据的哈希值以及前一区块的区块哈希;根据所述增量数据的哈希值和前一区块的区块哈希,计算所述末位区块的区块哈希,作为第一区块哈希;向区块链网络中的其他节点广播所述第一区块哈希,以触发所述其他节点比对所述第一区块哈希和第二区块哈希;所述第二哈希值为所述其他节点的账本中末位区块的区块哈希;接收所述其他节点返回的所述比对结果;根据所述比对结果得到所述账本校验结果。
在一个实施例中,上述共识模块,可以在超过设定比例的节点返回的所述比对结果为一致时,确定所述账本校验通过。
通过上述的区块链网络共识校验的装置,对于新产生的区块,通过获取区块中每一笔交易对应的交易数据,根据所述区块中全部交易对应的交易数据,得到增量数据;进而计算所述增量数据的哈希值,并将所述增量数据的哈希值,作为本区块内交易数据的特征值记录到区块头中;将新产生区块的区块头保存到账本之后,便可以利用区块头中记录的增量数据的哈希值进行共识校验。由于各个区块的区块头中,参与计算本区块内交易数据的特征值的数据量大大减少,因此提高了区块内交易数据的特征值的计算效率,进而提高了区块头的生成效率,由此构成的区块链中,各个区块的区块头均通过上述方法记录区块内交易数据的特征值,如此形成的区块链,可以显著提高区块链网络中涉及到的共识校验
图8示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的节点101。如图8所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,处理器用于提供计算和控制能力;存储器包括非易失性存储介质、内存储器,该非易失性存储介质存储有操作系统和计算机程序,该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境;网络接口用于与外部的节点101通过网络连接通信;该计算机程序被处理器执行时以实现区块链网络共识校验的方法。
可选地,参见图9所示,该计算机设备还可以包括通过系统总线连接的显示屏和输入装置。显示屏可以是液晶显示屏或者电子墨水显示屏;输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8、图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的区块链网络共识校验的装置可以实现为一种计算机程序的形式,计算机程序可在如图8或者图9所示的计算机设备上运行。计算机设备的存储器中可存储组成该区块链网络共识校验的装置的各个程序模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请对应实施例的区块链网络共识校验的方法中的步骤。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行步骤:
获取区块中每一笔交易对应的交易数据;根据所述区块中全部交易对应的交易数据,得到增量数据;计算所述增量数据的哈希值;将所述增量数据的哈希值记录到所述区块的区块头;将所述区块头保存到账本,以利用所述区块头中记录的增量数据的哈希值进行共识校验。
在一些实施例中,所述区块包括区块头和区块主体,所述区块主体用于存储所述增量数据;所述区块头中还记录有前一区块的区块哈希;所述前一区块的区块哈希根据所述前一区块的增量数据的哈希值以及所述前一区块的前一区块的区块哈希得到。
在一些实施例中,所述区块头中还记录有版本号和时间戳,所述时间戳用于标识所述区块的生成时间。
在一个实施例中,上述计算机设备中,计算机程序被处理器执行时,使得处理器执行步骤:将所述区块的区块头和区块主体一并保存到账本。
在一个实施例中,上述计算机设备中,计算机程序被处理器执行时,使得处理器执行步骤:利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验。
在一个实施例中,上述计算机设备中,计算机程序被处理器执行时,使得处理器执行步骤:确定账本中的末位区块;获取所述末位区块的区块头中记录的增量数据的哈希值以及前一区块的区块哈希;根据所述增量数据的哈希值和前一区块的区块哈希,计算所述末位区块的区块哈希,作为第一区块哈希;向区块链网络中的其他节点广播所述第一区块哈希,以触发所述其他节点比对所述第一区块哈希和第二区块哈希;所述第二哈希值为所述其他节点的账本中末位区块的区块哈希;接收所述其他节点返回的所述比对结果;根据所述比对结果得到所述账本校验结果。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行步骤:
获取区块中每一笔交易对应的交易数据;根据所述区块中全部交易对应的交易数据,得到增量数据;计算所述增量数据的哈希值;将所述增量数据的哈希值记录到所述区块的区块头;将所述区块头保存到账本,以利用所述区块头中记录的增量数据的哈希值进行共识校验。
在一些实施例中,所述区块包括区块头和区块主体,所述区块主体用于存储所述增量数据;所述区块头中还记录有前一区块的区块哈希;所述前一区块的区块哈希根据所述前一区块的增量数据的哈希值以及所述前一区块的前一区块的区块哈希得到。
在一些实施例中,所述区块头中还记录有版本号和时间戳,所述时间戳用于标识所述区块的生成时间。
在一个实施例中,上述计算机可读存储介质中,计算机程序被处理器执行时,使得处理器执行步骤:将所述区块的区块头和区块主体一并保存到账本。
在一个实施例中,上述计算机可读存储介质中,计算机程序被处理器执行时,使得处理器执行步骤:利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验。
在一个实施例中,上述计算机可读存储介质中,计算机程序被处理器执行时,使得处理器执行步骤:确定账本中的末位区块;获取所述末位区块的区块头中记录的增量数据的哈希值以及前一区块的区块哈希;根据所述增量数据的哈希值和前一区块的区块哈希,计算所述末位区块的区块哈希,作为第一区块哈希;向区块链网络中的其他节点广播所述第一区块哈希,以触发所述其他节点比对所述第一区块哈希和第二区块哈希;所述第二哈希值为所述其他节点的账本中末位区块的区块哈希;接收所述其他节点返回的所述比对结果;根据所述比对结果得到所述账本校验结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种区块链网络共识校验的方法,包括:
获取区块中每一笔交易对应的交易数据;
根据所述区块中全部交易对应的交易数据,得到增量数据;所述全部交易对应的交易数据是所述区块的交易状态树中的历史数据;所述增量数据表示所述区块相对于所述历史数据发生变化的状态数据;
计算所述增量数据的哈希值;
将所述增量数据的哈希值记录到所述区块的区块头;所述区块头中还包括所述区块的前一区块的区块哈希;所述增量数据的哈希值和所述前一区块的区块哈希用于确定所述区块的区块哈希;
将所述区块头保存到账本,确定所述账本中的末位区块;
当所述末位区块包括所述区块,根据所述增量数据的哈希值和所述前一区块的区块哈希,计算所述末位区块的区块哈希,作为第一区块哈希;
向区块链网络中的其他节点广播所述第一区块哈希,以触发所述其他节点比对所述第一区块哈希和第二区块哈希,并返回对比结果;所述第二区块哈希为所述其他节点的账本中末位区块的区块哈希;
根据所述其他节点返回的比对结果得到针对所述账本的账本校验结果。
2.根据权利要求1所述的方法,其特征在于,所述区块包括区块主体,所述区块主体用于存储所述增量数据;
所述前一区块的区块哈希根据所述前一区块的增量数据的哈希值以及所述前一区块的前一区块的区块哈希得到。
3.根据权利要求2所述的方法,其特征在于,所述区块头中还记录有版本号和时间戳,所述时间戳用于标识所述区块的生成时间。
4.根据权利要求2所述的方法,其特征在于,所述将所述增量数据的哈希值记录到所述区块的区块头之后,还包括:
将所述区块的区块头和区块主体一并保存到所述账本。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验。
6.根据权利要求1所述的方法,其特征在于,所述根据所述其他节点返回的比对结果得到针对所述账本的账本校验结果,包括:
接收所述其他节点返回的比对结果;
若超过设定比例的节点返回的所述比对结果为一致,则所述账本校验通过。
7.一种区块链网络共识校验的装置,包括:
数据获取模块,用于获取区块中每一笔交易对应的交易数据;
增量确定模块,用于根据所述区块中全部交易对应的交易数据,得到增量数据;所述全部交易对应的交易数据是所述区块的交易状态树中的历史数据;所述增量数据表示所述区块相对于所述历史数据发生变化的状态数据;
计算模块,用于计算所述增量数据的哈希值;
记录模块,用于将所述增量数据的哈希值记录到所述区块的区块头;所述区块头中还包括所述区块的前一区块的区块哈希;所述增量数据的哈希值和所述前一区块的区块哈希用于确定所述区块的区块哈希;
账本保存模块,用于将所述区块头保存到账本;
共识模块,用于确定所述账本中的末位区块;当所述末位区块包括所述区块,根据所述增量数据的哈希值和所述前一区块的区块哈希,计算所述末位区块的区块哈希,作为第一区块哈希;向区块链网络中的其他节点广播所述第一区块哈希,以触发所述其他节点比对所述第一区块哈希和第二区块哈希,并返回对比结果;所述第二区块哈希为所述其他节点的账本中末位区块的区块哈希;根据所述其他节点返回的比对结果得到针对所述账本的账本校验结果。
8.根据权利要求7所述的装置,其特征在于,所述区块包括区块主体,所述区块主体用于存储所述增量数据;所述前一区块的区块哈希根据所述前一区块的增量数据的哈希值以及所述前一区块的前一区块的区块哈希得到。
9.根据权利要求8所述的装置,其特征在于,所述区块头中还记录有版本号和时间戳,所述时间戳用于标识所述区块的生成时间。
10.根据权利要求8所述的装置,其特征在于,
所述账本保存模块,还用于将所述区块的区块头和区块主体一并保存到所述账本。
11.根据权利要求7至10任一所述的装置,其特征在于,
所述共识模块,还用于利用所述区块头中记录的增量数据的哈希值,对区块链网络中的分布式账本进行账本一致性校验。
12.根据权利要求7所述的装置,其特征在于,
所述共识模块,还用于接收所述其他节点返回的比对结果;若超过设定比例的节点返回的所述比对结果为一致,则所述账本校验通过。
13.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910875725.8A CN110647582B (zh) | 2019-09-17 | 2019-09-17 | 区块链网络共识校验的方法、装置、存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910875725.8A CN110647582B (zh) | 2019-09-17 | 2019-09-17 | 区块链网络共识校验的方法、装置、存储介质和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110647582A CN110647582A (zh) | 2020-01-03 |
CN110647582B true CN110647582B (zh) | 2024-01-02 |
Family
ID=69010581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910875725.8A Active CN110647582B (zh) | 2019-09-17 | 2019-09-17 | 区块链网络共识校验的方法、装置、存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647582B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111131329A (zh) * | 2020-01-04 | 2020-05-08 | 天津金农企业管理咨询合伙企业(有限合伙) | 区块链系统的数据共识方法、装置及硬件设备 |
CN111274313B (zh) * | 2020-01-12 | 2023-05-30 | 杭州复杂美科技有限公司 | 分段共识方法、设备和存储介质 |
CN111447069B (zh) * | 2020-03-23 | 2021-10-26 | 腾讯科技(深圳)有限公司 | 一种基于区块链的低频访问数据处理方法 |
CN111523896B (zh) * | 2020-05-06 | 2023-05-30 | 杭州复杂美科技有限公司 | 防攻击方法、设备和存储介质 |
CN111523897B (zh) * | 2020-05-06 | 2023-04-07 | 杭州复杂美科技有限公司 | 防攻击方法、设备和存储介质 |
CN111339574B (zh) * | 2020-05-19 | 2021-03-16 | 卓尔智联(武汉)研究院有限公司 | 区块数据处理方法、装置、计算机设备和存储介质 |
CN111339566B (zh) * | 2020-05-19 | 2020-10-23 | 卓尔智联(武汉)研究院有限公司 | 区块摘要方法、装置、计算机设备和存储介质 |
CN112150149A (zh) * | 2020-09-24 | 2020-12-29 | 深圳市中装智链科技有限公司 | 基于区块链的数据追溯方法、装置、计算机设备及存储介质 |
CN112199716B (zh) * | 2020-09-30 | 2024-04-02 | 卓望数码技术(深圳)有限公司 | 区块链的出块方法、装置、设备及存储介质 |
CN112527896A (zh) * | 2020-11-30 | 2021-03-19 | 东软集团股份有限公司 | 区块链账本数据的处理方法、装置、存储介质及电子设备 |
CN112541825A (zh) * | 2020-12-09 | 2021-03-23 | 网易(杭州)网络有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
CN112767150A (zh) * | 2021-01-15 | 2021-05-07 | 北京展鸿软通科技股份有限公司 | 基于区块快速统计汇总的方法及系统 |
CN113610529A (zh) * | 2021-08-24 | 2021-11-05 | 上海点融信息科技有限责任公司 | 联盟链的区块存储、获取方法、装置、节点和存储介质 |
TWI787972B (zh) * | 2021-08-24 | 2022-12-21 | 財團法人中華顧問工程司 | 利用梅克爾樹結合區塊鏈公鏈以防止資料竄改偽造之方法 |
CN114928650B (zh) * | 2022-04-26 | 2023-06-30 | 成都质数斯达克科技有限公司 | 一种区块链数据共识方法、装置、设备及可读存储介质 |
CN114723564B (zh) * | 2022-06-01 | 2022-10-28 | 杭州天谷信息科技有限公司 | 一种区块链生成方法以及区块链结构 |
CN115378715A (zh) * | 2022-08-24 | 2022-11-22 | 河北中废通网络技术有限公司 | 一种基于区块链的链式信息加密传递方法、装置 |
CN117254975A (zh) * | 2023-11-14 | 2023-12-19 | 深圳市嘉合劲威电子科技有限公司 | 一种基于区块链的数据防伪方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566124A (zh) * | 2017-08-24 | 2018-01-09 | 深圳市易成自动驾驶技术有限公司 | 基于抽签机制的共识建立方法、区块链系统及存储介质 |
WO2018175540A1 (en) * | 2017-03-24 | 2018-09-27 | Alibaba Group Holding Limited | Method and apparatus for consensus verification |
CN109274377A (zh) * | 2018-08-22 | 2019-01-25 | 泰康保险集团股份有限公司 | 区块链网络的数据处理方法、装置、介质及电子设备 |
-
2019
- 2019-09-17 CN CN201910875725.8A patent/CN110647582B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018175540A1 (en) * | 2017-03-24 | 2018-09-27 | Alibaba Group Holding Limited | Method and apparatus for consensus verification |
CN107566124A (zh) * | 2017-08-24 | 2018-01-09 | 深圳市易成自动驾驶技术有限公司 | 基于抽签机制的共识建立方法、区块链系统及存储介质 |
CN109274377A (zh) * | 2018-08-22 | 2019-01-25 | 泰康保险集团股份有限公司 | 区块链网络的数据处理方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110647582A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647582B (zh) | 区块链网络共识校验的方法、装置、存储介质和计算机设备 | |
US11556516B2 (en) | Distributed blockchain data storage under account model | |
US20210026740A1 (en) | Data backup method, storage medium, and computing device | |
US11526488B2 (en) | Distributed blockchain data storage under account model | |
CN109087024B (zh) | 关于电子票据的数据处理方法、装置、存储介质和设备 | |
CN110599263B (zh) | 用户互动数据处理方法、装置、存储介质和计算机设备 | |
CN111177302B (zh) | 业务单据处理方法、装置、计算机设备和存储介质 | |
CN109493048B (zh) | 基于区块链的财务记账方法、装置、设备及存储介质 | |
CN104104717A (zh) | 投放渠道数据统计方法及装置 | |
CN110597913B (zh) | 交易信息跟踪方法、装置、系统、存储介质和计算机设备 | |
WO2023011022A1 (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN110941676B (zh) | 一种配置方法、装置、设备及介质 | |
US11100094B2 (en) | Taking snapshots of blockchain data | |
US20210049156A1 (en) | Taking snapshots of blockchain data | |
CN111488626A (zh) | 基于区块链的数据处理方法、装置、设备及介质 | |
CN114443908A (zh) | 图数据库构建方法、系统、终端及存储介质 | |
TWI608434B (zh) | Decentralized electronic transaction record method and system with traceability verification mechanism | |
CN115168499B (zh) | 数据库表的分片方法、装置、计算机设备和存储介质 | |
CN117010889A (zh) | 数据处理方法、装置及设备、介质、产品 | |
CN111625606B (zh) | 一种联盟链数据处理方法、装置以及电子设备 | |
CN112035471B (zh) | 一种事务处理方法及计算机设备 | |
CN112860755B (zh) | 业务标识生成方法、装置、计算机设备和介质 | |
CN111339574B (zh) | 区块数据处理方法、装置、计算机设备和存储介质 | |
CN111061567B (zh) | 资源数据处理方法、装置、计算机可读存储介质和计算机设备 | |
CN112035850B (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 |