具体实施方式
为了便于本领域技术人员的理解,下面结合实施例对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。
本发明实施例首先提供了一种用于实行基于区块链技术的数据异常追踪方法的系统,具体的,该系统包括如下模块以及用户终端、服务器。
1,区块链程序管理模块:用于存储数据处理程序,以及数据获取、数据处理、数据计算等与程序相关的信息。
2,程序调用模块:用于调用程序管理模块的数据处理程序,对数据进行处理。比如,依据识别到的人为操作、触发器、应用程序任务执行机制、智能合约等,调用程序管理模块的数据处理程序,对数据新增、修改、删除、查询、转化、关联分析等等数据处理。
3,数据存储模块:用于将数据处理程序处理的过程数据存储于数据日志区块,将数据处理的数据结果存储于对应的业务数据区块,将数据处理程序对应的算法对应于数据存储的数据区块序列对应存储于算法区块。
4,异常数据识别模块:当识别到异常数据的发起、异常预警等异常事件时,识别异常数据的发起源,通过业务数据区块、结合数据日志区块,对应算法区块的算法进行核验,追踪数据异常发生点。
5,用户终端:当用户发现异常数据时,可以通过用户终端向系统发起异常数据反馈。
6,大数据服务器:接收数据区块(包括正常的业务数据以及异常数据),下载到本地,通过公钥对相应区块数据进行解密后,对应解析并存储于大数据中台的相应数据表。
并且,对应地,本实施例提供了一种基于区块链技术的数据异常追踪方法,包括如下步骤。
1,将数据处理程序及算法信息存储于区块链程序管理模块。
区块链系统搭建时,将系统进行数据处理的程序存储于区块链底层的程序管理模块。同时,程序管理模块获取并存储前端用户操作所触发的程序处理数据的算法信息、触发器或应用程序任务调度执行时的数据处理的算法信息、区块链智能合约对数据进行处理的算法信息等。
在搭建系统时,系统开发者对系统所需的程序相对应的程序代码编译形成系统,对应的,在编译过程中,将相关程序和算法都存储于程序管理模块。
具体地,系统将相关操作、执行任务、触发器、智能合约等指令发送机制、指令执行的条件、以及对应条件执行的算法对应存储至程序管理模块。
例如,在用户信息提交指令发送机制的程序中,在不同的条件下需调用执行不同的算法:
执行机制1:当用户年龄在18岁以下时执行算法1,用户年龄在18岁到30岁时执行算法2,用户年龄30岁到50岁时执行算法3,用户年龄50岁以上时执行算法4;
执行机制2:对于任何用户,均执行算法5(执行存储用户相关信息)。
上述算法、执行条件均存储在程序管理模块中。
因此,对应地,当用户在系统中点击提交信息时,系统根据用户输入的身份证信息,识别到用户年龄在18岁以下,则调用对应的算法1,执行为用户标签为未成年人;识别到用户年龄在18岁到30岁时,则调用对应的算法2,执行为用户标签为青年;识别到用户年龄30岁到50岁时,则调用对应的算法3,执行为用户标签为中年;识别到用户年龄50岁以上时,则调用对应的算法4,执行为用户标签为老年。同时,对于任何用户点击提交信息时,都执行用于存储用户相关信息的算法5。
如上,将相关程序以及对应条件执行的算法都存储在程序管理模块中,从而在发生数据异常时,可以根据程序判断在对应数据条件下应当调用的算法,进而才能追踪到算法调用是否存在异常的问题。
此外,进一步,作为优选实施例,当开发者上传存储系统程序或数据分析代码后,还对应存储开发者信息以及与当前程序维护相关的人员信息、对应的程序等信息,以便于发生异常时,若检测到是程序的异常,系统可以对应推送给相关人员。
2,调用程序管理模块的数据处理程序,对数据进行处理。
依据识别到的人为操作、触发器、应用程序任务执行机制、智能合约等,调用程序管理模块的数据处理程序,对数据进行新增、修改、删除、查询、转化、关联分析等等数据处理。
数据处理程序识别到人为操作、触发器、应用程序任务执行机制、智能合约等指令时,调用程序对应的算法,并执行相应的数据存储、数据获取、数据处理、数据计算等过程。
例如,在上述步骤1的所述举例中,当用户在系统中点击提交信息时,系统根据用户输入的身份证信息,识别到用户年龄,然后根据不同的用户年龄调用不同的算法,进行相应的数据处理。
3,将数据处理程序处理的过程数据存储于数据日志区块,将数据处理的数据结果存储于对应的业务数据区块,将数据处理程序对应的算法对应于数据存储的数据区块序列对应存储于算法区块。
在系统调用程序进行数据处理时,将数据处理的过程数据对应存储于对应的业务数据日志区块,将数据处理的业务数据结果存储于对应的业务数据区块,将数据处理程序对应的算法对应于数据存储的业务数据日志区块序列和对应于业务数据区块序列存储于算法区块。
也就是说,对于同一个数据,按区块序列分别存储有:过程数据(数据日志区块)、数据结果(业务数据区块)、所调用的算法(算法区块)。
各数据区块通过私钥进行加密后,连同公钥数据一起上传到对应的区块链,向各节点进行广播。
大数据服务器节点接收到新的数据区块后,下载到本地,通过公钥对相应区块数据进行解密后,对应解析并存储于大数据中台的数据表。
在目前的现有技术中,对于数据处理,首先是调用程序,然后计算或处理数据得到结果,之后存储该结果。
而本发明方案是调用执行程序获取处理结果的同时,将程序处理过程中的过程数据、数据处理结果、以及所用的执行算法本身均存储于相应不同的区块链区块中,而且,利用区块链的不可篡改特性,在发生异常时,本发明方案可以进行有效且有明确依据地利用数据及其所采用的算法进行追溯推演,进而获知异常的具体发生点。
另外,作为优选实施例,在上述步骤1中,将数据处理程序及算法信息存储于区块链程序管理模块时,还对应存储有系统开发者信息以及与当前程序维护相关的人员信息,因此在发生程序异常时,可以向对应的系统开发者或相关的维护人员推送异常信息。同时,本步骤中还存储有相关的过程数据,因此,本实施例还可以根据具体应用场景的需求将异常信息推送给数据操作关联的操作者;比如存在操作异常时,向数据操作关联的操作者或/及操作者账户的对应上级推送异常信息。
作为进一步的优选实施例,还可以将所调用的程序或算法的序号存储于数据日志区块,以便于当发生异常时,进行数据及算法的核验;当核验是程序造成的异常时,可以对应数据的数据日志区块存储的程序序号找到对应的程序发布者的账户及相关联账户进行程序造成系统异常的信息的推送,以便相关人员进行程序修复或优化。
4,当获取并识别到异常数据时,识别异常数据的发起源,通过业务数据区块、数据日志区块、算法区块进行核验,追踪数据异常发生点。
当人为发起数据异常反馈时,相应的异常数据对应的区块序列、数据字段、以及用户发起异常的原因(备注/说明)等异常信息都会上传到区块链,异常数据识别模块获取到异常信息后,调用区块序列对应的业务数据日志区块存储的业务过程数据、业务数据区块存储的数据结果、算法区块存储的算法,对应的异常数据对应的数据日志、业务数据、以及算法进行交叉验证推演。
具体的,当系统识别到异常数据的发起、异常预警等异常事件时,对应于异常数据,识别异常数据的发起源,通过业务数据区块的数据结果、结合数据日志区块的过程数据,对应算法区块的算法进行核验,追踪数据异常发生点。
通过前端人为发起异常反馈,或大数据中台进行数据监控等方式获取到异常数据,获取到异常数据的节点将异常数据信息通过私钥加密后,连同公钥一起上传到对应的业务异常数据区块,并广播到各节点。
利用区块链,将异常数据存储于区块链上的业务异常数据区块;同时,还可以保存于应用平台数据库的业务异常数据表中。
具体的,大数据服务器节点接收到新的数据区块后,下载到本地,通过公钥对相应的业务异常数据进行解密后,存储到对应的业务异常数据的数据表;大数据服务器通过异常数据识别模块,识别并获取当前异常数据所关联的算法以及算法执行过程的日志数据以及执行算法的前置数据等,并通过前置数据、算法、后置数据等进行一步步的核验,往前推演和验证异常发生点。
这里的前置数据具体是指执行算法时所需代入的数据。举例而言,比如,货物单价和数量是前置数据,代入计算器程序,计算获得货物总金额作为结果数据。然后在核验推演时,将获得的结果数据与区块存储的后置数据(货物总金额)进行核验。
在对异常数据进行核验时,首先核对通过程序管理模块存储的程序对应当前数据条件下需执行的算法与当前数据对应存储的算法是否一致,如果不一致,则为算法调用有问题,即找到问题点,并将找到的程序和算法信息存储到异常程序和算法发现区块,通过私钥加密后,连同公钥一起上传到区块链,并广播到各节点。
如果一致,则算法调用无问题;若前置数据通过算法核验得到的后置数据异常,则为后置数据异常,即找到问题点,并将找到的异常数据存储到业务异常数据发现区块,通过私钥加密后,连同公钥一起上传到区块链,并广播到各节点。
以此类推,每一个后置数据通过算法与前置数据进行核验。
若后置数据没有异常,继续往前推演前置数据。
具体的,可以将数据日志区块存储的前置数据与异常数据信息中的相对应数据进行比对,核验是否一致,若不一致,则为前置数据异常,即找到问题点。
对于数据的异常,即,当发现是后置数据或前置数据发生异常时,可以继续往源头追踪异常原因。因为数据的产生,一种情况下是用户通过终端输入保存的数据,另一种情况下是由一个程序执行的结果数据来作为另一个程序的采用数据,程序之间有关联,程序的执行顺序不同也会导致结果不同,后执行的程序的结果数据会覆盖掉其关联的另一程序的相应数据。
因此,本实施例所采用的方案可以对数据进行源头式的层层追踪,当监测到异常反馈时,系统针对当前的异常反馈自动生成异常问题追踪请求,获取相关数据和算法、程序进行反向推演核验;当针对当前异常问题追踪请求初步核验到是后置数据或前置数据发生异常时,还可以对该后置数据或前置数据相关联的其它程序继续进行同样的推演核验,以最终核验出发生异常的源头点。
也即,更进一步地,当核验推演出数据异常点为后置数据异常或前置数据异常时,或者当按照当前异常数据关联的数据及其算法程序,无法核验出具体异常点时,可以继续核验当前后置数据或前置数据是否关联有其它执行程序,若有,获取并识别当前后置数据或前置数据所关联的业务数据区块、数据日志区块的数据以及算法区块的算法,按照上述流程,对核验到的异常后置或前置数据做进一步推演核验,最终目的是追踪定位到数据发生异常的具体原因,进而可以进一步优化系统,保障系统的运营安全以及数据安全。
作为具体实施例,例如,在步骤1所举例说明的用户信息提交指令发送机制的程序执行中,当用户发现信息标签错误时,可以发起标签错误的问题反馈,反馈的异常信息形成数据区块上传到区块链,异常信息可以包括但不限于:用户信息(用户ID、对应输入的身份证号等)、异常数据为用户标签错误等等。
系统接收异常反馈,自动生成用户标签异常的问题追踪请求,通过私钥加密连同公钥一起,通过区块链系统广播到大数据服务器节点,大数据服务器节点下载问题追踪请求,通过公钥对问题追踪请求信息进行解密。
同时,大数据服务器节点接收到异常信息数据区块后,下载到本地,通过公钥对上述用户标签异常数据进行解密后,存储到对应的业务异常数据的数据表;大数据服务器通过异常数据识别模块,识别并获取当前异常数据所关联的算法以及算法执行过程的日志数据以及执行算法的前置数据等,并通过前置数据、算法、后置数据等进行一步步的核验,往前推演和验证异常发生点。
首先,核验算法调用是否正确;异常数据识别模块根据所获取的当前业务数据对应的算法区块存储的算法,以及程序管理模块存储的用户信息提交指令发送机制程序对应当前数据条件下需执行的算法;比如,当前用户数据为用户输入的身份证号112233201010100123,对应的算法区块存储的算法为算法2;而程序管理模块存储的程序对应当前数据条件需执行的算法为算法1;通过两者对比核验,发现算法调用不正确,从而确定异常点。然后,将找到的用户信息提交指令发送机制程序和算法信息存储到异常程序和算法发现区块,通过私钥加密后,连同公钥一起上传到区块链,并广播到各节点。
如果上述对应的算法区块存储的算法为算法1,程序管理模块存储的程序对应当前数据条件需执行的算法也为算法1,两者算法一致,则算法调用无误。
继续往前推演核验后置数据。
将前置数据(用户输入的身份证号)代入算法1执行,得出后置数据(即,执行结果):用户标签为未成年人。
同时,异常数据识别模块调取当前业务数据对应的业务数据区块存储的数据结果;如果数据结果不是用户标签为未成年人,比如数据结果显示为用户标签为青年,那么核验结果为后置数据异常,确定异常点,并将找到的异常数据(结果数据)存储到业务异常数据发现区块,通过私钥加密后,连同公钥一起上传到区块链,并广播到各节点。
另外,按照正常的处理程序,根据调用的正确算法对前置数据进行执行,可以获得对应正确的结果数据,但目前结果数据出现异常,因此,系统进一步判断为可能是程序出现异常或者是人为改动了结果数据;相应地,系统可以对应当前数据的数据日志区块存储的程序查找到对应的程序发布者的账户及相关联账户,将程序可能出现异常的信息推送给相关人员进行程序修复或优化。
对于后置数据异常,即用户标签有误,系统还可以进一步核验该用户标签是否还关联有其它执行程序,比如,用户标签的获得方式有两种,一是通过用户的身份证号算法而获得,二是通过用户通过终端输入的信息而直接获得。
在实际应用场景中,有可能系统预先设定为,用户在输入相关信息时,身份证号为必填项,用户标签为选填项。对应地,在获取用户标签时,先执行第一个程序,按照用户身份证号算法来计算获得用户标签,然后再执行第二个程序,直接通过用户在标签选项中所填入的信息来获得,并且,后执行的第二个程序的执行结果覆盖了先执行的第一个程序的执行结果,当两个程序的执行结果不相同时,就会导致用户所反馈的异常问题。对于相关联的其它程序,系统可以按照上述同样的流程进行往前推演核验。
因此,系统通过追踪异常问题的具体发生原因,可以发现系统程序设置是否存在不合理,从而可以将问题点反馈给相关程序人员,进而对系统进行改善优化,保障系统的正常运行。
如果当前业务数据对应的业务数据区块存储的数据结果是用户标签为未成年人,与前置数据代入算法1执行得到的后置数据一致,则说明后置数据无异常。
继续往前推演核验前置数据。
在此业务场景中,前置数据即为用户输入的身份证号,若目前系统根据用户输入的身份证号进行执行的结果数据为用户标签为青年,但用户反馈标签错误,并在反馈异常的原因备注说明为按照年龄,用户标签应为未成年人。
那么,对应地,异常数据识别模块调取当前业务数据对应的业务数据日志区块存储的业务过程数据,从中获取用户的身份证号;
同时,从用户发起的异常数据反馈信息中获取用户的身份证号;然后,对两者进行对比核验,核验身份证号是否一致。
如果两者一致,有可能是用户发起的异常反馈有误,实际并不存在上述异常数据,因此,系统将核验结果显示正常的消息推送给用户,也可以进一步将消息推送给系统管理员,以便让系统管理员进行人工核查。
如果两者不一致,说明用户提交的身份证号有误,前置数据异常,即确定异常点所在。
对于前置数据异常,即身份证号有误,系统还可以做进一步异常核验;核验身份证号码是否关联有其它执行程序;比如,身份证号的产生关联着两个程序,一是用户通过终端输入并保存;二是用户通过扫描程序对身份证扫描而识别获取到身份证号。
因此,对于当前的身份证号,系统可以进一步核验是通过何种方式得到的,进而可以追踪到发生异常的具体原因。
也就是说,根据实际应用场景,系统可以继续追踪作为前置数据的身份证号的具体来源,可能上述作为前置数据的身份证号不是来源于用户输入提交的身份证号,而是来源于其它关联信息,但因为来源错误而导致执行结果错误;也有可能上述用户标签为青年的信息并不是通过身份证号的算法生成得到的,而是通过用户端直接输入的信息而获取到青年,甚至可能是因为其它算法覆盖了由身份证号生成用户标签的算法而执行得到的不同值。
对于一个应用于实际业务场景的系统,必然同时并存多种算法和程序,程序之间有交叉,不同算法有关联,因此在对数据异常点进行推演验证时,可以以此类推地通过多个关联数据、算法来进行一步步溯源推演。
相应地,作为更优实施例,本发明方案还可以通过大数据中台进行自动监测,主动发起异常追踪请求,对程序进行核验是否存在异常。
继续以用户标签这个作为举例说明。
例如,用户标签的生成可以同时关联多个程序;一,根据用户的身份证号来生成对应的用户标签;二,根据用户输入保存的标签信息来生成用户标签;三,根据用户在平台的消费记录进行分析归类而生成用户标签;四,还可以根据其它大数据算法来生成用户标签,等等。
因为几个程序的输出数据结果都指向用户标签这同一个数据,因此,大数据中台可以主动发起异常追踪请求,利用用户标签这一目标数据来反向推演核验这几个关联程序之间的运行是否存在异常。
比如,大数据服务器以用户标签作为目标数据,核验上述生成用户标签的各个程序执行得到的用户标签结果是否一致。
当根据用户身份证号生成的用户标签与根据用户输入保存的标签信息而生成的用户标签不一致,或者与根据用户消费记录而归类生成的用户标签不一致时,那么,服务器分别获取与该目标数据关联的各个执行程序对应的业务数据区块、数据日志区块的数据以及算法区块的算法,然后按照与上述相同的核验步骤流程,分别对各个程序、对应数据进行一一反向推演,以核验各个程序是否存在异常。若存在异常,则进行针对性优化,进而保障系统程序的正常运行,尤其是保证存在关联性的程序在交叉运行时的正常运作。
综上所述,本发明方案通过对所调用的算法和相关数据进行一步步推演核验,以最终追踪确定异常点。
另外,作为优选实施例,开发者节点或监管节点收到异常程序和算法发现区块或业务异常数据发现区块时,下载到本地,通过公钥对相关数据进行解密,推送到系统前端,实现数据异常点的展示。
本发明方案基于大数据底层框架的区块链技术,通过将原数据、过程数据、结果数据以及对应算法、程序分别存储于对应区块中,当识别到异常数据时,通过对上述数据和对应算法、程序的一步步往前溯源推演,来验证数据发生异常的点所在,从而实现数据追踪和监测,自动定位数据发生的异常点,进而保障系统的运营安全以及数据安全。
本发明方案与现有技术的核心区别点在于:
现有技术中一般是通过记录数据本身和数据日志,之后当发生异常时,再将数据和日志调取出来进行对比,以查找异常数据发生点;现有技术并没有利用推演来溯源,更加没有利用处理数据的程序和算法本身来进行推演溯源以追踪数据异常点。
而本发明方案不只是通过数据和数据日志来进行追溯,还通过存储的算法本身和程序进行验证来追溯;具体地,利用存储的数据本身、数据日志以及所调用的算法、对应的程序来共同反向推演并核验,从而定位数据异常点。进一步地,如果发现异常发生点为程序本身,则可以追溯到程序问题,将相关问题推送给程序维护相关人员;如果是系统操作导致的异常,则将相关异常信息推送给操作相关人员;进而最终实现,在发生异常时,可以有针对性地予以快速解决。
为了更充分地理解本发明方案,下面再进一步给出两个不同应用场景下的具体实施例。
实例一
例如,在电商交易业务中,用户收到的货物数量与实际下单数量不一致时,用户发起收货数量异常的问题反馈,并将异常相关信息形成数据区块上传到区块链;系统接收到异常反馈后,自动生成收货数量异常的问题追踪请求,通过私钥加密连同公钥一起,通过区块链系统广播到大数据服务器节点,大数据服务器节点下载问题追踪请求,通过公钥对问题追踪请求信息进行解密。
大数据服务器节点接收到异常信息数据区块后,下载到本地,通过公钥对上述收货数量异常数据进行解密后,存储到对应的业务异常数据的数据表;大数据服务器通过异常数据识别模块,识别并获取当前异常数据所关联的算法以及算法执行过程的日志数据以及执行算法的前置数据等。
系统依据生成当前待确认收货的订单号的待确认收货数量时存储的对应算法以及对应前置数据(发货数量),验证发货环节是否存在数据异常。
按照正常的处理程序,一个交易业务的发货数量等于订单数量,这是该事项执行程序下的唯一算法,不存在不同数据条件下调用不同算法的情况,因此算法调用不存在问题。
按照一个业务场景,用户提交订单后,系统自动生成订单并建立对应的发货单;发货单的建立程序对应调用查询订单表中订单数量的查询算法,以查询到的订单数量作为发货数量,并在前端展示;并且,系统的保存发货信息的程序对应调用的是将前端展示的发货数量的数据写入发货信息表。
因此,根据发货环节生成存储的过程数据进行核验,若发货数量比实际下单数量多或者少,则判定为发货数量发生异常;同时,判断可能是由于操作人员在前端修改了发货数量导致发货数量异常,或者程序执行出现异常。
对于程序异常的情况,有可能存在以下情形。例如,用户在交易系统提交订单后,按对应的程序处理,应当是生成一条订单信息;但是,通过过程数据的核验,发现生成了两条相同的订单信息,建立发货单而调用订单数量查询算法时,查询到两条订单,然后将两条订单的发货数量都写入发货信息表,进而导致发货错误;又或者是发现没有生成对应的订单;对此,则判断为程序存在异常,程序在调用对应算法执行时出现错误,执行了多次,或者没有执行,从而导致异常。
接着,再依据当前发货事件的对应生成并存储的算法,进一步判断是否为人为操作修改导致发货数量异常。
例如,当用户在交易系统下单后,系统自动生成订单;仓库管理人员安排发货,在输入发货单时,将系统默认生成的、应等于下单数量的发货数量10个改为了实际的发货数量12个,导致下单数量与存储发货数量时存储的发货信息算法核验的发货数量不一致,则判断是人为修改导致的异常。相应地,系统可以将对应信息推送通知相关管理员。
若根据存储的发货信息算法核验的发货数量与下单数量一致,则判断是发货数量发生异常,但无法通过存储的发货信息算法核验出数据异常点,并通知相关管理员需要进一步判断是否为程序代码问题。
系统还可以核验发货数量是否关联有其它相关执行程序,以进一步核验发货数量是否存在异常及其发生异常的原因。
若根据发货环节生成存储的过程数据进行核验,数据核验无异常,发货数量与实际下单数量一致,则继续以此类推往前推演,以生成发货数量时存储的对应算法以及前置数据(出库数量),进行进一步验证。
以交易业务过程顺序,从后往前,一步步溯源推演,进行异常点的核验。
实例二
如在物联网仓库中,预先设置仓库中与监控结果发生关联的业务。例如,位移监控关联的移库或出入库等操作指令业务数据集,形成关联信息以及验证算法(比如采用现有的位移检测技术算法),通过私钥进行加密后连同公钥一起上传至物联网监控区块,向各节点进行广播。
大数据服务器节点下载物联网监控区块信息,通过公钥进行解密,获取位移监控关联信息,存储到服务器。
物联网系统监控区块数据,通过货物位移计算,得出货物发生位移变化,则将货物标识(例如仓单号)、货物发生位移时间等信息,通过私钥加密上传至位移异常区块,向各节点进行广播。
大数据服务器节点下载位移异常区块信息,通过公钥进行解密,获取位移异常信息,存储到服务器,通过位移异常信息对应的货物标识和发生位移的时间等信息,与位移监控关联的移库指令业务数据集以及验证算法,将货物标识代入验证算法,查询移库指令业务数据集中是否存在当前货物是否位移发生之前存在移库数据。如存在,则货物发生位移非异常;如不存在,则验证是否存在位移发生时间之前的出入库指令数据;以此判断当前货物发生位移是系统指令,还是人为操作。
在该实施例中,通过对不同的业务数据进行相关联,利用核验货物相关业务数据是否发生异常,来实现对货物安全的监控。
当然,本领域技术人员还可以根据各种不同需求,将本发明方案予以应用到不同的具体实际场景中。
以上内容仅为本发明的较佳实施例,对于本领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。