CN113468571B - 基于区块链的溯源方法 - Google Patents
基于区块链的溯源方法 Download PDFInfo
- Publication number
- CN113468571B CN113468571B CN202110804473.7A CN202110804473A CN113468571B CN 113468571 B CN113468571 B CN 113468571B CN 202110804473 A CN202110804473 A CN 202110804473A CN 113468571 B CN113468571 B CN 113468571B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- key
- chain
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及区块链技术领域,公开了基于区块链的溯源方法,实现方法包括以下步骤:S1、建立溯源数据散列表结构;S2、将数据存证后推送至溯源数据散列表,并构成此数据的数组长度;S3、通过标索引获取历史流通结果;S4、获取的历史流通结果数组长度length,并逐个查询所有的历史流通结果信息。本发明将需要溯源的数据在存证时推送至溯源数据散列表,并在需要溯源时,通过两步操作,第一步查询当前溯源结果数,第二步逐个查询溯源结果,从而简单快速的获取数据的所有溯源结果,同时又避免了当前区块链合约语言中,不支持一次性返回大量数据和数组的问题,可以快速准确地追踪溯源数据在区块链上的所有流通信息,且操作简单,消耗时间短,无需重复工作。
Description
技术领域
本发明涉及区块链技术领域,具体是基于区块链的溯源方法。
背景技术
区块链数据溯源,就是把数据存证到区块链后,提供此数据在区块链上的所有流通结果,包括从最开始数据上链,到现在数据的最终状态的一系列过程。
以以太坊区块链平台为例,其他兼容了以太坊虚拟机的区块链平台也同样如此;数据在链上只有实时最终状态,对于数据最开始是在什么时候上链,上链的内容,用户等信息,需要通过从创世块开始解析每一个区块,然后检索此数据,才能查看到这条数据的完整流通记录,操作非常不方便且消耗大量的时间,而且,上述方式只能对某一个数据进行追踪溯源,如果换一个数据,又需要从头开始做一遍重复工作,检索新的数据。
发明内容
本发明的目的在于提供基于区块链的溯源方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
基于区块链的溯源方法,实现方法包括以下步骤:
S1、建立溯源数据散列表结构,即根据Key-value而直接访问在内存存储位置的数据结构,其通过散列函数将要检索的项与索引关联起来,其中,key为数据存证在区块链上的标识,value为历史流通结果,所述流通结果包含标识码key,数据哈希data,数据发生流通时的区块哈希和交易哈希;
S2、将需要溯源的数据每次存证后,推送至溯源数据散列表,通过标识码key存放数据当前哈希、当前区块哈希和当前交易哈希,多次存证后溯源数据散列表上存在多次的数据哈希、区块哈希和交易哈希,多次存证的结果构成此数据的历史流通结果数组长度length;
S3、通过存证在溯源数据散列表里的key值,获取此数据的历史流通结果数组长度length,给历史流通结果数组长度建立数组的下标索引,再通过数组的下标索引一一获取历史流通结果;
S4、若获取的历史流通结果数组长度length大于0,则说明有过数据流通的历史并存证于链上,并从下标0到历史流通结果数组长度length末端结束,逐个查询所有的历史流通结果信息。
作为本发明再进一步的方案:所述S1步骤中的散列函数用于确定需要溯源的数据在数据散列表中的存储位置,所述散列函数的构造方法包括直接定址法、相乘取整法、平方取中法、除留余数法和随机数法,其中,
直接定址法:H(key)=a·key+b,其中a和b为常数;
相乘取整法:先用关键码key乘上某个常数A(0<A<1),并抽取出key·A的小数部分;然后用m乘以该小数后取整;
平方取中法:取关键码平方后的中间几位为哈希地址,通过平方扩大差别,另外中间几位与乘数的每一位相关,由此产生的散列地址较为均匀;
除留余数法:取关键字被数p除后所得余数为哈希地址:H(key)=key MOD p(p≤m)
随机数法:选择一个随机函数,取关键码的随机函数值为它的哈希地址,即H(key)=random(key),其中random为随机函数。
作为本发明再进一步的方案:所述S2步骤中数据存证采用链上链下协同工作,并采用文件与哈希值分离的方式,链上只保存文件的哈希值,原文件保存在链下,只要计算出文件的哈希值,并与链上的哈希值比对即可。
作为本发明再进一步的方案:所述S2步骤中数据存证的步骤包括创建数据分片;加密每个分片;为每个分片生成哈希;复制每个分片;分发复制的分片;记录事务到分类账。
作为本发明再进一步的方案:所述创建数据分片包括上传链代码、链代码部署和链块信息查询。
作为本发明再进一步的方案:所述上传链代码用于将链代码源文件保存到相应的目录下进行源文件分析;所述链代码部署用于通过SDK调用区块链节点的安装接口,根据区块链节点返回部署结果将区块链源代码文件传输到相应的目录表中,形成链代码部署表;所述链块信息查询用于检索链代码部署表,获取chaincodeID,通过chaincodeID区块链节点发出调用链代码查询接口信息。
作为本发明再进一步的方案:所述链代码部署表包括链代码ID、部署版本号、上传路径、创建时间和创建节点。
作为本发明再进一步的方案:所述S2步骤中数组的创建的方式包括关键字、构造函数方式和字面量方式,其中,
关键字:var变量名=Array();
构造函数方式:var变量名=new Array();
字面量方式:var变量名=[]。
作为本发明再进一步的方案:所述S3步骤中数组通过下标索引进行访问,所述下标索引是从0开始,所述数组长度length和下标索引的关系-1。
与现有技术相比,本发明的有益效果:
本发明将需要溯源的数据在存证时推送至溯源数据散列表,并在需要溯源时,通过两步操作,第一步查询当前溯源结果数,第二步逐个查询溯源结果,从而简单快速的获取数据的所有溯源结果,同时又避免了当前区块链合约语言中,不支持一次性返回大量数据和数组的问题,从而可以快速准确地追踪溯源数据在区块链上的所有流通信息,且操作简单,消耗时间短,无需重复工作。
附图说明
图1为基于区块链的溯源方法的原理示意图。
具体实施方式
本发明实施例中,基于区块链的溯源方法,实现方法包括以下步骤:
S1、建立溯源数据散列表结构,即根据Key-value而直接访问在内存存储位置的数据结构,其通过散列函数将要检索的项与索引关联起来,其中,key为数据存证在区块链上的标识,value为历史流通结果,流通结果包含标识码key,数据哈希data,数据发生流通时的区块哈希和交易哈希;
例如:var history_data map[string][]circulation
type circulation struct{string key
string data
string block_hash
string tx_hash}。
S2、将需要溯源的数据每次存证后,推送至溯源数据散列表,通过标识码key存放数据当前哈希、当前区块哈希和当前交易哈希,多次存证后溯源数据散列表上存在多次的数据哈希、区块哈希和交易哈希,多次存证的结果构成此数据的历史流通结果数组长度length;
例如:需要溯源的存证数据为公安局-人口基本信息,初始上链的标识码为shenfenzheng-001,数据哈希为qwert,区块哈希为asdfg,交易哈希为xzcvb,则推送到溯源数据散列表的操作为:
history_data[shenfenzheng-001][]circulation{circulation{key:shenfenzheng-001,data:qwert,block_hash:asdfg,tx_hash:zxcvb}};
第二次上链存证数据哈希为qwert1,区块哈希为asdfg1,交易哈希为xzcvb1,则推送到溯源数据散列表的操作为:
history_data[shenfenzheng-001][]circulation{circulation{key:shenfenzheng-001,data:qwert1,block_hash:asdfg1,tx_hash:zxcvb1}};
最终溯源数据散列表关于shenfenzheng-001的历史流通结果为数组:
{circulation{key:shenfenzheng-001,data:qwert,block_hash:asdfg,tx_hash:zxcvb},
circulation{key:shenfenzheng-001,data:qwert1,block_hash:asdfg1,tx_hash:zxcvb1},}。
S3、通过存证在溯源数据散列表里的key值,获取此数据的历史流通结果数组长度length,给历史流通结果数组长度建立数组下标索引,再通过数组下标索引一一获取历史流通结果,之所以没有一次性返回所有历史流通结果的是因为,像以太坊这样的平台支持的智能合约语言solidity无法支持复杂类型,如自定义数据结构,数组等的返回,因此,我们只能一个个的去查询获取;
例如:return history_data[shenfenzheng-001].length;
S4、若获取的历史流通结果数组长度length大于0,则说明有过数据流通的历史并存证于链上,并从下标0到历史流通结果数组长度length末端结束,逐个查询所有的历史流通结果信息,从而可以对所有有溯源需求的链上存证标识追踪溯源,具体到每次流动对应的数据、区块、交易等;
例如:length=2,查询下标为0的记录是:
history_data[shenfenzheng-001][0],结果为:circulation{key:shenfenzheng-001,data:qwert,block_hash:asdfg,tx_hash:zxcvb},查询下标为1的记录是:circulation{key:shenfenzheng-001,data:qwert1,block_hash:asdfg1,tx_hash:zxcvb1}。
优选的,S1步骤中的散列函数用于确定需要溯源的数据在数据散列表中的存储位置,散列函数的构造方法包括直接定址法、相乘取整法、平方取中法、除留余数法和随机数法,其中,
直接定址法:H(key)=a·key+b,其中a和b为常数;
相乘取整法:先用关键码key乘上某个常数A(0<A<1),并抽取出key·A的小数部分;然后用m乘以该小数后取整;
平方取中法:取关键码平方后的中间几位为哈希地址,通过平方扩大差别,另外中间几位与乘数的每一位相关,由此产生的散列地址较为均匀;
除留余数法:取关键字被数p除后所得余数为哈希地址:H(key)=key MOD p(p≤m)
随机数法:选择一个随机函数,取关键码的随机函数值为它的哈希地址,即H(key)=random(key),其中random为随机函数。
优选的,S2步骤中数据存证采用链上链下协同工作,并采用文件与哈希值分离的方式,链上只保存文件的哈希值,原文件保存在链下,只要计算出文件的哈希值,并与链上的哈希值比对即可。
优选的,S2步骤中数据存证的步骤包括创建数据分片;加密每个分片;为每个分片生成哈希;复制每个分片;分发复制的分片;记录事务到分类账。
优选的,创建数据分片包括上传链代码、链代码部署和链块信息查询。
优选的,上传链代码用于将链代码源文件保存到相应的目录下进行源文件分析;链代码部署用于通过SDK调用区块链节点的安装接口,根据区块链节点返回部署结果将区块链源代码文件传输到相应的目录表中,形成链代码部署表;链块信息查询用于检索链代码部署表,获取chaincodeID,通过chaincodeID区块链节点发出调用链代码查询接口信息。
优选的,链代码部署表包括链代码ID、部署版本号、上传路径、创建时间和创建节点。
优选的,S2步骤中数组的创建的方式包括关键字、构造函数方式和字面量方式,其中,
关键字:var变量名=Array();
当传入一个值的时候代表数组的长度;如果输入2个值的时候代表数组的数据,例如:
var arr=Array(30,20);
console.log(arr);
构造函数方式:var变量名=new Array();
同样,当传入一个值的时候代表数组的长度;如果输入2个值的时候代表数
组的数据,例如:
var arr=new Array(30,20);
console.log(arr);
字面量方式:var变量名=[];不管输入几个值都是内容。
优选的,S3步骤中数组通过下标索引进行访问,下标索引是从0开始,数组长度length和下标索引的关系-1。
以上所述的,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (8)
1.基于区块链的溯源方法,其特征在于,实现方法包括以下步骤:
S1、建立溯源数据散列表结构,即根据Key-value而直接访问在内存存储位置的数据结构,其通过散列函数将要检索的项与索引关联起来,其中,key为数据存证在区块链上的标识,value为历史流通结果,所述流通结果包含标识码key,数据哈希data,数据发生流通时的区块哈希和交易哈希;
S2、将需要溯源的数据每次存证后,推送至溯源数据散列表,通过标识码key存放数据当前哈希、当前区块哈希和当前交易哈希,多次存证后溯源数据散列表上存在多次的数据哈希、区块哈希和交易哈希,多次存证的结果构成此数据的历史流通结果数组长度length;
S3、通过存证在溯源数据散列表里的key值,获取此数据的历史流通结果数组长度length,给历史流通结果数组长度建立数组的下标索引,再通过数组的下标索引一一获取历史流通结果;
S4、若获取的历史流通结果数组长度length大于0,则说明有过数据流通的历史并存证于链上,并从下标0到历史流通结果数组长度length末端结束,逐个查询所有的历史流通结果信息;
所述S2步骤中数据存证的步骤包括创建数据分片;加密每个分片;为每个分片生成哈希;复制每个分片;分发复制的分片;记录事务到分类账。
2.根据权利要求1所述的基于区块链的溯源方法,其特征在于,所述S1步骤中的散列函数用于确定需要溯源的数据在数据散列表中的存储位置,所述散列函数的构造方法包括直接定址法、相乘取整法、平方取中法、除留余数法和随机数法,其中,
直接定址法:H(key) = a·key + b,其中a和b为常数;
相乘取整法:先用关键码key乘上某个常数A(0 < A < 1),并抽取出key·A的小数部分;然后用m乘以该小数后取整;
平方取中法:取关键码平方后的中间几位为哈希地址,通过平方扩大差别,另外中间几位与乘数的每一位相关,由此产生的散列地址较为均匀;
除留余数法:取关键字被数p除后所得余数为哈希地址:H(key) = key MOD p (p ≤m)
随机数法:选择一个随机函数,取关键码的随机函数值为它的哈希地址,即 H(key) =random (key),其中random为随机函数。
3.根据权利要求1所述的基于区块链的溯源方法,其特征在于,所述S2步骤中数据存证采用链上链下协同工作,并采用文件与哈希值分离的方式,链上只保存文件的哈希值,原文件保存在链下,只要计算出文件的哈希值,并与链上的哈希值比对即可。
4.根据权利要求1所述的基于区块链的溯源方法,其特征在于,所述创建数据分片包括上传链代码、链代码部署和链块信息查询。
5.根据权利要求4所述的基于区块链的溯源方法,其特征在于,所述上传链代码用于将链代码源文件保存到相应的目录下进行源文件分析;所述链代码部署用于通过SDK调用区块链节点的安装接口,根据区块链节点返回部署结果将区块链源代码文件传输到相应的目录表中,形成链代码部署表;所述链块信息查询用于检索链代码部署表,获取chaincodeID,通过chaincodeID区块链节点发出调用链代码查询接口信息。
6.根据权利要求5所述的基于区块链的溯源方法,其特征在于,所述链代码部署表包括链代码ID、部署版本号、上传路径、创建时间和创建节点。
7.根据权利要求1所述的基于区块链的溯源方法,其特征在于,所述S2步骤中数组的创建的方式包括关键字、构造函数方式和字面量方式,其中,
关键字:var 变量名= Array();
构造函数方式:var 变量名 = new Array();
字面量方式:var 变量名 = []。
8.根据权利要求1所述的基于区块链的溯源方法,其特征在于,所述S3步骤中数组通过下标索引进行访问,所述下标索引是从0开始,所述数组长度length和下标索引的关系-1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110804473.7A CN113468571B (zh) | 2021-07-15 | 2021-07-15 | 基于区块链的溯源方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110804473.7A CN113468571B (zh) | 2021-07-15 | 2021-07-15 | 基于区块链的溯源方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113468571A CN113468571A (zh) | 2021-10-01 |
CN113468571B true CN113468571B (zh) | 2023-05-12 |
Family
ID=77880632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110804473.7A Active CN113468571B (zh) | 2021-07-15 | 2021-07-15 | 基于区块链的溯源方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468571B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116385030B (zh) * | 2023-06-06 | 2023-09-15 | 北京农夫铺子技术研究院 | 一种基于区块链的溯源方法 |
CN117539644B (zh) * | 2024-01-09 | 2024-03-26 | 四川迅鳐科技有限公司 | 基于业务链条的区块链交易查询方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
WO2021068726A1 (zh) * | 2019-10-08 | 2021-04-15 | 深圳前海微众银行股份有限公司 | 一种区块链中的交易哈希值存储和搜索方法及装置 |
CN113094366A (zh) * | 2021-04-06 | 2021-07-09 | 湖北央中巨石信息技术有限公司 | 一种基于区块链的数据验真方法、系统及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165224B (zh) * | 2018-08-24 | 2021-02-19 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
US11055792B2 (en) * | 2019-04-29 | 2021-07-06 | Advanced New Technologies Co., Ltd. | Blockchain-based service source tracing method, apparatus, and electronic device |
CN110838064B (zh) * | 2019-10-12 | 2022-05-20 | 华中科技大学 | 一种基于Fabric区块链平台实现资产溯源的方法及系统 |
CN112150149A (zh) * | 2020-09-24 | 2020-12-29 | 深圳市中装智链科技有限公司 | 基于区块链的数据追溯方法、装置、计算机设备及存储介质 |
CN112487061B (zh) * | 2020-12-03 | 2022-07-22 | 南京理工大学 | 一种基于区块链的大数据溯源方法、系统及计算机设备 |
-
2021
- 2021-07-15 CN CN202110804473.7A patent/CN113468571B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
WO2021068726A1 (zh) * | 2019-10-08 | 2021-04-15 | 深圳前海微众银行股份有限公司 | 一种区块链中的交易哈希值存储和搜索方法及装置 |
CN113094366A (zh) * | 2021-04-06 | 2021-07-09 | 湖北央中巨石信息技术有限公司 | 一种基于区块链的数据验真方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113468571A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113468571B (zh) | 基于区块链的溯源方法 | |
CN111382073A (zh) | 自动化测试用例确定方法、装置、设备及存储介质 | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
CN106970929B (zh) | 数据导入方法及装置 | |
CN102460404A (zh) | 生成混淆数据 | |
CN101582767A (zh) | 授权控制方法和授权服务器 | |
CN110727663A (zh) | 数据清洗方法、装置、设备及介质 | |
CN105227352A (zh) | 一种用户标识集的更新方法及装置 | |
CN111723087A (zh) | 数据血缘关系的挖掘方法、装置、存储介质和电子设备 | |
CN104484392A (zh) | 数据库查询语句生成方法及装置 | |
CN104408118A (zh) | 数据库的创建方法和装置 | |
CN102207935A (zh) | 用于创建索引的方法和系统 | |
CN106776704B (zh) | 统计信息收集方法和装置 | |
CN107463578A (zh) | 应用下载量统计数据去重方法、装置和终端设备 | |
CN108647243B (zh) | 基于时间序列的工业大数据存储方法 | |
CN114880385B (zh) | 一种通过自动组合流程接入地质灾害数据的方法及装置 | |
CN112860712B (zh) | 一种基于区块链的交易数据库构建方法、系统及电子设备 | |
CN115114325A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN114625751A (zh) | 基于区块链的数据溯源查询方法及装置 | |
CN112800127A (zh) | 基于交易账单的数据挖掘分析方法及装置 | |
CN112487065A (zh) | 一种数据检索方法和装置 | |
CN106027369A (zh) | 一种面向邮件地址特征的邮件地址匹配方法 | |
CN104765790A (zh) | 一种数据查询的方法和装置 | |
CN113868267A (zh) | 注入时序数据的方法、查询时序数据的方法及数据库系统 | |
CN113448957A (zh) | 一种数据查询方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |