CN110692078A - 基于区块链的交易数据处理方法、设备和存储介质 - Google Patents
基于区块链的交易数据处理方法、设备和存储介质 Download PDFInfo
- Publication number
- CN110692078A CN110692078A CN201880017223.5A CN201880017223A CN110692078A CN 110692078 A CN110692078 A CN 110692078A CN 201880017223 A CN201880017223 A CN 201880017223A CN 110692078 A CN110692078 A CN 110692078A
- Authority
- CN
- China
- Prior art keywords
- block
- account group
- chunk
- node
- head
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于区块链的交易数据处理方法、设备和存储介质。该方法应用于区块链网络中第一账户组对应的第一节点,区块链网络中包括G个账户组和G×G个区块链,任一账户组到另一个任一账户组对应于一条区块链;该方法包括:第一节点接收由第一账户组到第二账户组的账户之间的交易形成的第一交易信息;第一账户组和第二账户组为区块链网络中的任一账户组;第一节点根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链(102)。该方法中第一节点只需要保存与该第一账户组相关的区块链的区块。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链的交易数据处理方法、设备和存储介质。
背景技术
经典的区块链技术是一种去中心化的公共账本技术。一条区块链一般是无限个有序的按时间排列的交易区块组成。区块链技术确保账本没有双花问题,账本不可以更改,以及网络里面所有节点能达成共识拥有共同的账本。
现有的区块链技术里,采用的是单区块链结构,所有的交易都在一条区块链上记录,网络里的每个节点都需要保存一条完整的区块链,也就是需要保存所有的历史交易。由于每个节点的网络容量是有限的,这极大的限制了当前区块链的单位时间交易数量。
发明内容
本发明提供一种基于区块链的交易数据处理方法、设备和存储介质,以提高区块链系统单位时间交易速度。
第一方面,本发明提供一种基于区块链的交易数据处理方法,包括:
所述方法应用于第一节点,所述第一节点为区块链网络中第一账户组对应的节点,所述区块链网络中包括G个账户组和G×G个区块链,任一所述账户组到另一个任一所述账户组对应于一条区块链,所述第一账户组为所述区块链网络中的任一账户组,G为大于1的整数;所述方法包括:
所述第一节点接收第一交易信息;所述第一交易信息是由所述第一账户组到第二账户组的账户之间的交易形成的;所述第二账户组为所述区块链网络中的任一账户组;
所述第一节点根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链。
第二方面,本发明实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行第一方面中任一项所述的方法。
第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法。
本发明实施例提供的基于区块链的交易数据处理方法、设备和存储介质,第一节点接收第一交易信息;所述第一交易信息是由所述第一账户组到第二账户组的账户之间的交易形成的;第一账户组和第二账户组为所述区块链网络中的任一账户组;第一节点根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链由于账户组,第一节点为第一账户组对应的节点,该第一节点仅需保存与其相关的历史交易,只需要保存所有和第一账户组相关的交易信息即可知道该第一账户组内所有账户的余额,即只需要保存与该第一账户组相关的区块链的区块,同时不同的区块链可以并行交易,在网络容量有限的情况下,提高了区块链系统的单位时间交易速度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本发明提供的基于区块链的交易数据处理方法一实施例的流程示意图;
图2是本发明提供的基于区块链的交易数据处理方法一实施例的区块链示意图;
图3是本发明提供的基于区块链的交易数据处理方法一实施例的区块流示意图;
图4是本发明提供的基于区块链的交易数据处理方法另一实施例的区块链示意图;
图5是本发明提供的电子设备实施例的示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本发明的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先对本发明所涉及的应用场景进行介绍:
本发明实施例提供的基于区块链的交易数据处理方法,应用于区块链网络中,该区块链网络对应一种可扩展的去中心化密码币系统。该区块链网络中包括多个节点,G个账户组和G×G个区块链,任一个账户组对应至少一个节点,任一条区块链为一个账户组到另一账户组的账户之间的交易生成的区块链接而成的,其中上述两个账户组可以相同,或不同,分别为G个账户组中任一账户组,G为大于1的整数。
每个账户组对应的节点只需要保存2G-1条区块链的区块,对于其他的链只需要保存区块的区块头。
下面以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明提供的基于区块链的交易数据处理方法一实施例的流程示意图。本实施例的执行主体为第一节点,该第一节点为区块链网络中第一账户组对应的节点,所述第一账户组为所述区块链网络中的任一账户组。如图1所示,本实施例提供的方法,包括:
步骤101、第一节点接收第一交易信息;所述第一交易信息是由所述第一账户组到第二账户组的账户之间的交易形成的;所述第二账户组为所述区块链网络中的任一账户组。
步骤102、第一节点根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链。
具体的,本发明实施例中的方法,可以首先定义账户组的个数,例如为G个账户组,可以通过哈希算法,将账户对应的账户地址分到对应的账户组中。例如将账户地址的哈希值与G取模可以得到该账户对应的账户组。从一个账户组到另一个账户组的账户之间的交易生成的区块形成一条区块链,总共有G×G条链。
所有的交易都采用未花费交易输出(Unspent Transaction Output,简称UTXO)模型,即每一个交易消耗一个UTXO作为输入,并产生一个新的UTXO作为输出。如图2所示,每两个账户组对应一条区块链(该两个账户组的关系为有序的账户组对,即从一个账户组到另一个账户组对应一条区块链,该两个账户组可以是相同的账户组),这条区块链里的每一个区块里的输入都来自于同一个账户组的UTXO,这个账户组的UTXO来自于所有账户到这个账户组的交易。每一个账户组对应的节点只需要保存所有和这个账户组相关的输入和输出交易即可知道该账户组内所有账户的余额,因此每个账户组对应的节点只需要保存部分历史交易记录,即只需要保存与该账户组相关的区块链的区块,相关的区块链包括其他任一账户组到该账户组对应的区块链,以及该账户组到其他任一账户组(可以去除该账户组)对应的区块链,即2G-1条区块链。
例如账户组A中的账户余额取决于2G-1条区块链,即所有账户组到账户组A的交易对应的G条区块链,账户组A到除了账户组A的所有账户组的交易对应的G-1条区块链。
所有的G×G条区块链加上区块之间的依赖形成一个类似于网络流的结构,本发明实施例中称之为区块流,如图3所示。例如G=2,即有两个账户组,记为账户组0和账户组1,图2、图3中链L(0,0)表示账户组0到账户组0对应的区块链,链L(0,1)表示账户组0到账户组1对应的区块链,链L(1,0)表示账户组1到账户组0对应的区块链,链L(1,1)表示账户组1到账户组1对应的区块链。图3中高度2区块比高度1区块生成的时间晚。
区块链网络在最初时刻只有G×G个初始区块,即每个区块链都有一个初始区块。然后,区块链网络里的账户开始形成各自的交易,并广播到区块链网络里。区块链网络里面的节点根据交易的输入账户组和输出账户组把交易信息打包成不同区块链上的区块。假设交易是账户组A到账户组B的账户之间的交易,则输入账户组为账户组A,输出账户组为账户组B。这些区块最终广播到整个区块链网络,区块链网络里的节点会验证然后选择接收新的区块或者拒绝不符合协议规则的区块。
以G=2为例,假设所有的账户地址为自然数:0,1,2,3,4…。账户地址n1对应的账户组为n1%2。总共有4条链,L(0,0),L(0,1),L(1,0),L(1,1)。一个从账户地址n1到账户地址n2的交易信息最后需要提交到区块链L(n1%2,n2%2)上去。区块链网络里的账户交易的时候把交易广播到P2P网络里。区块链网络里有大量的挖矿节点,这些挖矿节点缓存某个节点(对应一个账户)提交的交易信息。挖矿节点的作用是把交易信息打包成区块,然后加到该交易信息的输入账户组到输出账户组对应的区块链上去。
以下以第一节点为挖矿节点为例进行说明:
第一节点选择第一账户组到第二账户组对应的区块链(即第一区块链)进行挖矿,第一节点把没有加入到第一区块链的交易信息打包,即第一节点接收第一交易信息,该第一交易信息是由第一账户组到第二账户组的账户之间的交易形成的。
第一节点根据第一交易信息生成第一区块,并将第一区块加入到第一区块链上。
可选的,将所述第一区块加入第一区块链之后,还包括:
所述第一节点将所述第一区块的区块头广播至所述区块链网络中的所有节点,并将所述第一区块的区块主体广播至与所述第一账户组或者第二账户组对应的节点,以使所述区块链网络中的其他节点对接收到的所述第一区块的区块头和/或区块主体进行验证。
具体的,第一节点在生成第一区块之后,可以将该第一区块广播至区块链网络中的其他节点,具体可以是将第一区块广播至与第一账户组或者第二账户组对应的节点,例如可以将第一区块的区块头和区块主体拆分开广播至第一账户组或者第二账户组对应的节点,也可以将区块头和区块主体作为一个整体进行广播,也可以先广播区块头再广播区块主体,或者同时广播区块头和区块主体,本发明对此并不限定。
进一步,还可以将第一区块的区块头广播至其他节点,即不是第一账户组和第二账户组对应的节点。
本实施例的方法,第一节点接收第一交易信息;所述第一交易信息是由所述第一账户组到第二账户组的账户之间的交易形成的;第一账户组和第二账户组为所述区块链网络中的任一账户组;第一节点根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链由于账户组,第一节点为第一账户组对应的节点,该第一节点仅需保存与其相关的历史交易,只需要保存所有和第一账户组相关的交易信息即可知道该第一账户组内所有账户的余额,即只需要保存与该第一账户组相关的区块链的区块,同时不同的区块链可以并行交易,在网络容量有限的情况下,提高了区块链系统的单位时间交易速度。
在上述实施例的基础上,可选的,步骤102之前,还包括:
所述第一节点获取所述第一区块依赖的区块头的哈希值;所述第一区块依赖的区块头为能确定出所述区块链网络中所有区块链的区块头;
相应的,步骤102,具体可以采用如下方式实现:
所述第一节点根据所述第一交易信息和所述第一区块依赖的区块头的哈希值,生成第一区块。
具体的,本发明实施例中的区块链与区块链之间的区块是有紧密的依赖的,每一个新的区块会依赖于多条区块链,所以要包含多个先前产生的区块头的哈希,即生成的第一区块中要包含多个依赖的区块链的区块头的哈希值。通过该些依赖的区块头为能确定出区块链网络中所有区块链的区块头,即通过该些依赖的区块头能确定出整个区块链网络中的所有区块链。在确定第一区块依赖的区块头时要确保每一个新产生的区块是符合预期的。
第一节点根据接收到的第一交易信息和第一区块依赖的区块头的哈希值,生成第一区块。
我们希望每一个新的第一区块都能确定G×G条区块链链的状态。最简单的办法是把所有区块链链的最新的区块头的哈希值保存到新产生的第一区块的区块头中,但是这种做法无疑是低效的,需要存储G×G个哈希值。
其中,最新的区块头可以是确定区块最多的区块头,也可以是创建时间最晚的区块头,本发明实施例对此并不限定。
进一步的,作为一种优化的方案,若所述第一区块链为L(i,j);所述i、j分别为大于或等于0,且小于或等于G-1的整数,所述i表示第一账户组,所述j表示第二账户组,所述第一节点获取所述第一区块依赖的区块头的哈希值,包括:
所述第一节点根据第一预设条件,从已验证的区块头中选择一个初始的区块头;
所述第一节点从G个区块链L(i,m)中各选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容;所述m的取值范围为从0到G-1的整数;所述m表示所述区块链网络中的任一账户组;
对于不同的k,所述第一节点从G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容;所述k的取值范围为从0到G-1的整数,且k不等于i,l_k的取值范围为从0到G-1的整数;所述k表示所述区块链网络中除所述第一账户组之外的任一账户组,所述l_k表示所述区块链网络中任一账户组;
所述第一节点将初始的区块头、所述第二区块头和所述第三区块头,作为所述第一区块依赖的区块头,并计算所述第一区块依赖的区块头的哈希值。
具体的,第一节点挑选第一区块依赖的区块头,首先可以获取一个已经验证过的区块头作为初始的区块头,加入第一区块依赖的区块头中。
该初始的区块头可以是满足第一预设条件的区块头,第一预设条件可以是以该初始的区块头出发确定的区块的数目最多,或者,以该初始的区块头出发确定的总的区块难度最高,本发明实施例对此并不限定。
可选的,确定出初始的区块头之后,根据初始的区块头确定区块链L(r,s)的最新的第四区块头Z(r,s);其中,所述r、s分别为大于或等于0,且小于或等于G-1的整数;
其中,区块链L(r,s)为区块链网络中任一条区块链。
挑选出初始的区块头后,第一节点从L(i,0)、L(i,1)、…、L(i,G-1),这G个区块链L(i,m)中各选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容。
从G个区块链L(i,m)中各选一个最新的第二区块头B(i,m),具体可以采用如下方式实现:
步骤a、所述第一节点从区块链L(i,m)中选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定的所述区块链L(r,s)的最新的第五区块头Z'(r,s)和所述第四区块头Z(r,s)在所述区块链L(r,s)的相同分叉上,且若所述第五区块头Z'(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第五区块头Z'(r,s);
将m加一,重复执行步骤a,直至m达到G-1;其中,所述m的初始值为0。
具体的,先从L(i,0)中先选一个最新的第二区块头B(i,0),使得第二区块头B(i,0)确定出的区块链L(r,s)的最新的第五区块头Z'(r,s)和初始的区块头确定出的第四区块头Z(r,s)在区块链L(r,s)的相同分叉上,若第五区块头Z'(r,s)比第四区块头Z(r,s)新,则将区块链L(r,s)的最新的第四区块头Z(r,s)更新为第五区块头Z'(r,s),若第五区块头Z'(r,s)比第四区块头Z(r,s)旧,那么区块链L(r,s)的最新的第四区块头Z(r,s)保持不变。这里新旧指的是时间上的新旧,即同一条区块链上生成的时间越晚越新。
将m加一,重复执行步骤a,即再从L(i,1)中先选一个最新的第二区块头B(i,1),使得第二区块头B(i,1)确定出的区块链L(r,s)的最新的第五区块头Z'(r,s)和第四区块头Z(r,s)在区块链L(r,s)的相同分叉上,若第五区块头Z'(r,s)比第四区块头Z(r,s)(此时第四区块头可能是已经更新过的区块头)新,则将区块链L(r,s)的最新的第四区块头Z(r,s)更新为第五区块头Z'(r,s),若第五区块头Z'(r,s)比第四区块头Z(r,s)旧,那么区块链L(r,s)的最新的第四区块头Z(r,s)保持不变。将m加一,重复执行步骤a,直至m达到G-1。
此时挑选出1(初始的区块头)+G个第一区块依赖的区块头。
然后,再挑选G-1个第一区块依赖的区块头。
对于每一个k(k≠i)来说,第一节点从L(k,0)、L(k,1)、…、L(k,G-1),这G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容。
对于不同的k,所述第一节点从G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),具体可以采用如下方式实现:
步骤b、所述第一节点从区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定的所述区块链L(r,s)的最新的第六区块头Z”(r,s)和所述第四区块头Z(r,s)在相同的区块链L(r,s)上,且若所述第六区块头Z”(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第六区块头Z”(r,s);
将k加一,重复执行步骤b,直至k达到G-1;其中,所述k的初始值为0,且k不等于i。
具体的,若i等于0,则k的初始值为1。
假设i不等于0,对于k=0来说,第一节点从L(0,0)、L(0,1)、…、L(0,G-1),这G个区块链L(0,l_k)中选一个最新的第三区块头B(0,l_k),使得所述第三区块头B(0,l_k)确定的所述区块链L(r,s)的最新的第六区块头Z”(r,s)和所述第四区块头Z(r,s)(此时的第四区块头可能已经在步骤a中进行了更新)在区块链L(r,s)的相同分叉上,且若所述第六区块头Z”(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第六区块头Z”(r,s),若第六区块头Z”(r,s)比第四区块头Z(r,s)旧,那么区块链L(r,s)的最新的第四区块头Z(r,s)保持不变。将i加一,重复执行步骤b,直至k达到G-1。
其中,在一些实施例中,若所述初始的区块头所在的区块链为区块链L(p,q),则若所述i等于所述p,则所述m不等于q;
若所述i不等于所述p,则k不等于p。
具体的,为了减少第一区块的区块头中包括的依赖的区块头的哈希值,一种优化的方案是,挑选出2G-1个第一区块依赖的区块头,即在G个区块链L(i,m)中各选一个最新的第二区块头B(i,m)的过程中除去初始的区块头所在的区块链,即若初始的区块头所在的区块链为区块链L(p,q),则i等于p时,m不等于q,进一步,若L(i,m)中不包括区块链L(p,q),则对于不同的k,所述第一节点从G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k)的过程中,将初始的区块头所在的区块链去除,即k不等于p,即不从L(p,l_k)这G个区块链中选区块头。
需要说明的是,步骤a和步骤b的实现过程不分先后顺序。
上述具体实施方式中,将第一区块依赖的区块头的哈希值放入第一区块的区块头中,可以确定出区块链网络中所有区块链的状态。
在上述实施例的基础上,可选的,在步骤102之前,还可以进行如下操作:
所述第一节点根据第三账户组到第一账户组对应的区块链确定所述第一交易信息对应的交易输入,是否来自于所述第三账户组到所述第一账户组的账户之间的交易对应的交易输出;
若是,则所述第一节点根据所述第一账户组到第四账户组对应的区块链验证所述交易输出,是否未被所述第一账户组到所述第四账户组的账户之间的交易使用;所述第三账户组和所述第四账户组分别为所述区块链网络中任一账户组;
若是,则确定所述第一交易信息有效。
具体的,在生成第一区块之前,需要验证接收到的第一交易信息是否有效,即第一交易信息对应的交易是否有效。
需要验证两点,1、第一交易信息对应的交易输入是否来自于有效的UTXO,2、没有双花。
根据上述选择出的依赖的区块头,可以确定出区块链网络中每一条区块链的区块,从而确定了所有的历史交易,即确定了一个账本。
首先,根据任一账户组到第一账户组对应的区块链中区块包括的交易信息,确定第一交易信息对应的交易输入,是否来自于其他账户组到第一账户组的账户之间的交易对应的交易输出,即是否来自于之前的一个交易的输出。
然后,根据第一账户组到任一账户组对应的区块链中区块包括的交易信息,验证交易输出,是否未被第一账户组到其他账户组的账户之间的交易使用,即该交易输出没有被其他交易消耗掉。
如果满足上述两个条件,则说明第一交易信息有效。
因此,每一个账户组对应的节点只需要保存所有和这个账户组相关的输入和输出交易即可知道该账户组内所有账户的余额,因此每个账户组对应的节点只需要保存部分历史交易记录,即只需要保存与该账户组相关的区块链的区块,相关的区块链包括其他任一账户组到该账户组对应的区块链,以及该账户组到其他任一账户组(可以去除该账户组)对应的区块链,即2G-1条区块链。对于该账户组不相关的区块链仅需要保存区块头即可。
进一步的,第一节点根据所述第一交易信息和所述第一区块依赖的区块头的哈希值,生成第一区块,具体可以采用如下方式实现:
所述第一节点按照第二预设条件利用工作证明算法,确定随机数;
所述第一节点将所述第一区块依赖的区块头的哈希值和所述随机数,按照预设的区块头的数据结构生成所述第一区块的区块头;
所述第一节点将有效的所述第一交易信息按照预设的区块主体的数据结构,生成所述第一区块的区块主体;
所述第一节点将所述区块头和所述区块主体组合形成所述第一区块。
第一区块包括区块头和区块主体,可选的,所述第一区块的区块头还包括:所述第一区块链中上一个区块的哈希值、所述第一区块的区块主体的哈希值和时间戳。
具体的,第一节点在生成第一区块时,需要通过工作证明算法,寻找随机数,该随机数满足第二预设条件。例如通过该随机数生成的区块的哈希值满足一定的条件,如小于预设阈值。
然后将随机数、选出的依赖的区块头的哈希值、时间戳(即第一区块创建时间)、该区块链的上一个区块的哈希值、第一区块的区块主体(即有效负载)的哈希值等信息组成第一区块的区块头。
并将验证后的有效的第一交易信息生成第一区块的区块主体,然后将区块头和区块主体生成最终的第一区块。
区块头还可以包括如下信息:描述信息(比如:版本信息,有效负载大小,所有依赖的区块头的哈希的哈希,交易Merkle树根节点的哈希值,工作证明算法的目标值等等)。
区块主体(即有效负载)还可以包括其他任何可以存储的数据。
上述哈希可以是任何哈希函数计算出来的,包括MD5,SHA-1,SHA-224,SHA-256,SHA-384,SHA-512,SHA-512/224,SHA-512/256,SHA-3等。
上述具体实施方式中,在生成第一区块之前需要验证接收到的第一交易信息是否有效,该第一区块链的第一区块与2G-1条区块链相关,即所有账户组到第一账户组的交易对应的G条区块链,第一账户组到除了第一账户组的所有账户组的交易对应的G-1条区块链,因此根据与第一账户组相关的账户组的交易信息,即第一区块链相关的区块链,可确定出该第一交易信息是否有效。
在上述实施例的基础上,可选的,本实施例的方法还包括:
所述第一节点接收第五账户组对应的节点发送的第二区块链上的区块主体,所述区块主体包括:所述第一账户组关联的第二交易信息;所述第二区块链为第五账户组到所述第一账户组对应的区块链;所述第二交易信息是由所述第五账户组到所述第一账户组的账户之间的交易形成的;
所述第一节点验证所述区块主体的数据格式是否正确;
若正确,则将所述区块主体加入所述第一节点存储的第二区块链中。
具体的,第一节点接收其他节点发送的区块主体,例如第五账户组对应的节点发送的第二区块链上的区块主体。该区块主体包括第一账户组相关的第二交易信息,该第二交易信息是由第五账户组到所述第一账户组的账户之间的交易形成的。第二区块链为第五账户组到第一账户组对应的区块链。
在实际应用中,需要确定该区块主体对应的区块头是否接收到,若没有接收到,则等接收到区块头之后,第一节点验证该区块的数据格式是否正确;若正确,则加入该第一节点存储的第二区块链中,同时把该区块主体转发给P2P网络里第五账户组和第一账户组对应的节点,然后把区块头转发给区块链网络中的其他所有节点;若不正确,则放弃这个区块,不做任何处理。
进一步,还可以验证区块头中的随机数是否满足工作证明POW的预设条件,即验证区块的哈希值是否符合预设要求。
进一步的,本实施例的方法还包括:
所述第一节点接收第一账户组对应的节点发送的第三区块链上的区块主体,所述区块主体包括:所述第一账户组关联的第三交易信息;所述第三区块链为第一账户组到第六账户组对应的区块链;所述第三交易信息是由所述第一账户组到所述第六账户组的账户之间的交易形成的;
所述第一节点验证所述第三交易信息是否有效;
若所述第三交易信息有效,则将所述区块主体加入所述第一节点存储的第三区块链中。
具体的,第一节点接收其他节点发送的区块主体,例如第一账户组对应的其他节点发送的第三区块链上的区块主体。该区块主体包括第一账户组相关的第三交易信息,该第二交易信息是由第一账户组到第六账户组的账户之间的交易形成的。第三区块链为第一账户组到第六账户组对应的区块链。
在实际应用中,需要确定该区块主体对应的区块头是否接收到,若没有接收到,则等接收到区块头之后,第一节点验证该区块主体的数据格式是否正确;若正确,且第三交易信息有效,则加入该第一节点存储的第三区块链中,同时把该区块主体转发给P2P网络里第六账户组和第一账户组对应的节点,然后把区块头转发给区块链网络中的其他所有节点转发给P2P网络里的其他节点;若不正确,则放弃这个区块,不做任何处理。
可选的,所述第一节点验证所述第三交易信息是否有效,具体可以通过如下方式实现:
所述第一节点根据第七账户组到所述第一账户组对应的区块链确定所述第三交易信息对应的交易输入,是否来自于所述第七账户组到所述第一账户组的账户之间的交易对应的交易输出;
若是,则所述第一节点根据第一账户组到第八账户组对应的区块链验证所述交易输出,是否未被所述第一账户组到第八账户组的账户之间的交易使用;所述第七账户组和所述第八账户组分别为所述区块链网络中任一账户组;
若是,则确定所述第三交易信息有效。
验证第三交易信息是否有效的过程与前述实施例中验证第一交易信息是否有效的过程类似,此处不再赘述。
上述具体实施方式中,在接收到区块之后需要验证该区块的区块主体的交易信息是否有效,根据与区块所在的区块链相关的其他区块链,可确定出该交易信息是否有效。
在上述实施例的基础上,可选的,本实施例的方法还包括:
所述第一节点接收第二节点发送的第四区块链中的区块头,所述区块头包括:所述区块头依赖的最新区块的哈希值;所述第四区块链为区块链网络中任一区块链;
所述第一节点验证所述第四区块链中的区块头的区块依赖是否合理;
若所述第四区块链中的区块头的区块依赖是否合理,则将所述区块头加入所述第一节点存储的第四区块链中。
具体的,第一节点除了会接收其他依赖区块链的区块主体之外,还会接收到所有的区块链的区块头,具体接收第二节点发送的第四区块链中的区块头,第二节点可以是区块链网络中任一账户组对应的节点。第四区块链为区块链网络中任一区块链。
所述区块头包括:该区块头依赖的最新区块头的哈希值。
第一节点需要验证该区块头的区块依赖是否合理;若合理,则将该区块头加入第一节点存储的第四区块链中,同时转发给P2P网络里的其他节点;若不合理,放弃这个区块头,不做任何处理。
可选的,假设所述第四区块链为L(i1,j1),接收到的第四区块链为L(i1,j1)的区块头为B(i1,j1);所述i1、j1分别为大于或等于0,且小于或等于G-1的整数,所述i1和所述j1表示所述区块链网络中任一账户组,所述第一节点验证所述第四区块链中的区块头的区块依赖是否合理,具体可以通过如下方式实现:
步骤c、所述第一节点根据所述区块头B(i1,j1),确定任一条区块链L(r1,s1)的最新的第七区块头Z(r1,s1);其中,所述r1、s1分别为大于或等于0,且小于或等于G-1的整数;
步骤d、所述第一节点根据所述区块头B(i1,j1)中包括的第i2个区块头Bi2的哈希值对应的区块头Bi2,确定所述区块链L(r1,s1)的最新的第八区块头Z'(r1,s1);
步骤e、所述第一节点确定所述第七区块头Z(r1,s1)和所述第八区块头Z'(r1,s1)是否在所述区块链L(r,s)的相同分叉上;
若是,则在所述第八区块头Z'(r1,s1)比所述第七区块头Z(r1,s1)新时,将所述第七区块头Z(r1,s1)更新为所述第八区块头Z'(r1,s1);
将i2加一,重复执行步骤d-e,直至i2达到2G或所述第七区块头Z(r1,s1)和所述第八区块头Z'(r1,s1)不在所述区块链L(r,s)的相同分叉上停止执行;其中,所述i2的初始值为1;
若所有的区块头Bi2确定的第八区块头Z'(r1,s1)均与所述第七区块头Z(r1,s1)在相同的区块链L(r,s)上,则确定所述第四区块链中的区块头的区块依赖合理。
具体来说,首先,第一节点根据所述区块头B(i1,j1),确定任一条区块链L(r1,s1)的最新的第七区块头Z(r1,s1),然后根据区块头B(i1,j1)中包括的第1个区块头B1的哈希值对应的区块头B1,确定所述区块链L(r1,s1)的最新的第八区块头Z'(r1,s1),确定第七区块头Z(r1,s1)与第八区块头Z'(r1,s1)是否在区块链L(r,s)的相同分叉上;若是,则说明该区块头B1合理,若第八区块头Z'(r1,s1)比第七区块头Z(r1,s1)新时,将第七区块头Z(r1,s1)更新为第八区块头Z'(r1,s1);
然后,将i2加1,然后继续执行上述步骤直至i2达到2G或第七区块头Z(r1,s1)和第八区块头Z'(r1,s1)不在区块链L(r,s)的相同分叉上停止执行。
若第七区块头Z(r1,s1)和第八区块头Z'(r1,s1)不在区块链L(r,s)的相同分叉上,则说明该区块头的依赖有问题,不能形成一个正确的账本,则中断验证,验证不通过。
若所有的区块头Bi2确定的第八区块头Z'(r1,s1)均与第七区块头Z(r1,s1)在相同的区块链L(r,s)上,则确定第三区块链中的区块头的区块依赖合理。
最后确定出的Z(r1,s1)就是最终该区块链的最新区块,即最终确定了每一条区块链。
其中,若在挑选第一区块依赖的区块头时,挑选出2G-1个区块头,则i2的最大值为2G-1。
如图4所示,一条区块链的分叉是由最新的区块决定的,一般情况下只有一条分叉,没有分叉,在区块链的形成过程中,短的分叉最终被抛弃,保留最长的分叉作为该区块链。
上述具体实施方式中,在接收到区块的区块头之后,需要验证区块头中包括的最新的区块头是否合理。
本发明实施例还提供一种基于区块链的交易数据处理装置,该装置设置在第一节点,所述第一节点为区块链网络中第一账户组对应的节点,所述区块链网络中包括G个账户组和G×G个区块链,任一所述账户组到另一个任一所述账户组对应于一条区块链,所述第一账户组为所述区块链网络中的任一账户组,G为大于1的整数;基于区块链的交易数据处理装置包括:
接收模块,用于接收第一交易信息;所述第一交易信息是由所述第一账户组到第二账户组的账户之间的交易形成的;所述第二账户组为所述区块链网络中的任一账户组;
处理模块,用于根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链。
可选的,所述处理模块,具体用于:
在根据所述第一交易信息生成第一区块之前,获取所述第一区块依赖的区块头的哈希值;所述第一区块依赖的区块头为能确定出所述区块链网络中所有区块链的区块头;
所述第一节点根据所述第一交易信息和所述第一区块依赖的区块头的哈希值,生成第一区块。
可选的,若所述第一区块链为L(i,j);所述i、j分别为大于或等于0,且小于或等于G-1的整数,所述i表示第一账户组,所述j表示第二账户组,所述处理模块,具体用于:
根据第一预设条件,从已验证的区块头中选择一个初始的区块头;
从G个区块链L(i,m)中各选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容;所述m的取值范围为从0到G-1的整数;所述m表示所述区块链网络中的任一账户组;
对于不同的k,从G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容;所述k的取值范围为从0到G-1的整数,且k不等于i,l_k的取值范围为从0到G-1的整数;所述k表示所述区块链网络中除所述第一账户组之外的任一账户组,所述l_k表示所述区块链网络中任一账户组;
将初始的区块头、所述第二区块头和所述第三区块头,作为所述第一区块依赖的区块头,并计算所述第一区块依赖的区块头的哈希值。
可选的,若所述初始的区块头所在的区块链为区块链L(p,q),则若所述i等于所述p,则所述m不等于q;
若所述i不等于所述p,则k不等于p。
可选的,所述处理模块,具体用于执行如下步骤:
在根据第一预设条件,从已验证的区块头中选择一个初始的区块头之后,根据所述初始的区块头确定区块链L(r,s)的最新的第四区块头Z(r,s);其中,所述r、s分别为大于或等于0,且小于或等于G-1的整数;
步骤a、从区块链L(i,m)中选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定的所述区块链L(r,s)的最新的第五区块头Z'(r,s)和所述第四区块头Z(r,s)在所述区块链L(r,s)的相同分叉上,且若所述第五区块头Z'(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第五区块头Z'(r,s);
将m加一,重复执行步骤a,直至m达到G-1;其中,所述m的初始值为0;
步骤b、从区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定的所述区块链L(r,s)的最新的第六区块头Z”(r,s)和所述第四区块头Z(r,s)在所述区块链L(r,s)的相同分叉上,且若所述第六区块头Z”(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第六区块头Z”(r,s);
将k加一,重复执行步骤b,直至k达到G-1;其中,所述k的初始值为0,且k不等于i。
可选的,所述处理模块,还用于:
根据所述第一交易信息生成第一区块之前,根据第三账户组到第一账户组对应的区块链确定所述第一交易信息对应的交易输入,是否来自于所述第三账户组到所述第一账户组的账户之间的交易对应的交易输出;
若是,则根据所述第一账户组到第四账户组对应的区块链验证所述交易输出,是否未被所述第一账户组到所述第四账户组的账户之间的交易使用;所述第三账户组和所述第四账户组分别为所述区块链网络中任一账户组;
若是,则确定所述第一交易信息有效。
可选的,所述处理模块,具体用于:
所述第一节点按照第二预设条件利用工作证明算法,确定随机数;
所述第一节点将所述第一区块依赖的区块头的哈希值和所述随机数,按照预设的区块头的数据结构生成所述第一区块的区块头;
所述第一节点将有效的所述第一交易信息按照预设的区块主体的数据结构,生成所述第一区块的区块主体;
所述第一节点将所述区块头和所述区块主体组合形成所述第一区块。
可选的,所述接收模块,还用于:
接收第五账户组对应的节点发送的第二区块链上的区块主体,所述区块主体包括:所述第一账户组关联的第二交易信息;所述第二区块链为第五账户组到所述第一账户组对应的区块链;所述第二交易信息是由所述第五账户组到所述第一账户组的账户之间的交易形成的;
所述处理模块,还用于:
所述第一节点验证所述区块主体的数据格式是否正确;
若正确,则将所述区块主体加入所述第一节点存储的第二区块链中。
可选的,所述接收模块,还用于:
所述第一节点接收第一账户组对应的节点发送的第三区块链上的区块主体,所述区块主体包括:所述第一账户组关联的第三交易信息;所述第三区块链为第一账户组到第六账户组对应的区块链;所述第三交易信息是由所述第一账户组到所述第六账户组的账户之间的交易形成的;
所述处理模块,还用于:
所述第一节点验证所述第三交易信息是否有效;
若所述第三交易信息有效,则将所述区块主体加入所述第一节点存储的第三区块链中。
可选的,所述处理模块,具体用于:
确定所述第三交易信息对应的交易输入,是否来自于所述第七账户组到所述第一账户组的账户之间的交易对应的交易输出;
若是,则验证所述交易输出,是否未被所述第一账户组到第八账户组的账户之间的交易使用;所述第七账户组和所述第八账户组分别为所述区块链网络中任一账户组;
若是,则确定所述第三交易信息有效。
可选的,所述接收模块,还用于:
接收第二节点发送的第四区块链中的区块头,所述区块头包括:所述区块头依赖的最新区块头的哈希值;所述第四区块链为区块链网络中任一区块链;
可选的,所述处理模块,具体用于:
验证所述第四区块链中的区块头的区块依赖是否合理;
若所述第四区块链中的区块头的区块依赖是否合理,则将所述区块头加入所述第一节点存储的第四区块链中。
可选的,假设所述第四区块链为L(i1,j1),接收到的第四区块链为L(i1,j1)的区块头为B(i1,j1);所述i1、j1分别为大于或等于0,且小于或等于G-1的整数,所述i1和所述j1表示所述区块链网络中任一账户组,所述处理模块,具体用于执行如下步骤:
步骤c、所述第一节点根据所述区块头B(i1,j1),确定任一条区块链L(r1,s1)的最新的第七区块头Z(r1,s1);其中,所述r1、s1分别为大于或等于0,且小于或等于G-1的整数;
步骤d、所述第一节点根据所述区块头B(i1,j1)中包括的第i2个区块头Bi2的哈希值对应的区块头Bi2,确定所述区块链L(r1,s1)的最新的第八区块头Z'(r1,s1);
步骤e、所述第一节点确定所述第七区块头Z(r1,s1)和所述第八区块头Z'(r1,s1)是否在所述区块链L(r,s)的相同分叉上;
若是,则在所述第八区块头Z'(r1,s1)比所述第七区块头Z(r1,s1)新时,将所述第七区块头Z(r1,s1)更新为所述第八区块头Z'(r1,s1);
将i2加一,重复执行步骤d-e,直至i2达到2G或所述第七区块头Z(r1,s1)和所述第八区块头Z'(r1,s1)不在所述区块链L(r,s)的相同分叉上停止执行;其中,所述i2的初始值为1;
若所有的区块头Bi2确定的第八区块头Z'(r1,s1)均与所述第七区块头Z(r1,s1)在所述区块链L(r,s)的相同分叉上,则确定所述第四区块链中的区块头的区块依赖合理。
可选的,所述第一区块的区块头还包括:所述第一区块链中上一个区块的哈希值、所述第一区块的区块主体的哈希值和时间戳。
可选的,所述处理模块,还用于:
将所述第一区块加入第一区块链之后,将所述第一区块的区块头广播至所述区块链网络中的所有节点,并将所述第一区块的区块主体广播至与所述第一账户组或者第二账户组对应的节点,以使所述区块链网络中的其他节点对接收到的所述第一区块的区块头和/或区块主体进行验证。
本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5为本发明提供的电子设备实施例的结构图,如图5所示,该电子设备包括:
处理器501,以及,用于存储处理器501的可执行指令的存储器502。
可选的,还可以包括:通信接口503,用于与其他设备通信。
上述部件可以通过一条或多条总线进行通信。
其中,处理器501配置为经由执行所述可执行指令来执行前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,此处不再赘述。
本发明实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (15)
1.一种基于区块链的交易数据处理方法,其特征在于,所述方法应用于第一节点,所述第一节点为区块链网络中第一账户组对应的节点,所述区块链网络中包括G个账户组和G×G个区块链,任一所述账户组到另一个任一所述账户组对应于一条区块链,所述第一账户组为所述区块链网络中的任一账户组,G为大于1的整数;所述方法包括:
所述第一节点接收第一交易信息;所述第一交易信息是由所述第一账户组到第二账户组的账户之间的交易形成的;所述第二账户组为所述区块链网络中的任一账户组;
所述第一节点根据所述第一交易信息生成第一区块,并将所述第一区块加入到第一区块链上;所述第一区块链为所述第一账户组到所述第二账户组对应的区块链。
2.根据权利要求1所述的方法,其特征在于,所述第一节点根据所述第一交易信息生成第一区块之前,还包括:
所述第一节点获取所述第一区块依赖的区块头的哈希值;所述第一区块依赖的区块头为能确定出所述区块链网络中所有区块链的区块头;
所述第一节点根据所述第一交易信息生成第一区块,包括:
所述第一节点根据所述第一交易信息和所述第一区块依赖的区块头的哈希值,生成第一区块。
3.根据权利要求2所述的方法,其特征在于,若所述第一区块链为L(i,j);所述i、j分别为大于或等于0,且小于或等于G-1的整数,所述i表示第一账户组,所述j表示第二账户组,所述第一节点获取所述第一区块依赖的区块头的哈希值,包括:
所述第一节点根据第一预设条件,从已验证的区块头中选择一个初始的区块头;
所述第一节点从G个区块链L(i,m)中各选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容;所述m的取值范围为从0到G-1的整数;所述m表示所述区块链网络中的任一账户组;
对于不同的k,所述第一节点从G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定出的每一条区块链的最新的区块头和所述初始的区块头确定出的对应区块链的最新的区块头兼容;所述k的取值范围为从0到G-1的整数,且k不等于i,l_k的取值范围为从0到G-1的整数;所述k表示所述区块链网络中除所述第一账户组之外的任一账户组,所述l_k表示所述区块链网络中任一账户组;
所述第一节点将初始的区块头、所述第二区块头和所述第三区块头,作为所述第一区块依赖的区块头,并计算所述第一区块依赖的区块头的哈希值。
4.根据权利要求3所述的方法,其特征在于,若所述初始的区块头所在的区块链为区块链L(p,q),则若所述i等于所述p,则所述m不等于q;
若所述i不等于所述p,则k不等于p。
5.根据权利要求4所述的方法,其特征在于,所述第一节点根据第一预设条件,从已验证的区块头中选择一个初始的区块头之后,还包括:
根据所述初始的区块头确定区块链L(r,s)的最新的第四区块头Z(r,s);其中,所述r、s分别为大于或等于0,且小于或等于G-1的整数;
相应的,所述第一节点从G个区块链L(i,m)中各选一个最新的第二区块头B(i,m),包括:
步骤a、所述第一节点从区块链L(i,m)中选一个最新的第二区块头B(i,m),使得所述第二区块头B(i,m)确定的所述区块链L(r,s)的最新的第五区块头Z'(r,s)和所述第四区块头Z(r,s)在所述区块链L(r,s)的相同分叉上,且若所述第五区块头Z'(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第五区块头Z'(r,s);
将m加一,重复执行步骤a,直至m达到G-1;其中,所述m的初始值为0;
相应的,对于不同的k,所述第一节点从G个区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),包括:
步骤b、所述第一节点从区块链L(k,l_k)中选一个最新的第三区块头B(k,l_k),使得所述第三区块头B(k,l_k)确定的所述区块链L(r,s)的最新的第六区块头Z”(r,s)和所述第四区块头Z(r,s)在所述区块链L(r,s)的相同分叉上,且若所述第六区块头Z”(r,s)比所述第四区块头Z(r,s)新,则将所述区块链L(r,s)的最新的第四区块头Z(r,s)更新为所述第六区块头Z”(r,s);
将k加一,重复执行步骤b,直至k达到G-1;其中,所述k的初始值为0,且k不等于i。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述第一节点根据所述第一交易信息生成第一区块之前,还包括:
所述第一节点根据第三账户组到第一账户组对应的区块链确定所述第一交易信息对应的交易输入,是否来自于所述第三账户组到所述第一账户组的账户之间的交易对应的交易输出;
若是,则所述第一节点根据所述第一账户组到第四账户组对应的区块链验证所述交易输出,是否未被所述第一账户组到所述第四账户组的账户之间的交易使用;所述第三账户组和所述第四账户组分别为所述区块链网络中任一账户组;
若是,则确定所述第一交易信息有效。
7.根据权利要求6所述的方法,其特征在于,所述第一节点根据所述第一交易信息和所述第一区块依赖的区块头的哈希值,生成第一区块,包括:
所述第一节点按照第二预设条件利用工作证明算法,确定随机数;
所述第一节点将所述第一区块依赖的区块头的哈希值和所述随机数,按照预设的区块头的数据结构生成所述第一区块的区块头;
所述第一节点将有效的所述第一交易信息按照预设的区块主体的数据结构,生成所述第一区块的区块主体;
所述第一节点将所述区块头和所述区块主体组合形成所述第一区块。
8.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
所述第一节点接收第五账户组对应的节点发送的第二区块链上的区块主体,所述区块主体包括:所述第一账户组关联的第二交易信息;所述第二区块链为第五账户组到所述第一账户组对应的区块链;所述第二交易信息是由所述第五账户组到所述第一账户组的账户之间的交易形成的;
所述第一节点验证所述区块主体的数据格式是否正确;
若正确,则将所述区块主体加入所述第一节点存储的第二区块链中。
9.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
所述第一节点接收第一账户组对应的节点发送的第三区块链上的区块主体,所述区块主体包括:所述第一账户组关联的第三交易信息;所述第三区块链为第一账户组到第六账户组对应的区块链;所述第三交易信息是由所述第一账户组到所述第六账户组的账户之间的交易形成的;
所述第一节点验证所述第三交易信息是否有效;
若所述第三交易信息有效,则将所述区块主体加入所述第一节点存储的第三区块链中。
10.根据权利要求9所述的方法,其特征在于,所述第一节点验证所述第三交易信息是否有效,包括:
所述第一节点根据第七账户组到所述第一账户组对应的区块链确定所述第三交易信息对应的交易输入,是否来自于所述第七账户组到所述第一账户组的账户之间的交易对应的交易输出;
若是,则所述第一节点根据所述第一账户组到第八账户组对应的区块链验证所述交易输出,是否未被所述第一账户组到所述第八账户组的账户之间的交易使用;所述第七账户组和所述第八账户组分别为所述区块链网络中任一账户组;
若是,则确定所述第三交易信息有效。
11.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
所述第一节点接收第二节点发送的第四区块链中的区块头,所述区块头包括:所述区块头依赖的最新区块头的哈希值;所述第四区块链为区块链网络中任一区块链;
所述第一节点验证所述第四区块链中的区块头的区块依赖是否合理;
若所述第四区块链中的区块头的区块依赖是否合理,则将所述区块头加入所述第一节点存储的第四区块链中。
12.根据权利要求11所述的方法,其特征在于,假设所述第四区块链为L(i1,j1),接收到的第四区块链为L(i1,j1)的区块头为B(i1,j1);所述i1、j1分别为大于或等于0,且小于或等于G-1的整数,所述i1和所述j1表示所述区块链网络中任一账户组,所述第一节点验证所述第四区块链中的区块头的区块依赖是否合理,包括:
步骤c、所述第一节点根据所述区块头B(i1,j1),确定任一条区块链L(r1,s1)的最新的第七区块头Z(r1,s1);其中,所述r1、s1分别为大于或等于0,且小于或等于G-1的整数;
步骤d、所述第一节点根据所述区块头B(i1,j1)中包括的第i2个区块头Bi2的哈希值对应的区块头Bi2,确定所述区块链L(r1,s1)的最新的第八区块头Z'(r1,s1);
步骤e、所述第一节点确定所述第七区块头Z(r1,s1)和所述第八区块头Z'(r1,s1)是否在所述区块链L(r,s)的相同分叉上;
若是,则在所述第八区块头Z'(r1,s1)比所述第七区块头Z(r1,s1)新时,将所述第七区块头Z(r1,s1)更新为所述第八区块头Z'(r1,s1);
将i2加一,重复执行步骤d-e,直至i2达到2G或所述第七区块头Z(r1,s1)和所述第八区块头Z'(r1,s1)不在所述区块链L(r,s)的相同分叉上停止执行;其中,所述i2的初始值为1;
若所有的区块头Bi2确定的第八区块头Z'(r1,s1)均与所述第七区块头Z(r1,s1)在所述区块链L(r,s)的相同分叉上,则确定所述第四区块链中的区块头的区块依赖合理。
13.根据权利要求1-5任一项所述的方法,其特征在于,所述将所述第一区块加入第一区块链之后,还包括:
所述第一节点将所述第一区块的区块头广播至所述区块链网络中的所有节点,并将所述第一区块的区块主体广播至与所述第一账户组或者第二账户组对应的节点,以使所述区块链网络中的其他节点对接收到的所述第一区块的区块头和/或区块主体进行验证。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-13任一项所述的方法。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-13任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/109701 WO2020073246A1 (zh) | 2018-10-10 | 2018-10-10 | 基于区块链的交易数据处理方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110692078A true CN110692078A (zh) | 2020-01-14 |
CN110692078B CN110692078B (zh) | 2023-07-25 |
Family
ID=69107162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880017223.5A Active CN110692078B (zh) | 2018-10-10 | 2018-10-10 | 基于区块链的交易数据处理方法、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110692078B (zh) |
WO (1) | WO2020073246A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112580112A (zh) * | 2021-02-26 | 2021-03-30 | 北京全息智信科技有限公司 | 一种基于全链共识、局部部署的智能合约实现方法、装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11228439B2 (en) * | 2019-01-02 | 2022-01-18 | Jiaping Wang | Scale out blockchain with asynchronized consensus zones |
CN113159953A (zh) * | 2021-04-30 | 2021-07-23 | 中国工商银行股份有限公司 | 一种基于区块链的数据持久化和并行处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055597A (zh) * | 2016-05-24 | 2016-10-26 | 布比(北京)网络技术有限公司 | 数字交易系统、及用于其的账户信息查询方法 |
CN106372940A (zh) * | 2016-08-31 | 2017-02-01 | 江苏通付盾科技有限公司 | 基于区块链网络的身份认证方法、服务器及终端设备 |
CN106796685A (zh) * | 2016-12-30 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | 区块链权限控制方法、装置及节点设备 |
CN108282474A (zh) * | 2018-01-18 | 2018-07-13 | 山东大学 | 基于区块链的数字资产交易一致性的维护方法 |
CN108492183A (zh) * | 2018-03-29 | 2018-09-04 | 深圳前海微众银行股份有限公司 | 区块链的账户交易方法、系统和计算机可读存储介质 |
CN108492108A (zh) * | 2018-03-29 | 2018-09-04 | 深圳前海微众银行股份有限公司 | 区块链跨链通信方法、系统和计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506638B (zh) * | 2016-11-04 | 2020-01-07 | 江苏通付盾科技有限公司 | 区块链中的区块存储方法及装置 |
CN107077674B (zh) * | 2016-12-29 | 2021-06-11 | 达闼机器人有限公司 | 交易验证处理方法、装置及节点设备 |
CN107239940A (zh) * | 2017-05-11 | 2017-10-10 | 北京博晨技术有限公司 | 基于区块链系统的网络交易方法及装置 |
CN107147735B (zh) * | 2017-05-12 | 2020-08-11 | 北京博晨技术有限公司 | 一种基于分层结构的分布式账本系统 |
CN108512649B (zh) * | 2018-02-09 | 2021-09-10 | 北京欧链科技有限公司 | 区块链的反向哈希链接的处理方法及装置 |
-
2018
- 2018-10-10 WO PCT/CN2018/109701 patent/WO2020073246A1/zh active Application Filing
- 2018-10-10 CN CN201880017223.5A patent/CN110692078B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055597A (zh) * | 2016-05-24 | 2016-10-26 | 布比(北京)网络技术有限公司 | 数字交易系统、及用于其的账户信息查询方法 |
CN106372940A (zh) * | 2016-08-31 | 2017-02-01 | 江苏通付盾科技有限公司 | 基于区块链网络的身份认证方法、服务器及终端设备 |
CN106796685A (zh) * | 2016-12-30 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | 区块链权限控制方法、装置及节点设备 |
CN108282474A (zh) * | 2018-01-18 | 2018-07-13 | 山东大学 | 基于区块链的数字资产交易一致性的维护方法 |
CN108492183A (zh) * | 2018-03-29 | 2018-09-04 | 深圳前海微众银行股份有限公司 | 区块链的账户交易方法、系统和计算机可读存储介质 |
CN108492108A (zh) * | 2018-03-29 | 2018-09-04 | 深圳前海微众银行股份有限公司 | 区块链跨链通信方法、系统和计算机可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112580112A (zh) * | 2021-02-26 | 2021-03-30 | 北京全息智信科技有限公司 | 一种基于全链共识、局部部署的智能合约实现方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020073246A1 (zh) | 2020-04-16 |
CN110692078B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113329031B (zh) | 一种区块的状态树的生成方法及装置 | |
CN106991607B (zh) | 一种基于区块链账户模型的无序交易控制方法 | |
CN109242500B (zh) | 区块链交易有效性验证方法、装置及存储介质 | |
CN110692078B (zh) | 基于区块链的交易数据处理方法、设备和存储介质 | |
US20220172180A1 (en) | Method for Storing Transaction that Represents Asset Transfer to Distributed Network and Program for Same | |
CN110737664A (zh) | 一种区块链节点同步的方法及装置 | |
CN113841359A (zh) | 用于在区块链网络中传播区块的方法和装置 | |
EP3685290B1 (en) | Secure boot of kernel modules | |
CN111694502B (zh) | 区块链数据存储方法、装置、设备及存储介质 | |
CN112862490B (zh) | 一种异步网络下的输出共识方法 | |
CN109756566B (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
CN111164934A (zh) | 认证树的修剪 | |
CN110086856B (zh) | 区块链节点的控制方法、装置、存储介质及电子设备 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN108399533B (zh) | 交易处理方法、装置、计算机设备和存储介质 | |
CN112883398B (zh) | 基于同态加密的数据完整性验证方法 | |
CN114328518A (zh) | 基于utxo模型的低存储消耗的方法和系统 | |
CN114337990A (zh) | 一种两轮多重变色龙哈希函数计算方法及系统 | |
CN113326332A (zh) | 一种区块链的快照同步方法及装置 | |
KR102218297B1 (ko) | 원장의 증명 가능 프루닝 시스템 | |
CN114785812B (zh) | 一种基于零知识证明的区块链区块同步方法及装置 | |
CN109857805B (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN111275553B (zh) | 一种区块链的数据存储方法及区块链系统 | |
CN111428277B (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 |