发明内容
本申请的目的在于提供一种基于区块链的数据处理方法、装置、电子设备及计算机可读存储介质,旨在解决现有结算库在对凭证交易数据进行处理和结算时无法准确确定异常来源或异常点的问题。
为实现上述目的,本申请首先提供了一种基于区块链的数据处理方法,该方法包括:
根据区块链中每个用户的账户实时凭证数量生成余额数据;
根据区域链网络在当前结算周期的凭证产出数确定第一凭证新增数;
对所述余额数据在所述当前结算周期时的各账户总凭证数量与在前一个结算周期时的各账户总凭证数量作差,得到第二凭证新增数;
判断所述第二凭证新增数是否与所述第一凭证新增数一致;
若所述第二凭证新增数与所述第一凭证新增数不一致,则根据每个用户在所述当前结算周期内的各实时交易数据生成交易流水数据,并根据所述交易流水数据中的各项支出凭证数和收入凭证数计算得到第三凭证新增数;
判断所述第三凭证新增数是否与所述第一凭证新增数一致;
若所述第三凭证新增数与所述第一凭证新增数一致,则根据所述交易流水数据修正当前结算周期的余额数据;
若所述第三凭证新增数与所述第一凭证新增数不一致,则根据区块链日志重新生成当前结算周期的余额数据和交易流水数据。
可选的,该数据处理方法还包括:
为错误余额数据和错误交易流水数据附加异常标记;其中,所述错误余额数据为计算得到的第二凭证新增数与所述第一凭证新增数不一致的余额数据,所述错误交易流水数据为计算得到的第三凭证新增数与所述第一凭证新增数不一致的交易流水数据;
利用预设的异常交易数据存储池存储附加有所述异常标记的错误余额数据和错误交易流水数据。
可选的,该数据处理方法还包括:
在利用预设的异常交易数据存储池存储附加有所述异常标记的错误余额数据和错误交易流水数据之后,删除在所述异常交易数据存储池中存储时长超过预设时长的错误余额数据和错误交易流水数据。
可选的,该数据处理方法还包括:根据所述错误余额数据、所述错误流水数据和所述区块链日志确定异常操作和执行所述异常操作的用户。
为实现上述目的,本申请还提供了一种基于区块链的数据处理装置,该装置包括:
余额数据生成单元,用于根据区块链中每个用户的账户实时凭证数量生成余额数据;
凭证实际产出数确定单元,用于根据区域链网络在当前结算周期的凭证产出数确定第一凭证新增数;
余额数据新增凭证数计算单元,用于对所述余额数据在所述当前结算周期时的各账户总凭证数量与在前一个结算周期时的各账户总凭证数量作差,得到第二凭证新增数;
第一一致性判断单元,用于判断所述第二凭证新增数是否与所述第一凭证新增数一致;
流水数据新增凭证数计算单元,用于当所述第二凭证新增数与所述第一凭证新增数不一致时,根据每个用户在所述当前结算周期内的各实时交易数据生成交易流水数据,并根据所述交易流水数据中的各项支出凭证数和收入凭证数计算得到第三凭证新增数;
第二一致性判断单元,用于判断所述第三凭证新增数是否与所述第一凭证新增数一致;
余额数据修正单元,用于当所述第三凭证新增数与所述第一凭证新增数一致时,则根据所述交易流水数据修正当前结算周期的余额数据;
余额数据及流水数据生成单元,用于当所述第三凭证新增数与所述第一凭证新增数不一致时,根据区块链日志重新生成当前结算周期的余额数据和交易流水数据。
可选的,该数据处理装置还包括:
异常标记附加单元,用于为错误余额数据和错误交易流水数据附加异常标记;其中,所述错误余额数据为计算得到的第二凭证新增数与所述第一凭证新增数不一致的余额数据,所述错误交易流水数据为计算得到的第三凭证新增数与所述第一凭证新增数不一致的交易流水数据;
异常数据存储单元,用于利用预设的异常交易数据存储池存储附加有所述异常标记的错误余额数据和错误交易流水数据。
可选的,该数据处理装置还包括:
定期删除单元,用于在利用预设的异常交易数据存储池存储附加有所述异常标记的错误余额数据和错误交易流水数据之后,删除在所述异常交易数据存储池中存储时长超过预设时长的错误余额数据和错误交易流水数据。
可选的,该数据处理装置还包括:
异常操作和异常用户确定单元,用于根据所述错误余额数据、所述错误流水数据和所述区块链日志确定异常操作和执行所述异常操作的用户。
为实现上述目的,本申请还提供了一种电子设备,所述电子设备包括存储器、处理器以及总线,所述存储器上存储有可在所述处理器上运行的数据处理程序,所述数据处理程序被所述总线传输至所述处理器,并在被所述处理器执行时实现如上述内容所描述的数据处理方法。
为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序可被一个或者多个处理器执行,以实现如上述内容所描述的数据处理方法。
为解决现有技术缺陷,本申请提供的基于区块链的数据处理方法在当基于余额数据对当前结算周期相对于前一个计算周期的各账户总凭证数量的差值(第二凭证新增数),与当前结算周期内的实际产出的凭证数(第一凭证新增数,该数值是可信的)不一致时,还通过交易流水数据算得当前结算周期的另一个凭证新增数(第三凭证新增数),以结合从两种数据产生的三个数值来更加准确的定位异常点。区别于仅基于余额数据时无法准确定位异常点的现有技术,本申请在新增的流水数据的帮助下可以更加准确的定位异常操作、更便于结合区块链日志定位异常操作的执行者,进而准确的追责。
本申请同时还提供了一种基于区块链的数据处理装置、电子设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
实施例一
请参见图2,图2为本申请实施例提供的一种基于区块链的数据处理方法的流程图,其包括以下步骤:
S101:根据区块链中每个用户的账户实时凭证数量生成余额数据;
本步骤旨在根据处于区块链网络中的每个用户的账户实时凭证数量来生成余额数据,也就是说该余额数据现为一张动态变化的表,因为记录着的每个用户的账户中剩余的凭证数量会因凭证交易而出现变化。
举个例子,假设A用户和B用户之前均有100个凭证,在经过一条由A用户转给B用户50个凭证的交易后,余额数据中的数据的变化如下:
(A:100,B:100)→(A:50,B:150)。
S102:根据区域链网络在当前结算周期的凭证产出数确定第一凭证新增数;
在S101的基础上,本步骤根据区域链网络在当前结算周期内实际产出的凭证数确定第一凭证新增数。
S103:对余额数据在当前结算周期时的各账户总凭证数量与在前一个结算周期时的各账户总凭证数量作差,得到第二凭证新增数;
本步骤旨在对余额数据在当前结算周期时的各账户总凭证数量与在前一个结算周期时的各账户总凭证数量作差,来得到基于余额数据的第二凭证新增数。举个例子,在每个结算周期的时间是24小时时,本步骤将会使用当天24点时的余额数据中记录的各账户总凭证数量减去前一天24点时的余额数据中记录的各账户总凭证数量,以此来得到基于余额数据中记录的各账户凭证数量来计算得到该第二凭证新增数。
一旦结算库登陆信息泄露,余额数据就会有遭到篡改的可能,比如单单增加了某个账户的凭证数量(一旦通过此种手段为某个账户增加了大量凭证,若未能及时发现将导致整个凭证系统遭到严重破坏和遭受损失),因此相比于第一凭证新增数来说,基于余额数据计算得到的第二凭证新增数相对不可靠。
S104:判断第二凭证新增数是否与第一凭证新增数一致;
在S102和S103的基础上,本步骤旨在判断基于余额数据计算得到第二凭证新增数是否与区块链网络凭证实际产出情况确定出的第一凭证新增数相一致,以通过判断得到的一致性结果来判断余额数据是否遭到篡改。
因为在正常的、结算库登陆信息未泄露的情况下,按照S103计算得到的第二凭证新增数应与按照S102计算得到的第一凭证新增数是一致的。
虽然能够通过本步骤在第二凭证新增数与第一凭证新增数不一致时,判断出余额数据遭到恶意篡改,但只能确定出余额数据存在异常,无法准确的定位是余额数据的哪个具体数据遭到的恶意篡改,此种情况下修复难度将会因覆盖过大的范围导致难度较大。
S105:凭证交易数据无异常;
本步骤建立在S104的判断结果为第二凭证新增数与第一凭证新增数一致的基础上,说明基于余额数据计算得到的当前结算周期内的凭证总额没有遭到恶意篡改。
S106:根据每个用户在当前结算周期内的各实时交易数据生成交易流水数据,并根据交易流水数据中的各项支出凭证数和收入凭证数计算得到第三凭证新增数;
本步骤建立在S104的判断结果为第二凭证新增数与第一凭证新增数不一致的基础上,因为虽然根据第二凭证新增数与第一凭证新增数不一致明确了余额数据遭到了使凭证总数不一致的恶意篡改,但仅基于余额数据中记录的余额数据还不足以确定出恶意篡改者对哪个账户进行了恶意操作导致其凭证余额与实际不符,因此本步骤还根据每个用户在当前结算周期内的各实时交易数据生成交易流水数据,以根据交易流水数据中的各项支出凭证数和收入凭证数计算得到第三凭证新增数。
由于交易流水数据记录的是每个用户的实时凭证交易数据,例如A用户交易给B用户50个凭证,则体现在交易流水数据上的数据为A:+50,B:-50。相比于经过此条交易后体现在余额数据中的数据(A:50,B:150),交易流水数据中明显拥有一些未包含在余额数据中的信息。交易流水数据与余额数据相关但又相对独立的记录了一些不包含在余额数据中的信息,因此在确定余额数据有异常的基础上,不仅可以通过对照交易流水数据来进一步确定异常操作,由于这两种数据的独立性,还可以进一步是否只有余额数据遭到了恶意篡改,还是交易流水数据也遭到同样的恶意篡改,以便于根据篡改的覆盖范围来决定修复的方式。
S107:判断第三凭证新增数是否与第一凭证新增数一致;
在S106的基础上,本步骤旨在通过判断第三凭证新增数是否与第一凭证新增数来确定交易流水数据中的数据是否也遭到恶意篡改导致存在异常。
S108:根据交易流水数据修正当前结算周期的余额数据;
本步骤建立在S107的判断结果为第三凭证新增数与第一凭证新增数一致的基础上,说明根据交易流水数据中记录的当前结算周期的流水数据计算得到凭证新增数与区块链网络实际产出的凭证数相同,因此说明恶意篡改者只修改了余额数据。因此只需要修正余额数据中的数据即可,因此本步骤将根据记录正确交易流水数据的交易流水数据来修正存在错误数据的当前结算周期的余额数据。
进一步的,上述内容给出了当余额数据对当前结算周期内凭证新增数因恶意篡改导致与凭证的实际产出数不一致的情况下,通过交易流水数据来进行修正的方式,但上述内容仅针对凭证新增数不一的情况,若恶意篡改余额数据比较小心,在减少某个账户的凭证余额的同时将减少的部分增加至另一个账户上,将不会导致基于余额数据计算得到的第二凭证新增数与第一凭证新增数不一致,但是,若恶意篡改者仅在余额数据中进行了上述修改,还是能够从交易流水数据中发现异常之处,并进行相应的修正。
S109:根据区块链日志重新生成当前结算周期的余额数据和交易流水数据。
本步骤建立在S107的判断结果为第三凭证新增数与第一凭证新增数不一致的基础上,说明不仅余额数据遭到恶意篡改,交易水流数据也遭到恶意篡改,因此基于可靠的第一凭证新增数,无论第二凭证新增数是否与第三凭证新增数一致,余额数据和交易流水数据都已处于不可用状态,需要修复。因此本步骤将利用事无巨细的记录有区块链网络每一条数据的区块链日志来重新生成当前结算周期的余额数据和交易流水数据,以通过重新生成正确的余额数据和交易流水数据的方式来消除因恶意篡改带来的影响。
进一步的,因存在恶意篡改的错误余额数据和/或错误交易流水数据,还可以暂不删除,而是将其保存至一个特定的区域,以结合区块链日志在后续步骤中进行恶意篡改者的追溯,从而在找到恶意篡改事件的源头的基础上进行针对性的修复,尽可能的杜绝同类问题再次出现。
本实施例提供的基于区块链的数据处理方法:当基于余额数据对当前结算周期相对于前一个计算周期的各账户总凭证数量的差值(第二凭证新增数),与当前结算周期内的实际产出的凭证数(第一凭证新增数,该数值是可信的)不一致时,还通过交易流水数据算得当前结算周期的另一个凭证新增数(第三凭证新增数),以结合从两种数据中产生的三个数值来更加准确的定位异常点。区别于仅基于余额数据时无法准确定位异常点的现有技术,本申请在新增的流水数据的帮助下可以更加准确的定位异常操作、更便于结合区块链日志定位异常操作的执行者,进而准确的追责。
根据本实施例所提供的技术方法,所构成的新数据结算系统的架构图将表现为图3,图3中的计算库部分将同时由交易流水数据和余额数据两部分组成,作为能够实现上述技术方案的基础。
实施例二
请参见图4,图4为本申请实施例提供的数据处理方法中处理异常数据的方法流程图,在实施例一的基础上,出于追溯恶意篡改者的考虑,本实施例还对因存在恶意篡改的错误余额数据和/或错误交易流水数据提供一些处理方式,来更好追溯恶意篡改者,包括如下步骤:
S201:为错误余额数据和错误交易流水数据附加异常标记;
本步骤通过附加异常标记的方式来标记错误余额数据和错误交易流水数据。其中,错误余额数据为计算得到的第二凭证新增数与第一凭证新增数不一致的余额数据,错误交易流水数据为计算得到的第三凭证新增数与第一凭证新增数不一致的交易流水数据。具体的,该异常标记可以有多种表现形式,例如可以是一个标志位、可以是一个自定义字段、可以是在原有余额数据或交易流水数据的头信息中增加的一个特殊符号等等,只要能够实现确定错误余额数据的目的的方式均可,此处并不做具体限定。
S202:利用预设的异常交易数据存储池存储附加有异常标记的错误余额数据和错误交易流水数据;
在S201的基础上,本步骤旨在将所有附加有异常标记的错误余额数据和错误交易流水数据存储在预设的异常交易数据存储池中,进一步的,为了防止这些错误余额数据和错误交易流水数据造成其它不良影响,还可以为该异常交易数据存储池设备访问密码,或设置特殊的访问路径等。
S203:删除在异常交易数据存储池中存储时长超过预设时长的错误余额数据和错误交易流水数据。
在S202的基础上,本步骤旨在删除在异常交易数据存储池中存储时长超过预设时长的错误余额数据和错误交易流水数据,目的在于尽可能的节省存储空间,该预设时长可根据实际应用场景下对恶意篡改者追溯的时限灵活设置。同时经过一段时间累积的多个错误数据也便于同时根据多个错误数据中的异常数据发现从单个错误数据中不易发现的异常交易数据。
进一步的,在进行追溯时,还可以同时结合区块链日志记录的相应时段的操作日志。
因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
实施例三
请参见图5,图5为本申请实施例提供的一种基于区块链的数据处理装置的结构框图,该装置可以包括:
余额数据生成单元100,用于根据区块链中每个用户的账户实时凭证数量生成余额数据;
凭证实际产出数确定单元200,用于根据区域链网络在当前结算周期的凭证产出数确定第一凭证新增数;
余额数据新增凭证数计算单元300,用于对余额数据在当前结算周期时的各账户总凭证数量与在前一个结算周期时的各账户总凭证数量作差,得到第二凭证新增数;
第一一致性判断单元400,用于判断第二凭证新增数是否与第一凭证新增数一致;
流水数据新增凭证数计算单元500,用于当第二凭证新增数与第一凭证新增数不一致时,根据每个用户在当前结算周期内的各实时交易数据生成交易流水数据,并根据交易流水数据中的各项支出凭证数和收入凭证数计算得到第三凭证新增数;
第二一致性判断单元600,用于判断第三凭证新增数是否与第一凭证新增数一致;
余额数据修正单元700,用于当第三凭证新增数与第一凭证新增数一致时,则根据交易流水数据修正当前结算周期的余额数据;
余额数据及流水数据生成单元800,用于当第三凭证新增数与第一凭证新增数不一致时,根据区块链日志重新生成当前结算周期的余额数据和交易流水数据。
进一步的,该数据处理装置还可以包括:
异常标记附加单元,用于为错误余额数据和错误交易流水数据附加异常标记;其中,错误余额数据为计算得到的第二凭证新增数与第一凭证新增数不一致的余额数据,错误交易流水数据为计算得到的第三凭证新增数与第一凭证新增数不一致的交易流水数据;
异常数据存储单元,用于利用预设的异常交易数据存储池存储附加有异常标记的错误余额数据和错误交易流水数据。
更进一步的,该数据处理装置还可以包括:
定期删除单元,用于在利用预设的异常交易数据存储池存储附加有异常标记的错误余额数据和错误交易流水数据之后,删除在异常交易数据存储池中存储时长超过预设时长的错误余额数据和错误交易流水数据。
更进一步的,该数据处理装置还可以包括:
异常操作和异常用户确定单元,用于根据错误余额数据、错误流水数据和区块链日志确定异常操作和执行异常操作的用户。
本实施例作为与方法实施例对应的装置实施例存在,具有与方法实施例相同的有益效果,此处不再一一赘述。
在上文中已经通过一些实施例对本申请如何通过余额数据和交易流水数据中产生的三个值来准确定位异常点进行了详细的描述,本申请还提供一种与该方法对应的实体硬件装置,此部分内容原理与方案部分相对应,实现原理的部分此处不再赘述,以下将对该实体硬件装置的硬件组成进行描述,请参见图6,图6为本申请实施例提供的一种电子设备的结构示意图:
该电子设备900包括存储器910、处理器920以及总线930,存储器910上存储有可在处理器920上运行的数据处理程序,该数据处理程序通过总线930被传输至处理器920,并在被处理器920执行时可实现如上述实施例所描述的数据处理方法中的各步骤。
其中,存储器910至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器910在一些实施例中可以是电子设备900的内部存储单元,例如该电子设备900的硬盘。存储器910在另一些实施例中也可以是该电子设备900的外部存储设备,例如该电子设备900上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器910还可以同时由内部存储单元和外部存储设备同时组成。进一步的,存储器910不仅可以用于存储安装于该电子设备900中的各种应用软件和各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器920在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器910中存储的程序代码或处理数据,例如执行数据处理的程序等。
总线930可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条双向中空指示线表示,但并不表示仅有一根总线或一种类型的总线。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中所给出的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。