本发明属于区块链应用技术领域,特别涉及一种基于区块链的大数据溯源方法、系统及计算机设备。
背景技术:
随着云时代的来临,大数据也吸引了越来越多的关注。ibm公司对于大数据提出了著名的5v理论:volume(大量)、velocity(高速)、variety(多样性)、value(价值)以及veracity(真实性),即海量、动态流转、多源异构、价值密度低而且能够反映事物真实性的数据。这些数据在下载到单台计算机的关系型数据库来分析处理时会花费过多时间和成本,必须采用分布式架构,依托云计算的分布式处理、分布式文件系统与分布式数据库,以及可扩展的存储系统和互联网。
大数据的意义不在于掌握大量的数据,而在于对这些数据进行专业化“加工”实现数据的“增值”。大数据自身的数据质量是有效“加工”的前提,其中可溯源性就是数据质量评价的关键要素之一。在大数据环境下,由于数据本身多源、异构、海量、动态的特征,数据的查询、统计、更新、溯源效率很低。所以,针对大数据平台需求,需要构建一个满足大数据共享分发与溯源追踪功能的基础设施。数据的可溯源性也已成为数据管理领域重点研究的新课题,这一课题的研究将有助于数据质量评价、数据审计、数据确权等领域的进步。
传统的数据溯源定义为记录数据在从产生、传播到消亡的生命周期内,演变的内容与处理过程。根据追踪路径重现数据的历史状态和演变过程,实现数据历史信息的追溯。与传统的数据溯源不同的是,在大数据环境下,数据来源广泛、动态性强且多使用分布式管理。数据在分布式数据源之间的分发共享必然会破坏数据管理原有的安全边界,增加数据在共享过程中所面临的安全风险,对数据溯源的要求也更高。同时,随着大数据快速的动态增长,还需要及时地对动态生成的新数据进行溯源信息管理。传统的集中式数据溯源模型动态扩展能力弱,灵活性低且存在数据溯源的滞后性,更适用于相对静态的数据管理。另外,在一个分布式环境下,越来越多的节点参与大数据的管理,不可信节点潜在的攻击行为给大数据溯源带来了新的挑战。而区块链可以视作一个在分布式环境下众多不可信节点共同维护且不可篡改的账本,区块链通过基于拜占庭容错的共识协议,建立在交易各方不信任机制上的分布式数据库,可允许各方就共享数据达成共识。
在对数据溯源问题的研究和实践过程中,我们发现:区块链系统实现了分布式防篡改帐本,用于记录修改了某些全局状态的交易。其本质作为一个状态机,存储了状态的整个演化历史,只能通过重播所有交易来查询现有区块链中的数据历史记录。在效率上,传统的方法更适用于大规模的离线分析。例如,中国电信的一份专利中(肖扬,胡杰.区块链溯源追踪方法、装置和系统:中国,201611112091.3[p].2016-12-07.)根据区块高度将区块内容分配给多个服务器遍历,重播所有交易。与此同时,在目前基于数据溯源的实现方案中,多采用以太坊和hyperledgerfabric(超级账本)作为区块链底层架构,并没有很好地支持国产密码学算法,未集成国密加解密、签名、验签、哈希算法、国密ssl通信协议等模块。另外,对于分布式异构数据的数据追踪,传统的数据溯源研究中针对此问题通常建立了复杂的模型,且仍然存在较大的不兼容和误解范围。
以上不足使得数据溯源目前并不能得到很好实现。本发明提出了一种基于区块链的大数据溯源方法,可以安全高效地实现在线的数据溯源等功能。
技术实现要素:
为了克服上述现有技术的不足,本发明提供了一种基于区块链的大数据溯源方法。该方法利用区块链技术对网络中的数据进行溯源,生成数据分发路径,在线检索数据源头,有效提高基于区块链结构对数据溯源检索的效率。
为了实现上述目的,本发明采用的技术方案如下:
一种基于区块链的大数据溯源方法,其包括如下步骤:
步骤一:对上传数据进行国密化的哈希处理及私钥签名处理后,终端应用调用区块链智能合约,将数据上传事件发布至区块链上,通过区块链网络中其他区块链节点的共识后,将上传数据存储为ipfs文件;
步骤二:终端应用对上传数据进行数据分发,并调用区块链智能合约,将数据分发事件发布至区块链上;
步骤三:系统后台获取当前区块链最新高度的区块中版本状态树上的包含数据信息的叶子节点,根据所述叶子节点中的merkle山脉数据结构及选择性生成的跳跃表,快速查找所述跳跃表中是否存在分发者曾上传源头数据的事件或分发者曾被其他用户分发此数据的事件,若存在,则将所述数据分发事件插入merkle山脉数据结构中并更新跳跃表,区块链节点将所述数据分发事件在区块链网络中进行广播;
步骤四:数据溯源时,系统后台获取当前区块链最新高度的区块中版本状态树上的包含数据信息的叶子节点,根据所述叶子节点中的merkle山脉数据结构及选择性生成的跳跃表,找到数据当前版本在merkle山脉数据结构中所在的merkle树叶子节点,查询数据的来源,并在跳跃表中由所述来源递归查询直至源头。
优选地,步骤一中还包括:所述ipfs文件根据数据内容生成标准的cid,终端应用通过所述cid来查询数据内容。
优选地,所述区块链采用fiscobcos架构,该架构通过新增版本状态树来记录数据的历史版本与数据的分发路径。
优选地,所述版本状态树采用mpt数据结构,采用数据的哈希值作为mpt压缩前缀的依据。
优选地,步骤三中还包括:将merkle山脉数据结构应用于数据版本更新事件与数据分发事件的记录,所述数据版本更新事件与数据分发事件的记录发布至区块链上并通过区块链网络中其他区块链节点的共识后,merkle山脉数据结构插入新的merkle树叶子节点,并动态计算merkle山脉数据结构的root值。
优选地,所述merkle树叶子节点的数据结构内容至少包括:用户签名后的数据摘要、数据的唯一标识值、当前版本号与数据来源,其中所述数据来源为数据上传者或数据分发者。
优选地,所述私钥签名处理采用国密标准的椭圆曲线加密算法sm2。
优选地,所述区块链智能合约至少包括如下功能:数据上传、数据分发、数据分发路径查询、数据分发事件详情查询。
一种基于区块链的大数据溯源系统,其包括:
数据上传模块:用于对上传数据进行处理和存储,向区块链智能合约请求发布数据上传事件;
数据分发模块:用于向区块链智能合约请求发布数据分发事件;
区块链智能合约模块:用于至少实现如下功能:完成数据上传事件与数据分发事件的发布、与区块链底层交互查询数据原始信息与数据传播路径;
区块链底层模块:用于运行fiscobcos链;
数据分布式存储模块:用于运行ipfs链;
功能应用模块:与区块链智能合约交互,用于至少实现数据溯源的功能。
一种计算机设备,包括存储器,处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的大数据溯源方法的步骤。
与现有技术相比,本发明的有益效果是底层采用国产密码算法,更具有安全性;同时发明中所设计的溯源算法支持对数据的快速溯源,提高了查询效率;数据的存储采用了ipfs架构,实现了数据的分布式存储。
附图说明
图1是本发明基于区块链的大数据溯源系统架构图。
图2是溯源检索算法中的merkle山脉与选择性跳跃表结构图。
图3是基于fiscobcos的区块溯源设计图。
图4是溯源实例流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合具体实施例对本发明的实现进行详细的描述。
参见图1-4,基于区块链的大数据溯源方法至少包括以下步骤:
第一步,用户a通过终端上传数据α,首先对数据α进行哈希处理得到β=hash(α),用户a使用私钥对β签名得到γ=sign(β),终端应用调用智能合约,将数据上传事件发布至区块链上,存储到区块的内容包括处理后的数据γ及数据的唯一标识哈希,在该区块通过共识后,终端应用再将上传数据存储为ipfs文件。
第二步,用户a可以选择将数据分发给用户b,此时,先由系统检查用户a是否具有分发资格。首先获取版本状态树中数据α的节点,该节点包含了数据α的各个历史版本及数据分发事件所构造出的merkle山脉及在数据分发事件中选择性生成的跳跃表。根据跳跃表可快速查找是否存在用户a发布源头数据α事件或数据α曾分发给用户a的事件。若存在,则用户a符合分发条件,merkle山脉将把这一次的数据分发事件a→b作为新的叶子节点插入树结构中。同时,系统将此分发事件进行广播,在其他节点打包到包含此事件的交易时,也会检查用户a是否具有分发资格,若通过共识,则分发事件成功记录在区块链中。
第三步,同样,用户b也可以选择将数据分发给用户c,此时,先由系统检查用户b是否具有分发资格,若用户b符合,则将此数据分发事件进行广播,在其他节点打包到包含此事件的交易时,也会检查用户b是否具有分发资格,若通过共识,则分发事件成功记录在区块链中。
第四步,用户c将更改过的新版本的数据α′上传时,首先需要声明原始数据α的来源,并由系统检查是否存在用户b分发给用户c的记录,若存在,则对数据进行哈希处理,用户私钥签名处理得到γ′,调用智能合约,将处理后的数据γ′及当前版本号,数据的唯一标识哈希值,数据来源发布至区块链,通过共识后,在新的区块上,数据α的merkle山脉会动态插入叶子节点γ′的信息,同时更新跳跃表。最后,将数据α′存储为ipfs文件。
第五步,当需要对数据α′进行溯源时,首先获取区块所包含的版本状态树中该数据的merkle山脉结构,找到该数据当前版本的叶子节点,查询其数据结构中的来源者信息,并在选择性跳跃表中由来源者递归查询直至源头。
当需要对数据α进行确权时,由于数据α经过哈希处理和签名处理得到的数据γ存储在区块所包含的版本状态树中数据α的merkle山脉结构内,所以只需在区块中取得该内容,并用用户a的公钥验证,计算得到数据λ。同时将待确权的ipfs文件作哈希处理后得到数据β。对比数据λ与数据β,若一致,则说明该用户a为数据α的上传者。
关于基于区块链的大数据溯源系统的具体限定可以参见上文中对于基于区块链的大数据溯源方法的限定,在此不再赘述。上述基于区块链的大数据溯源系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
1.一种基于区块链的大数据溯源方法,其特征在于:所述方法包括如下步骤:
步骤一:对上传数据进行国密化的哈希处理及私钥签名处理后,终端应用调用区块链智能合约,将数据上传事件发布至区块链上,通过区块链网络中其他区块链节点的共识后,将上传数据存储为ipfs文件;
步骤二:终端应用对上传数据进行数据分发,并调用区块链智能合约,将数据分发事件发布至区块链上;
步骤三:系统后台获取当前区块链最新高度的区块中版本状态树上的包含数据信息的叶子节点,根据所述叶子节点中的merkle山脉数据结构及选择性生成的跳跃表,快速查找所述跳跃表中是否存在分发者曾上传源头数据的事件或分发者曾被其他用户分发此数据的事件,若存在,则将所述数据分发事件插入merkle山脉数据结构中并更新跳跃表,区块链节点将所述数据分发事件在区块链网络中进行广播;
步骤四:数据溯源时,系统后台获取当前区块链最新高度的区块中版本状态树上的包含数据信息的叶子节点,根据所述叶子节点中的merkle山脉数据结构及选择性生成的跳跃表,找到数据当前版本在merkle山脉数据结构中所在的merkle树叶子节点,查询数据的来源,并在跳跃表中由所述来源递归查询直至源头。
2.根据权利要求1所述的大数据溯源方法,其特征在于:步骤一中还包括:所述ipfs文件根据数据内容生成标准的cid,终端应用通过所述cid来查询数据内容。
3.根据权利要求1所述的大数据溯源方法,其特征在于:所述区块链采用fiscobcos架构,该架构通过新增版本状态树来记录数据的历史版本与数据的分发路径。
4.根据权利要求3所述的大数据溯源方法,其特征在于:所述版本状态树采用mpt数据结构,采用数据的哈希值作为mpt压缩前缀的依据。
5.根据权利要求1所述的大数据溯源方法,其特征在于:步骤三中还包括:将merkle山脉数据结构应用于数据版本更新事件与数据分发事件的记录,所述数据版本更新事件与数据分发事件的记录发布至区块链上并通过区块链网络中其他区块链节点的共识后,merkle山脉数据结构插入新的merkle树叶子节点,并动态计算merkle山脉数据结构的root值。
6.根据权利要求1所述的大数据溯源方法,其特征在于:所述merkle树叶子节点的数据结构内容至少包括:用户签名后的数据摘要、数据的唯一标识值、当前版本号与数据来源,其中所述数据来源为数据上传者或数据分发者。
7.根据权利要求1所述的大数据溯源方法,其特征在于:所述私钥签名处理采用国密标准的椭圆曲线加密算法sm2。
8.根据权利要求1所述的大数据溯源方法,其特征在于:所述区块链智能合约至少包括如下功能:数据上传、数据分发、数据分发路径查询、数据分发事件详情查询。
9.一种基于区块链的大数据溯源系统,其特征在于:所述系统用于实现权利要求1-8中任一项所述的大数据溯源方法,所述系统包括:
数据上传模块:用于对上传数据进行处理和存储,向区块链智能合约请求发布数据上传事件;
数据分发模块:用于向区块链智能合约请求发布数据分发事件;
区块链智能合约模块:用于至少实现如下功能:完成数据上传事件与数据分发事件的发布、与区块链底层交互查询数据原始信息与数据传播路径;
区块链底层模块:用于运行fiscobcos链;
数据分布式存储模块:用于运行ipfs链;
功能应用模块:与区块链智能合约交互,用于至少实现数据溯源的功能。
10.一种计算机设备,包括存储器,处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1-8中任一项所述的大数据溯源方法的步骤。
技术总结