发布信息

基于区块链的数据稽核方法、装置、设备及存储介质与流程

作者:admin      2022-11-16 14:59:42     605



计算;推算;计数设备的制造及其应用技术1.本发明涉及区块链技术领域::,尤其涉及一种基于区块链的数据稽核方法、装置、设备及存储介质。背景技术:::2.现有技术中,运营商的业务存在多方交互,包括省公司系统和集团公司系统之间、省公司系统之间、省公司系统和外部合作伙伴公司系统之间,各方系统通过数据同步接口进行数据交互。数据交互中很重要的一个内容就是数据稽核,目前现有的数据稽核解决方案,是将稽核文件导入数据库,通过数据库比对脚本,比对数据记录数一致性和关键字段值一致性,来稽核交易双方的数据一致性。3.采用现有技术中的方案,数据是以块节点的方式存储在区块链上,节点以keyvalue形式存储而不是关系型数据,现有方案不支持获取区块链上的数据,且链上链下数据不一致。技术实现要素:4.本发明的主要目的在于提出一种基于区块链的数据稽核方法、装置、设备及存储介质,旨在解决保证链上链下数据一致的技术问题。5.为实现上述目的,本发明提供一种基于区块链的数据稽核方法,所述基于区块链的数据稽核方法包括以下步骤:6.获取区块链上一周期到当前时间的链上数据;7.将所述链上数据转存到数据库的链转表,得到链转表数据;8.获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果;9.根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致。10.可选地,所述将所述链上数据转存到数据库,得到链转表数据,包括:11.获取所述链上数据的节点数据,并根据所述节点数据确定订单编号值;12.根据所述订单编号值生成键值对;13.将所述键值对与预设过滤器缓存中的键值对进行比较,其中,所述预设过滤器缓存中的数据与数据库中的数据一致;14.根据比较结果确定数据库语句;15.根据所述数据库语句将所述链上数据转存到数据库,得到链转表数据。16.可选地,所述获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果,包括:17.调用多线程启动指令,根据所述多线程启动指令得到数据库数据抽取线程以及链转表数据抽取线程;18.通过所述数据库数据抽取线程从所述业务表中抽取比对数据,并间隔预设时间后通过所述链转表数据抽取线程从所述链转表中抽取链转表数据;19.将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果。20.可选地,所述将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果,包括:21.提取所述比对数据中的订单编号和订单内容,根据所述比对数据中的订单编号和订单内容生成数据库键值对;22.提取所述链转表数据中的订单编号和订单内容,根据所述链转表数据中的订单编号和订单内容生成链转表键值对;23.将所述数据库键值对与链转表键值对进行比较,并根据比较结果从所述链转表键值对中选取不包含所述数据库键值对的目标链转表键值对;24.将所述目标链转表键值对插入稽核结果表,以得到比对结果。25.可选地,所述将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果之前,还包括:26.判断所述数据库数据抽取线程与所述链转表数据抽取线程是否均执行完成;27.在所述数据库数据抽取线程与所述链转表数据抽取线程均执行完成时,执行将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果的步骤。28.可选地,所述根据所述比对结果对所述区块链上的数据进行修复处理,包括:29.获取所述比对结果中的稽核结果表,并提取所述稽核结果表中的待修复订单编号;30.根据所述待修复订单编号生成待上链数据执行队列,以使所述区块链根据所述待上链数据执行队列进行状态调整或数据插入。31.可选地,所述根据所述待修复订单编号生成待上链数据执行队列之后,还包括:32.获取所述待上链数据执行队列的上链数量;33.在所述上链数量超过预设数量时,调用区块链平台的grpc接口执行批量交易智能合约,以使所述区块链根据所述交易智能合约对所述待上链数据执行队列进行状态调整或数据插入。34.此外,为实现上述目的,本发明还提出一种基于区块链的数据稽核装置,所述基于区块链的数据稽核装置包括:35.检测模块,用于获取区块链上一周期到当前时间的链上数据;36.转存模块,用于将所述链上数据转存到数据库的链转表,得到链转表数据;37.比对模块,用于获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果;38.修复模块,用于根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致。39.此外,为实现上述目的,本发明还提出一种基于区块链的数据稽核设备,所述基于区块链的数据稽核设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的数据稽核程序,所述基于区块链的数据稽核程序配置为实现如上文所述的基于区块链的数据稽核方法。40.此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于区块链的数据稽核程序,所述基于区块链的数据稽核程序被处理器执行时实现如上文所述的基于区块链的数据稽核方法。41.本发明提出的基于区块链的数据稽核方法,通过获取区块链上一周期到当前时间的链上数据;将所述链上数据转存到数据库的链转表,得到链转表数据;获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果;根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,通过对链上数据进行采样并转存在链转表中,以通过链转表中的数据与数据库中的数据进行比对,得到区块链上与数据库中不一致的差异数据,通过差异数据对区块链上的数据进行修复,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,从而实现链上链下数据一致。附图说明42.图1是本发明实施例方案涉及的硬件运行环境的基于区块链的数据稽核方法设备结构示意图;43.图2为本发明基于区块链的数据稽核方法第一实施例的流程示意图;44.图3为本发明基于区块链的数据稽核方法一实施例的基于区块链的数据稽核系统整体示意图;45.图4为本发明基于区块链的数据稽核方法第二实施例的流程示意图;46.图5为本发明基于区块链的数据稽核方法一实施例的稽核逻辑示意图;47.图6为本发明基于区块链的数据稽核方法第三实施例的流程示意图;48.图7为本发明基于区块链的数据稽核装置第一实施例的功能模块示意图。49.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式50.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。51.参照图1,图1为本发明实施例方案涉及的硬件运行环境的设备结构示意图。52.如图1所示,该设备可以包括:处理器1001,例如cpu,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如按键,可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。53.本领域技术人员可以理解,图1中示出的基于区块链的数据稽核方法设备结构并不构成对基于区块链的数据稽核方法设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。54.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于区块链的数据稽核方法程序。55.在图1所示的基于区块链的数据稽核方法设备中,网络接口1004主要用于连接服务器,与服务器进行数据通信;用户接口1003主要用于连接用户终端,与终端进行数据通信;本发明基于区块链的数据稽核方法设备通过处理器1001调用存储器1005中存储的基于区块链的数据稽核方法程序,并执行本发明实施例提供的基于区块链的数据稽核方法。56.基于上述硬件结构,提出本发明基于区块链的数据稽核方法实施例。57.参照图2,图2为本发明基于区块链的数据稽核方法第一实施例的流程示意图。58.在第一实施例中,所述基于区块链的数据稽核方法包括以下步骤:59.步骤s10,获取区块链上一周期到当前时间的链上数据。60.需要说明的是,本实施例的执行主体可为基于区块链的数据稽核装置,基于区块链的数据稽核装置设有基于区块链的数据稽核方法程序,还可为其他可实现相同或相似功能的设备,本实施例对此不作限制,在本实施例中,以稽核服务器为例进行说明,在稽核服务器上设有基于区块链的数据稽核应用程序,可根据基于区块链的数据稽核应用程序进行数据稽核。61.在本实施例中,本实施例应用于区块链的业务处理系统,区块链的业务处理系统包括相互连接的业务系统与外部业务系统,其中,业务系统中的数据存储于数据库中,外部业务系统与外部区块链节点进行数据交互,外部区块链节点通过区块链网路进行管理,如图3所示的基于区块链的数据稽核系统整体示意图,基于区块链的数据稽核系统上设有链上数据获取装置、稽核装置、重处理装置以及过滤器。其中链上数据获取装置用于获取区块链上的数据并存入数据库,稽核装置用于对数据库中的业务表数据和区块链转存数据进行稽核,重处理装置用于对稽核差异结果进行重新提交上链,过滤器装置用于链上数据获取过程中数据清洗,将重新提交上链的数据发送给区块链网关,通过区块链节点将重新提交上链的数据送入到区块链网络中。62.在具体实现中,为了保证数据的及时性,需要及时对链上数据进行监测,因此,通过定时任务的方式获取区块链上一周期到当前时间的链上数据,以实现链上数据的采样,通过调用区块链平台的grpc接口获取当前时间周期内区块链上的块节点数据,如调用eos区块链平台get_info()获取最新节点编号,通过get_block()获取块节点数据。63.步骤s20,将所述链上数据转存到数据库的链转表,得到链转表数据。64.需要说明的是,继续如图3所示,在数据库中包括业务表、链转表以及结果表,其中,业务表用于存储与业务系统相关的数据,链转表用于存储链上数据获取装置转存的数据,结果表用于存储数据库的业务表中的数据与链转表中的数据的比对结果,并将比对结果发送至重处理装置,以使重处理装置比对结果对所述区块链上的数据进行修复处理,然后提交数据队列给区块链网关进行后续处理。65.为了获取更准确的链上数据,将链上数据与过滤器中的数据进行比较,根据比较结果获取最新的链上数据的状态,根据最新的链上数据的状态转存到数据库的链转表,得到链转表数据,通过调用区块链rpc接口查询链上最新数据节点编号,从上一次块编号到当前最新编号循环遍历,调用rpc接口获取节点数据,根据节点的订单编号查询过滤器,如果过滤器中已存在则生成update语句,如果不存在则生成insert语句,并将节点的订单编号写入过滤器中,其中,update语句和insert语句按照顺序在一个事务中提交,然后将当前节点保存为上一轮节点编号,将当前时间保存为上一轮稽核时间,具体为:判断过滤器缓存中是否已经存在以当前块节点的订单编号字段为key的value值redis.get(key),如果已经存在则将当前块节点的数据转化成数据库表更新update语句,如果不存在则生成数据库表插入insert数据语句并在过滤器缓存中插入该块节点订单编号和订单数据,当前时间周期内块节点遍历完毕后批量提交数据库事务脚本,从而通过节点编号实现数据管理以及状态的查询,提高数据处理的有效性。66.步骤s30,获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果。67.在具体实现中,在进行数据比对时,获取所述数据库的业务表中每行数据构成hash对,key采用订单编号+订单内容相加计算哈希值,值采用订单编号+订单内容,相应的,也将链转表数据采用同样的方式得到键值对,将两个键值对进行比较,从而得到比对结果,其中,比对结果包括业务数据库中有的而区块链上没有的数据,以及区块链中有而数据库中没有的数据。68.步骤s40,根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致。69.可以理解的是,修复处理包括反撤操作或插入操作,其中,反撤操作为用订单编号的上一次交易状态数据执行交易操作,将数据插入待上链数据队列,插入操作为将缺失的数据插入待上链数据队列,从而实现对区块链上的数据处理,对于业务数据库中有的而区块链上没有的数据则采用插入操作,将缺失的数据插入待上链数据队列,对于区块链中有而数据库中没有的数据则进行反撤操作,将多余数据对应的订单编号的上一次交易状态数据执行交易操作,将数据插入待上链数据队列,以改变多余数据的链上状态,从而使区块链上的数据和数据库的业务表中的数据保持一致。70.在本实施例中,通过获取区块链上一周期到当前时间的链上数据;将所述链上数据转存到数据库的链转表,得到链转表数据;获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果;根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,通过对链上数据进行采样并转存在链转表中,以通过链转表中的数据与数据库中的数据进行比对,得到区块链上与数据库中不一致的差异数据,通过差异数据对区块链上的数据进行修复,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,从而实现链上链下数据一致。71.在一实施例中,如图4所示,基于第一实施例提出本发明基于区块链的数据稽核方法第二实施例,所述步骤s20,包括:72.步骤s201,获取所述链上数据的节点数据,并根据所述节点数据确定订单编号值。73.在具体实现中,可通过获取预设提取关键字,在获取所述链上数据的节点数据时,将预设提取关键字与所述链上数据的节点数据进行匹配,根据匹配结果得到节点数据中订单编号值。74.步骤s202,根据所述订单编号值生成键值对。75.在本实施例中,将订单编号值作为key,将订单编号值对应的内容作为value值以生成键值对,例如当前块节点的订单编号字段为key的value值redis.get(key),从而利于与预设过滤器中的数据进行比对。76.步骤s203,将所述键值对与预设过滤器缓存中的键值对进行比较,其中,所述预设过滤器缓存中的数据与数据库中的数据一致。77.需要说明的是,预设过滤器是一个redis缓存集群,用于链上数据获取装置进行转存到数据库表中。每次获取链上数据之后,先判断预设过滤器缓存中有无对应的key/value值,如果已经存在,说明当前链转表中已经有对应的订单编号的数据,需要将当前表中已经存在的订单状态等数据更新为从链上获取的最新订单数据,生成update语句;如果过滤器中没有对应的key/value值,则说明数据库中没有对应的订单编号数据,生成insert语句,同时将对应的订单编号和订单数据生成key和value值上传到redis中。78.步骤s204,根据比较结果确定数据库语句。79.可以理解的是,将链上数据获取装置得到的链上数据转存在数据库中时,需要用相应的数据库语句进行处理,即将链上数据的键值对与预设过滤器缓存中的键值对进行比较,如果预设过滤器缓存中已经存在链上数据的键值对,则将键值对对应的当前块节点的数据转化成数据库表更新update语句,如果不存在则生成数据库表插入insert数据语句,并在过滤器缓存中插入该块节点订单编号和订单数据,以实现对过滤器内容的及时更新。80.步骤s205,根据所述数据库语句将所述链上数据转存到数据库,得到链转表数据。81.在本实施例中,将链上数据转存到数据库的链转表中进行比对时,由于链上数据过多,在进行后续数据比对时,容易消耗大量的运算性能,因此,在将链上数据转存到数据库的链转表中进行比对之前,通过过滤器对链上数据进行过滤,保证数据的有效性,以提高数据处理效率。82.在一实施例中,所述步骤s30,包括:83.调用多线程启动指令,根据所述多线程启动指令得到数据库数据抽取线程以及链转表数据抽取线程;通过所述数据库数据抽取线程从所述业务表中抽取比对数据,并间隔预设时间后通过所述链转表数据抽取线程从所述链转表中抽取链转表数据;将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果。84.在本实施例中,采用多线程比对计算,具有高可扩展性、低资源消耗,例如通过多线程并发,一个线程先启动并读取业务表中的值存入concurrenthashmap中,另外一个线程延迟启动并读取从区块链转存到数据库的链转表数据,以订单编号+订单内容的哈希值和原值构建哈希容器key/value值,比对两个哈希容器,剔除相同值,获取最终数据库和区块链差异结果值。85.在具体实现中,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果,具体为:提取所述比对数据中的订单编号和订单内容,根据所述比对数据中的订单编号和订单内容生成数据库键值对;提取所述链转表数据中的订单编号和订单内容,根据所述链转表数据中的订单编号和订单内容生成链转表键值对;将所述数据库键值对与链转表键值对进行比较,并根据比较结果从所述链转表键值对中选取不包含所述数据库键值对的目标链转表键值对;将所述目标链转表键值对插入稽核结果表,以得到比对结果。86.在本实施例中,继续如图3所示,稽核结果表为在数据库中用于存储比对结果的结果表,通过稽核结果表中的比对结果,可对区块链上的数据进行修复处理。87.提供另一实施例进行具体说明,稽核装置详细执行逻辑,如图5所示的稽核逻辑示意图,一个线程负责从a库抽取业务表table_db表中的数据,每行数据构造成一个hash对,key采用订单编号+订单内容相加计算哈希值,concurrenthashmapa的值采用订单编号+订单内容,延迟启动线程b,同样的计算方式,读取链转表table_bcn表,同时,b线程抽取出来的数据首先与hashmap_a中的数据进行比对,假如在a容器中存在,说明这条记录两个库中相同concurrenthashmapa.get(key_b)=concurrenthashmapb.get(key_b),那么a的map中可删除这条记录concurrenthashmapa.remove(key_b),b可以直接丢弃这条记录,不放在hashmap_b中;假如在a中不存在,则不对a容器处理,b则放入hashmap_b中concurrenthashmapb.put(key_b,value)。88.在一实施例中,所述将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果之前,还包括:89.判断所述数据库数据抽取线程与所述链转表数据抽取线程是否均执行完成;在所述数据库数据抽取线程与所述链转表数据抽取线程均执行完成时,执行将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果的步骤。90.继续如图5所示,当a从表格中把数据抽取完成后,b可能还没有完成,那么需要等待两个线程都处理完成之后,对两个map进行一次比对,相同的则移除,不同的保留。比对结束后,这个时候mapa里面存的是b里面没有的即业务数据库中有的而区块链上没有的数据,从而保证线程都已执行完成的情况下进行数据对比,提高数据比对的准确性。91.在本实施例中,通过订单编号和订单内容生成键值对,将所述数据库键值对与链转表键值对进行比较,并根据比较结果从所述链转表键值对中选取不包含所述数据库键值对的目标链转表键值对;将所述目标链转表键值对插入稽核结果表,以得到比对结果,从而实现数据库中的数据与区块链中的数据比对。92.在一实施例中,如图6所示,基于第一实施例或第二实施例提出本发明基于区块链的数据稽核方法第三实施例,以第一实施例为例进行说明,所述步骤s40,包括:93.步骤s401,获取所述比对结果中的稽核结果表,并提取所述稽核结果表中的待修复订单编号。94.在本实施例中,稽核结果表中包含链转表数据与数据库的业务表中的数据的比对结果,且比对结果采用键值对的方式,key采用订单编号+订单内容相加计算哈希值,concurrenthashmapa的值采用订单编号+订单内容,因此,对稽核结果表进行解析,可得到链转表数据与数据库的业务表中的数据不匹配的数据信息,即包括待修复订单编号以及订单内容等。95.步骤s402,根据所述待修复订单编号生成待上链数据执行队列,以使所述区块链根据所述待上链数据执行队列进行状态调整或数据插入。96.在具体实现中,如果链上数据多了则发起反撤操作,由于区块链不支持链上数据删除,用订单编号的上一次交易状态数据执行交易操作,将数据插入待上链数据队列,从而根据待上链数据队列改变区块链中的数据状态,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,如果链上数据少了,则将缺失的数据插入待上链数据队列,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,从而实现数据库中的数据与区块链中的数据同步。97.在一实施例中,所述步骤s402之后,还包括:98.获取所述待上链数据执行队列的上链数量;在所述上链数量超过预设数量时,调用区块链平台的grpc接口执行批量交易智能合约,以使所述区块链根据所述交易智能合约对所述待上链数据执行队列进行状态调整或数据插入。99.在本实施例中,预设数量可为100个待上链数据执行队列,还可为其他参数,本实施例对此不做限制,以100个数量为例进行说明,如果待上链数据执行队列的上链数量需要调整1000时,则超过预设数量,在这种情况下,如果还只是一个一个进行队列处理则造成处理时间较长,且消耗大量的系统性能,因此,可采用批量处理的方式进行待上链数据执行队列的处理,即调用区块链平台的grpc接口执行批量交易智能合约,以使所述区块链根据所述交易智能合约对所述待上链数据执行队列进行状态调整或数据插入,具体调用方式为:100.for(){json+=;}101.push_transactions(json_data);102.本实施例还提供整体运行流程,首先,定时任务发起调用链上数据获取装置,定时获取上一周期到当前时间的链上数据;每获取一个块节点数据,判断是否在过滤器装置中已经存在对应key值的value,根据存在情况生成对应的sql语句,批量提交sql。执行完成后调用稽核装置api接口,从业务表和链转表中获取数据,进行稽核比对,针对比对差异结果,生成告警数据,人工确认后执行重处理操作,调用区块链平台的grpc接口执行批量交易智能合约,将缺失数据执行上链,或者将多出的数据进行反撤操作,从而实现区块链上的数据修复。103.在本实施例中,通过重处理机制基于稽核比对结果对链上数据进行修复,针对链上多出的数据以前一次状态数据重新上链覆盖当前状态,实现链上反撤操作,从而实现对无法进行数据删除的区块链上数据的状态调整。104.本发明进一步提供一种基于区块链的数据稽核装置。105.参照图7,图7为本发明基于区块链的数据稽核装置第一实施例的功能模块示意图。106.本发明基于区块链的数据稽核装置第一实施例中,该基于区块链的数据稽核装置包括:107.检测模块10,用于获取区块链上一周期到当前时间的链上数据。108.在本实施例中,本实施例应用于区块链的业务处理系统,区块链的业务处理系统包括相互连接的业务系统与外部业务系统,其中,业务系统中的数据存储于数据库中,外部业务系统与外部区块链节点进行数据交互,外部区块链节点通过区块链网路进行管理,如图3所示的基于区块链的数据稽核系统整体示意图,基于区块链的数据稽核系统上设有链上数据获取装置、稽核装置、重处理装置以及过滤器。其中链上数据获取装置用于获取区块链上的数据并存入数据库,稽核装置用于对数据库中的业务表数据和区块链转存数据进行稽核,重处理装置用于对稽核差异结果进行重新提交上链,过滤器装置用于链上数据获取过程中数据清洗,将重新提交上链的数据发送给区块链网关,通过区块链节点将重新提交上链的数据送入到区块链网络中。109.在具体实现中,为了保证数据的及时性,需要及时对链上数据进行监测,因此,通过定时任务的方式获取区块链上一周期到当前时间的链上数据,以实现链上数据的采样,通过调用区块链平台的grpc接口获取当前时间周期内区块链上的块节点数据,如调用eos区块链平台get_info()获取最新节点编号,通过get_block()获取块节点数据。110.转存模块20,用于将所述链上数据转存到数据库的链转表,得到链转表数据。111.需要说明的是,继续如图3所示,在数据库中包括业务表、链转表以及结果表,其中,业务表用于存储与业务系统相关的数据,链转表用于存储链上数据获取装置转存的数据,结果表用于存储数据库的业务表中的数据与链转表中的数据的比对结果,并将比对结果发送至重处理装置,以使重处理装置比对结果对所述区块链上的数据进行修复处理,然后提交数据队列给区块链网关进行后续处理。112.为了获取更准确的链上数据,将链上数据与过滤器中的数据进行比较,根据比较结果获取最新的链上数据的状态,根据最新的链上数据的状态转存到数据库的链转表,得到链转表数据,通过调用区块链rpc接口查询链上最新数据节点编号,从上一次块编号到当前最新编号循环遍历,调用rpc接口获取节点数据,根据节点的订单编号查询过滤器,如果过滤器中已存在则生成update语句,如果不存在则生成insert语句,并将节点的订单编号写入过滤器中,其中,update语句和insert语句按照顺序在一个事务中提交,然后将当前节点保存为上一轮节点编号,将当前时间保存为上一轮稽核时间,具体为:判断过滤器缓存中是否已经存在以当前块节点的订单编号字段为key的value值redis.get(key),如果已经存在则将当前块节点的数据转化成数据库表更新update语句,如果不存在则生成数据库表插入insert数据语句并在过滤器缓存中插入该块节点订单编号和订单数据,当前时间周期内块节点遍历完毕后批量提交数据库事务脚本,从而通过节点编号实现数据管理以及状态的查询,提高数据处理的有效性。113.比对模块30,用于获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果。114.在具体实现中,在进行数据比对时,获取所述数据库的业务表中每行数据构成hash对,key采用订单编号+订单内容相加计算哈希值,值采用订单编号+订单内容,相应的,也将链转表数据采用同样的方式得到键值对,将两个键值对进行比较,从而得到比对结果,其中,比对结果包括业务数据库中有的而区块链上没有的数据,以及区块链中有而数据库中没有的数据。115.修复模块40,用于根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致。116.在本实施例中,修复处理包括反撤操作或插入操作,其中,反撤操作为用订单编号的上一次交易状态数据执行交易操作,将数据插入待上链数据队列,插入操作为将缺失的数据插入待上链数据队列,从而实现对区块链上的数据处理,对于业务数据库中有的而区块链上没有的数据则采用插入操作,将缺失的数据插入待上链数据队列,对于区块链中有而数据库中没有的数据则进行反撤操作,将多余数据对应的订单编号的上一次交易状态数据执行交易操作,将数据插入待上链数据队列,以改变多余数据的链上状态,从而使区块链上的数据和数据库的业务表中的数据保持一致。117.在本实施例中,通过获取区块链上一周期到当前时间的链上数据;将所述链上数据转存到数据库的链转表,得到链转表数据;获取所述数据库的业务表中的比对数据,将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果;根据所述比对结果对所述区块链上的数据进行修复处理,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,通过对链上数据进行采样并转存在链转表中,以通过链转表中的数据与数据库中的数据进行比对,得到区块链上与数据库中不一致的差异数据,通过差异数据对区块链上的数据进行修复,以保证所述区块链上的数据和所述数据库的业务表中的数据一致,从而实现链上链下数据一致。118.在一实施例中,所述转存模块20,还用于获取所述链上数据的节点数据,并根据所述节点数据确定订单编号值;119.根据所述订单编号值生成键值对;120.将所述键值对与预设过滤器缓存中的键值对进行比较,其中,所述预设过滤器缓存中的数据与数据库中的数据一致;121.根据比较结果确定数据库语句;122.根据所述数据库语句将所述链上数据转存到数据库,得到链转表数据。123.在一实施例中,所述比对模块30,还用于调用多线程启动指令,根据所述多线程启动指令得到数据库数据抽取线程以及链转表数据抽取线程;124.通过所述数据库数据抽取线程从所述业务表中抽取比对数据,并间隔预设时间后通过所述链转表数据抽取线程从所述链转表中抽取链转表数据;125.将所述业务表中的比对数据与所述链转表数据进行比对,得到比对结果。126.在一实施例中,所述比对模块30,还用于提取所述比对数据中的订单编号和订单内容,根据所述比对数据中的订单编号和订单内容生成数据库键值对;127.提取所述链转表数据中的订单编号和订单内容,根据所述链转表数据中的订单编号和订单内容生成链转表键值对;128.将所述数据库键值对与链转表键值对进行比较,并根据比较结果从所述链转表键值对中选取不包含所述数据库键值对的目标链转表键值对;129.将所述目标链转表键值对插入稽核结果表,以得到比对结果。130.在一实施例中,所述比对模块30,还用于判断所述数据库数据抽取线程与所述链转表数据抽取线程是否均执行完成;131.在一实施例中,修复模块40,还用于获取所述比对结果中的稽核结果表,并提取所述稽核结果表中的待修复订单编号;132.根据所述待修复订单编号生成待上链数据执行队列,以使所述区块链根据所述待上链数据执行队列进行状态调整或数据插入。133.在一实施例中,修复模块40,还用于获取所述待上链数据执行队列的上链数量;134.在所述上链数量超过预设数量时,调用区块链平台的grpc接口执行批量交易智能合约,以使所述区块链根据所述交易智能合约对所述待上链数据执行队列进行状态调整或数据插入。135.此外,为实现上述目的,本发明还提出一种基于区块链的数据稽核设备,所述基于区块链的数据稽核设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的数据稽核程序,所述基于区块链的数据稽核程序配置为实现如上文所述的基于区块链的数据稽核方法。136.此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于区块链的数据稽核程序,所述基于区块链的数据稽核程序被处理器执行时实现如上文所述的基于区块链的数据稽核方法。137.由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。138.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。139.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。140.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台智能终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。141.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域::,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部