本申请涉及区块链技术领域,具体而言,涉及一种交易数据存储方法、装置、区块链系统和存储介质。
背景技术:
如今区块链技术的发展越来越快,区块链技术也迅速被应用到各个领域,在基于区块链实现交易记录、产品溯源等时都需要将大量的交易数据存储在区块中,为了保证交易数据不被篡改,需要通过区块链的存储区块存储交易数据的哈希值。
目前,在传统的区块链系统中,区块链系统中的各个交易节点产生的交易数据都是通过区块链系统中的排序服务节点进行统一的排序和打包,形成区块链系统中的一个区块并分发至各个交易节点。
所有的交易数据由一个排序服务节点进行排序打包会导致排序时的网络流量较大,影响系统性能,另外,若该排序服务节点发生故障,则会导致整个区块链系统无法正常使用。
技术实现要素:
有鉴于此,本申请的目的在于提供交易数据存储方法、装置、区块链系统和存储介质,以降低网络开销,同时也能避免出现单点故障的风险。
第一方面,本申请实施例提供一种交易数据存储方法,应用于区块链系统,区块链系统包括多个交易节点,每个交易节点包括有多个按照时间顺序排列的交易数据,方法包括:
针对多个交易节点中的任意一个待处理交易节点,在除该待处理交易节点外的其他交易节点中选择一个交易节点作为目标交易节点;
获取目标交易节点在第一时间节点和第二时间节点之间的第一交易数据,其中,第一时间节点在第二时间节点之前;
获取待处理交易节点在第一时间节点和第二时间节点之间的第二交易数据;
合并计算第一交易数据和第二交易数据的哈希值;
将哈希值存储在待处理交易节点对应的数据区块中。
在可选的实施方式中,方法还包括:
根据每个数据区块的大小,将待处理交易节点上的交易数据按照时间顺序生成至少一个相应大小的数据区块。
在可选的实施方式中,将哈希值存储在待处理交易节点对应的数据区块中,包括:
将哈希值存储于待处理交易节点在第二时间节点后生成的数据区块中。
在可选的实施方式中,在除该待处理交易节点外的其他交易节点中选择一个交易节点作目标交易节点,包括:
通过随机函数从多个除待处理交易节点外的其他交易节点中随机选择一个交易节点作为目标交易节点。
在可选的实施方式中,合并计算第一交易数据和第二交易数据的哈希值,包括:
将第一交易数据和第二交易数据合并为一组待计算的交易数据;
通过哈希变换函数对待计算的交易数据进行计算,获得对应的哈希值。
第二方面,本申请实施例提供一种交易数据存储装置,应用于区块链系统,区块链系统包括多个交易节点,每个交易节点包括有多个按照时间顺序排列的交易数据,装置包括:
选择模块,用于针对多个交易节点中的任意一个待处理交易节点,在除该待处理交易节点外的其他交易节点中选择一个交易节点作为目标交易节点;
第一交易数据获取模块,用于获取目标交易节点在第一时间节点和第二时间节点之间的第一交易数据,其中,第一时间节点在第二时间节点之前;
第二交易数据获取模块,用于获取待处理交易节点在第一时间节点和第二时间节点之间的第二交易数据;
哈希值计算模块,用于合并计算第一交易数据和第二交易数据的哈希值;
存储模块,用于将哈希值存储在待处理交易节点对应的数据区块中。
在可选的实施方式中,装置还包括:
数据区块生成模块,用于根据每个数据区块的大小,将待处理交易节点上的交易数据按照时间顺序生成至少一个相应大小的数据区块。
在可选的实施方式中,存储模块具体用于:
将哈希值存储于待处理交易节点在第二时间节点后生成的数据区块中。
第三方面,本申请实施例提供一种区块链系统,包括多个电子设备,每个电子设备包括处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当区块链系统运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行如前述实施方式任一的交易数据存储方法。
第四方面,本申请实施例提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行如前述实施方式任一方法的步骤。
本申请实施例提供的交易数据存储方法、装置、区块链系统和存储介质,应用于包括多个交易节点的区块链系统,每个交易节点包括有多个按照时间顺序排列的交易数据。对于区块链系统中的任意一个交易节点,通过合并计算该节点在一个时间段内的交易数据与其他交易节点在同一时间段内的交易数据的哈希值,使得该交易节点既包括自己的交易数据也包括其他交易节点的交易数据,可以防止单个交易节点的交易数据被篡改。另外,本申请的每个交易节点都只是在一定的时间节点进行哈希计算,无需进行全局排序,降低了所需的网络开销,也消除了由于只使用一个排序服务节点进行排序所产生的单点故障风险。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的交易数据存储方法的流程图之一;
图2为本申请实施例提供的交易数据存储方法的流程图之二;
图3为本申请实施例提供的步骤s104的子步骤流程图;
图4为本申请实施例提供的交易数据存储装置的功能模块图;
图5为本申请实施例提供的区块链系统的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
主要元件符号说明:10-区块链系统;20-电子设备;21-处理器;22-存储器;23-总线;100-交易数据存储装置;101-选择模块;102-第一交易数据获取模块;103-第二交易数据获取模块;104-哈希值计算模块;105-存储模块;106-数据区块生成模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
请参照图1,图1为本申请实施例提供的交易数据存储方法的流程图之一。在本实施例中,交易数据存储方法应用于区块链系统10,其中,区块链系统10包括多个交易节点,每个交易节点包括有多个按照时间顺序排列的交易数据,该方法包括:
步骤s101,针对多个交易节点中的任意一个待处理交易节点,在除该待处理交易节点外的其他交易节点中选择一个交易节点作为目标交易节点。
步骤s102,获取目标交易节点在第一时间节点和第二时间节点之间的第一交易数据。其中,第一时间节点在第二时间节点之前。
步骤s103,获取待处理交易节点在第一时间节点和第二时间节点之间的第二交易数据。
步骤s104,合并计算第一交易数据和第二交易数据的哈希值;
步骤s105,将哈希值存储在待处理交易节点对应的数据区块中。
在上述步骤中,对于区块链系统10中的任意一个交易节点,通过合并计算该节点在一个时间段内的交易数据与其他交易节点在同一时间段内的交易数据的哈希值,使得该交易节点既包括自己的交易数据也包括其他交易节点的交易数据,可以防止单个交易节点的交易数据被篡改。另外,每个交易节点都只是在一定的时间节点进行哈希计算,无需进行全局排序,降低了所需的网络开销,也消除了由于只使用一个排序服务节点进行排序所产生的单点故障风险。
值得说明的是,交易节点是指区块链系统10中产生不同的交易数据的节点,可以理解为不同的企业对应不同的交易节点,大型企业的不同子公司也可以对应不同的交易节点。每个交易节点上都存储有在该交易节点上产生的交易数据,每个交易数据都包括交易时间。
其次,第一交易数据和第二交易数据在本实施例中仅用于区分目标交易节点和待处理交易节点上的交易数据,并不表示交易数据发生的先后顺序。
下面对上述的步骤进行举例说明。例如,在本实施例中,区块链系统10包括有4个交易节点,分别为p1、p2、p3、p4,针对4个交易节点中的任意一个待处理交易节点,例如p1。
区块链系统10可以按照一定的时间间隔进行上述步骤,例如,若交易节点的第一个交易数据产生的交易时间节点为t1,在一段时间后,交易数据的交易时间节点为t2,再过一段时间后,交易数据的交易时间节点为t3。区块链系统10可以在t2时间节点或t3时间节点进行上述步骤。
例如,在t2时间节点时,待处理交易节点p1在除了p1之外的其他交易节点(即p2、p3和p4)中选择一个交易节点作为目标交易节点,例如p3。
随后,获取目标交易节点(即p3)中的第一交易数据,其中,第一交易数据的交易时间位于第一时间节点(即t1时间节点)和第二时间节点(即t2时间节点)之间;获取待处理交易节点(即p1)的第二交易数据,其中,第二交易数据的交易时间也位于第一时间节点(即t1时间节点)和第二时间节点(即t2时间节点)之间。其中,t1时间节点位于第二时间节点之前。在获取到第一交易数据和第二交易数据之后,将第一交易数据和第二交易数据合并计算哈希值,并存储在待处理交易节点p1的数据区块中。
值得说明的是,区块链系统10也可以在t3时间节点时进行上述步骤,并计算哈希值。在此时间节点时,上述步骤s102和s103中的第一时间节点则为t2时间节点,第二时间节点则为t3时间节点。
区块链系统10可以按照上述步骤每隔一段时间,获取该时间段内的待处理交易节点和目标交易节点的交易数据,合并计算哈希值并存储。
进一步地,在本实施例中,请参照图2,图2为本申请实施例提供的交易数据存储方法的流程图之二。在本实施例中,交易数据存储方法还包括:
步骤s106,根据每个数据区块的大小,将待处理交易节点上的交易数据按照时间顺序生成至少一个相应大小的数据区块。
在本步骤中,当在第二时间节点时计算出待处理交易节点的第二交易数据和目标交易节点的第一交易数据之间的哈希值,在第二时间节点之后,区块链系统10还会根据预设的数据区块的大小,将待处理交易节点上的交易数据按照时间顺序生成至少一个相应大小的数据区块,每个数据区块链式连接,形成链状的数据结构,即区块链。
在另一种实施方式中,区块链系统10还可以根据生成区块的时间限制,将待处理交易节点上的交易数据按照时间顺序生成数据区块。例如,时间限制可以为一个小时,即每隔一个小时,将此段时间内的所有交易数据生成一个数据区块。
例如,若在t2时间节点时,待处理交易节点p1上产生了50条交易数据,而预设的数据区块的大小为5条交易数据(即一个数据区块包括5条交易数据),则p1交易节点上的50条交易数据按照时间顺序生成10个数据区块,每个数据区块包括5条交易数据。
值得说明的是,除了上述举例的通过交易数据的数量设置数据区块的大小之外,还可以通过字节大小设置数据区块的大小,例如,预设的数据区块的大小还可以是1gb。
另外,区块链系统10在生成数据区块时,可以按照预设的时间间隔执行,也可以是当产生的交易数据的大小足够生成一个数据区块时再执行该操作。
若区块链系统10按照预设的时间间隔执行生成数据区块的操作,其时间间隔与计算哈希值的时间间隔可以相同也可以不同。例如,可以在生成多个数据区块后计算一次哈希值,也可以每生成一个数据区块计算一次哈希值,具体操作可以由用户根据需求自行设置,在此不作限定。
具体地,在本实施例中,步骤s105具体包括:
将哈希值存储于待处理交易节点在第二时间节点后生成的数据区块中。
在本实施例中,当在某一时间节点合并计算第一交易数据和第二交易数据的哈希值之后,将计算获得的哈希值存储在该时间节点之后生成的数据区块中。
例如,若此时的时间节点为t2,上一时间节点为t1,当在t2时间节点时获取了t1和t2之间的交易数据并合并计算了哈希值,则t2时间节点生成的哈希值应当存储在t2时间节点之后生成的数据区块中。
值得说明的是,一个数据区块中可以只存储交易数据,也可以同时存储交易数据和哈希值。
进一步地,在本实施例中,步骤s101具体包括:
通过随机函数从多个除待处理交易节点外的其他交易节点中随机选择一个交易节点作为目标交易节点。
在本实施例中,当待处理交易节点确定后,通过随机函数从区块链系统10中的所有其他的交易节点中随机选择一个交易节点作为目标交易节点。然后再将目标交易节点的交易数据和待处理交易节点的交易数据合并计算哈希值,可以避免单个交易节点的交易数据被篡改。
例如,若区块链系统10包括4个交易节点,分别为p1、p2、p3、p4,若p1为待处理交易节点。在某一时间节点时,通过随机函数从p2、p3、p4中随机选择一个交易节点作为目标交易节点,例如p4,则合并计算p1和p4在相应时间段内的哈希值。
在下一时间节点时,通过随机函数从p2、p3、p4中再随机选择一个交易节点作为目标交易节点,可以是p2交易节点或是p3交易节点,也有可能和上一时间节点的随机结果相同,为p4交易节点。
通过随机选择的方式,可以保证目标交易节点的结果无法预测,从而进一步避免单个交易节点的交易数据被篡改。
请参照图3,图3为本申请实施例提供的步骤s104的子步骤流程图。在本实施例中,步骤s104包括子步骤s1041和子步骤s1042。具体地:
步骤s1041,将第一交易数据和第二交易数据合并为一组待计算的交易数据。
步骤s1042,通过哈希变换函数对待计算的交易数据进行计算,获得对应的哈希值。
首先,需要说明的是,哈希变换函数用于将任意长度的数据映射为较短的固定长度的数据,这个较短的数据称为哈希值。哈希值是一段数据的唯一确定的摘要表示形式,可以用于判断数据是否被篡改。哈希变换函数通常包括md5、sha-1和sha-2等。
在上述子步骤中,首先将从目标交易节点中获取到的第一交易数据和从待处理交易数据中获取到的第二交易数据合并,即获得待计算的交易数据,再通过哈希变换函数对合并后获得的待计算的交易数据进行计算,获得哈希值。
通过上述方法可以将两个不同的交易节点的交易数据进行关联,避免其中的单个交易节点的交易数据被篡改。
值得说明的是,上述步骤描述的是针对区块链系统10中的任意一个交易节点的执行步骤。在本实施例中,区块链系统10中的每一个交易节点的执行步骤均与上述步骤相同,在此不作详细描述。
综上,本申请实施例提供的交易数据存储方法、装置、区块链系统10和存储介质,应用于包括多个交易节点的区块链系统10,每个交易节点包括有多个按照时间顺序排列的交易数据。对于区块链系统10中的任意一个交易节点,通过合并计算该节点在一个时间段内的交易数据与其他交易节点在同一时间段内的交易数据的哈希值,使得该交易节点既包括自己的交易数据也包括其他交易节点的交易数据,可以防止单个交易节点的交易数据被篡改。另外,本申请的每个交易节点都只是在一定的时间节点进行哈希计算,无需进行全局排序,降低了所需的网络开销,也消除了由于只使用一个排序节点进行排序所产生的单点故障风险。
基于同一发明构思,本申请实施例中还提供了与交易数据存储方法对应的交易数据存储装置100,由于本申请实施例中的装置解决问题的原理与本申请实施例上述交易数据存储方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
具体请参照图4,图4为本申请实施例提供的交易数据存储装置100的功能模块图。在本实施例中,该装置应用于区块链系统10,区块链系统10包括多个交易节点,每个交易节点包括有多个按照时间顺序排列的交易数据,装置包括:
选择模块101,用于针对多个交易节点中的任意一个待处理交易节点,在除该待处理交易节点外的其他交易节点中选择一个交易节点作为目标交易节点。
第一交易数据获取模块102,用于获取目标交易节点在第一时间节点和第二时间节点之间的第一交易数据,其中,第一时间节点在第二时间节点之前。
第二交易数据获取模块103,用于获取待处理交易节点在第一时间节点和第二时间节点之间的第二交易数据。
哈希值计算模块104,用于合并计算第一交易数据和第二交易数据的哈希值。
存储模块105,用于将哈希值存储在待处理交易节点对应的数据区块中。
进一步地,请继续参照图4,在本实施例中,装置还包括:
数据区块生成模块106,用于根据每个数据区块的大小,将待处理交易节点上的交易数据按照时间顺序生成至少一个相应大小的数据区块。
进一步地,存储模块105具体用于:
将哈希值存储于待处理交易节点在第二时间节点后生成的数据区块中。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本申请实施例还提供了一种区块链系统10,如图5所示,区块链系统10包括多个电子设备20,各个电子设备20互相通信连接组成区块链系统10。
进一步地,请参照图6,图6为本申请实施例提供的电子设备20的结构示意图,包括:处理器21、存储器22、和总线23。存储器22存储有处理器21可执行的机器可读指令(比如,图4中的交易数据存储装置100中的多个模块对应的执行指令等),当电子设备20运行时,处理器21与存储器22之间通过总线23通信,机器可读指令被处理器21执行时执行上述的交易数据存储方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器21运行时执行上述的交易数据存储方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述任一实施例的方法,从而降低排序过程中的网络开销,消除单点故障的风险,同时还能避免单个交易节点的交易数据被恶意篡改。
在一些实施例中,处理器21可以包括一个或多个处理核(例如,单核处理器21(s)或多核处理器21(s))。仅作为举例,处理器21可以包括中央处理单元(centralprocessingunit,cpu)、专用集成电路(applicationspecificintegratedcircuit,asic)、专用指令集处理器21(applicationspecificinstruction-setprocessor,asip)、图形处理单元(graphicsprocessingunit,gpu)、物理处理单元(physicsprocessingunit,ppu)、数字信号处理器21(digitalsignalprocessor,dsp)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、可编程逻辑器件(programmablelogicdevice,pld)、控制器、微控制器单元、简化指令集计算机(reducedinstructionsetcomputing,risc)、或微处理器21等,或其任意组合。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备20和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的电子设备20、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器21可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
另外,在本申请各个实施例中的各功能单元可以集成在一为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。
应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。