一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链智能合约的物联网数据存证方法与流程

2022-04-02 07:46:40 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,具体涉及一种基于区块链智能合约的物联网数据存证方法。


背景技术:

2.区块链是一个分布式、共享账本,在区块链上记载的数据具有不可篡改、全程留痕、可以追溯、公开透明等特征。这些特点保证了区块链的诚实与透明,为区块链创造信任奠定基础。区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动,降低信任成本,比如在电子数据的存证应用。电子数据具有存储方便、容易传输的特点,但也存在容易被篡改的缺点。随着目前的物联网技术的发展,大量环境检测及设备运输数据被收集起来。将这些物联网收集到的数据采用区块链存证,能够使数据被存证固定,不会遭受篡改,提供真实可靠的数据,具有广泛的应用前景。但物联网中存在的数据节点数量众多,无时无刻不在产生数据,给区块链带来巨大的运算和带宽压力。将数据上传到区块链存在手续费,目前对数据的存证是将数据的哈希值上传到区块链存储,使得单次存证的成本较低。但当存证需要不断进行时,还是会给物联网企业带来了资金上的成本。因而需要研究一种能够减少上链数据的频次,同时又能够提供所需要的真实性证明的技术。
3.中国专利cn112954039a,公开日2021年6月11日,一种区块链存证方法,客户端根据预设运算,将密钥、客户端随机数、服务器端随机数、客户端标识,服务器端标识,目标数据和地址信息作为输入,生成客户端验证码;服务器端根据预设运算,把密钥、客户端随机数、服务器端随机数、客户端标识,服务器端标识,目标数据和地址信息作为输入,生成服务器权验证码;服务器验证比对客户端验证码和服务器端认证码相等时,服务器端把存证参数、客户端标识、服务器端标识、地址信息、客户端随机数、服务器端随机数、客户端验证码一起写入区块链。其优点在于只上传存证标识、客户端标识、服务器端标识、地址信息、客户端随机数、服务器端随机数、客户端验证码到区块链;即使大量数据需要存证,也不需要大量的时间上链和链上存储成本。但其不能解决物联网数据需要不断存证时,带来的成本问题。


技术实现要素:

4.本发明要解决的技术问题是:目前缺少能够降低数据上传频次的区块链存证方法的技术问题。提出了一种基于区块链智能合约的物联网数据存证方法,采用智能合约的方式完成数据的存证和验证,不需要将数据的哈希值永久的保存在区块链上,提供了不同的数据存证途径。
5.为解决上述技术问题,本发明所采取的技术方案为:一种基于区块链智能合约的物联网数据存证方法,在区块链上发布智能合约,所述智能合约包括预言函数、匹配数发放器和验证器,所述预言函数的输入数为十六进制数,预言函数的输出为数值,所述匹配数发
放器接收数据节点发送的十六进制数,代入预言函数,将预言函数的输出作为匹配数反馈给所述数据节点;物联网的数据节点周期性产生待存证数据,提取待存证数据的哈希值,将哈希值的发送给匹配数发放器,获得匹配数发放器反馈的匹配数;将待存证数据关联哈希值和匹配数存储,完成本周期待存证数据的存证;验证已存证数据时,将哈希值和匹配数发送给验证器,所述验证器将哈希值代入预言函数,若预言函数的输出与匹配数相同,则反馈验证通过,反之,则反馈验证失败。
6.作为优选,所述预言函数为以输入数为自变量的多项式,所述智能合约周期性更换预言函数,更换预言函数的方法包括:记录多项式的项系数,构成系数向量,将系数向量关联时间戳保存;生成随机数作为新的多项式的项系数;验证数据时,同时提交数据存证的时间戳,所述验证器根据时间戳获得数据存证时对应的预言函数,进行验证。
7.作为优选,所述数据节点将哈希值的末尾n位发送给匹配数发放器,获得哈希值的末尾n位对应的匹配数,将待存证数据关联哈希值和匹配数存储,验证已存证数据时,将哈希值的末尾n位和匹配数发送给验证器,所述验证器将哈希值代入预言函数,若预言函数的输出与匹配数相同,则反馈验证通过,反之,则反馈验证失败。
8.作为优选,所述预言函数的输入包括输入数和时间戳,所述预言函数为多项式项和时间戳项的和,所述多项式项为输入数的多项式,所述时间戳项为时间戳与起始时间戳的差值与权重的乘积,所述权重大于多项式项的取值范围的最大值,所述数据节点将时间戳和哈希值的末尾n位发送给匹配数发放器,匹配数发放器验证时间戳与当前时间的差值是否小于预设阈值,若时间戳差值小于预设阈值,则匹配数发放器将数据节点提交的时间戳和哈希值末尾n位代入预言函数,获得匹配数发放器反馈的匹配数,若若时间戳差值不小于预设阈值,则不做操作。
9.作为优选,所述智能合约包括多个预言函数,所述匹配数发放器接收数据节点发送的十六进制数,分别代入若干个预言函数,获得若干个预言函数的输出,将若干个预言函数的输出的最小值作为匹配数反馈给所述数据节点,验证已存证数据时,将哈希值和匹配数发送给验证器,所述验证器将哈希值代入若干个预言函数,获得若干个预言函数的输出,预言函数的输出中的最小值与匹配数相同,则反馈验证通过,反之,则反馈验证失败。
10.本发明的实质性效果是:多个数据节点进行存证时,使用的预言函数是相同的,因而只需要存储预言函数即可,验证数据时采用验证数据节点能够提供正确的与哈希值及预言函数对应的匹配数,因为预言函数是保密的,匹配数只能由智能合约颁发,若数据发生过篡改,则篡改后的数据的哈希值比如与匹配数不再满足对应关系,且不同数据节点之间的匹配数相同的概率极低,因而能够证明拥有正确匹配数的数据未被篡改,本存在方法完成存证不需要在区块链上新增数据,提供了新的区块链数据存证方案。
附图说明
11.图1为实施例一物联网数据存证方法流程示意图。
12.图2为实施例一周期性更换预言函数方法示意图。
13.图3为实施例一数据存证示意图。
14.其中:10、待存证数据,20、存证标。
具体实施方式
15.下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。
16.实施例一:一种基于区块链智能合约的物联网数据存证方法,请参阅附图1,包括:步骤a01)在区块链上发布智能合约,智能合约包括预言函数、匹配数发放器和验证器,预言函数的输入数为十六进制数,预言函数的输出为数值,匹配数发放器接收数据节点发送的十六进制数,代入预言函数,将预言函数的输出作为匹配数反馈给数据节点;步骤a02)物联网的数据节点周期性产生待存证数据10,提取待存证数据10的哈希值,将哈希值的发送给匹配数发放器,获得匹配数发放器反馈的匹配数;步骤a03)将待存证数据10关联哈希值和匹配数存储,完成本周期待存证数据10的存证;步骤a04)验证已存证数据时,将哈希值和匹配数发送给验证器,验证器将哈希值代入预言函数,若预言函数的输出与匹配数相同,则反馈验证通过,反之,则反馈验证失败。
17.预言函数为以输入数为自变量的多项式,智能合约周期性更换预言函数,请参阅附图2,更换预言函数的方法包括:步骤b01)记录多项式的项系数,构成系数向量,将系数向量关联时间戳保存;步骤b02)生成随机数作为新的多项式的项系数;步骤b03)验证数据时,同时提交数据存证的时间戳,验证器根据时间戳获得数据存证时对应的预言函数,进行验证。由于区块链中,每个区块链节点在执行生成随机数时,会产生不同的随机值,导致智能合约的执行在不同区块链节点上出现差异,引起智能合约执行的报错。因而更好预言函数的方案,需要在已发布有生成随机数的智能合约的区块链上执行。生成随机数的智能合约采用最早执行的区块链节点产生的随机数为准,统一智能合约的执行结果,实现生产随机数。区块链上的智能合约是能够相互调用的。虽然智能合约是图灵完备的,理论上能够支持任何的操作,但更优的执行方案是一段时间后重新发布新的智能合约,新的智能合约中附带新的预言函数,将新的智能合约的地址发送给数据节点即可。如此执行的优点是智能合约在区块链上执行时出错的概率更低。
18.不同于现有技术中,将数据的哈希值上传到区块链存储。验证数据的哈希值与区块链上的存储的哈希值是否相同即可验证数据是否被篡改过。本实施例提供的技术方案是将数据的哈希值与匹配数之间的匹配关系,在区块链上固定存储。对一段时间内的全部待存证数据10而言,这种匹配关系是相同的,因而只需要在区块链上存储少量数据即可。在存证中,不再是将数据的哈希值上传到区块链,而是在新的待存证数据10上,构建这一相同的匹配关系。但数据被篡改,就会导致数据的哈希值变化,进而破坏了哈希值与匹配数之间的匹配关系。通过智能合约的验证,能够方便的给出验证结果。本实施例提供的预言函数为多项式函数,即匹配数=a0 a1*哈希值 a2*哈希值^2

n*哈希值^n。a0至an为随机生成的项系数。为避免匹配数太大,可以采取将a0至an至选择较小值,也可以采用将哈希值除以预设的常数后,再进行多项式的计算。产生匹配数和验证匹配数时进行相同的计算过程即可。
19.表1 本实施例使用的智能合约结构智能合约地址:0x962

5ac预言函数:匹配数=58caf9*哈希值^3-f8dc67*哈希值^2-79b37d*哈希值 b730匹配数发放器执行代码段验证器执行代码段
哈希值接收地址:url_in1:236.35.12.05:260/in1.jsp匹配数输出地址:url_out1:由请求的数据节点填入哈希值和匹配数接收地址:url_in1:236.35.12.05:260/in2.jsp验证结果输出地址:url_out2:由请求者填入如表1所示,智能合约为在区块链上存储的一段可执行代码,由于区块链的不可篡改性,使得智能合约总是按照发布时的代码执行。目前的区块链已普遍支持智能合约,智能合约执行过程中也会产生费用,但收费不同于将数据存储在区块链上。随着区块链的运行,区块链上存储的数据将越来越多,最终将导致将数据固定在区块链上的成本越来越高,而本实施例仅需要起始阶段,将少量的数据存储在区块链上,随后进行存证时,并不会因为每次存证而产生新的需要在区块链存储的数据,因而更适合在区块链上进行物联网数据的存证。因为物联网不仅数据量大,且传感器、设备监测器等,无时无刻不停歇的持续产生数据。采用本实施例的方案,能够减轻区块链的负担。仅需要消耗区块链上的部分算力即可完成存证。请参阅附图3,待存证数据10存证完成后,仅需要在本地分配少量存储空间,如本实施例中采用周期性的在存储空间内的数据后建立存证标20的形式,将待存证数据10的哈希值、匹配数和时间戳存储。物联网存证后的数据中,需要验证是否被篡改的机会并不多。因此,将数据永久的存储在区块链上,对区块链节点的存储资源而言并不划算。大部分不需要验证的已存证数据,在存证前后,对区块链仅消耗了少量算力,之后便再无负担,降低了对区块链资源的消耗。
20.数据节点将哈希值的末尾n位发送给匹配数发放器,获得哈希值的末尾n位对应的匹配数,将待存证数据10关联哈希值和匹配数存储,验证已存证数据时,将哈希值的末尾n位和匹配数发送给验证器,验证器将哈希值代入预言函数,若预言函数的输出与匹配数相同,则反馈验证通过,反之,则反馈验证失败。哈希算法中产生的哈希值长度不一,如sha256产生256位的16进制数,这个数值直接进行预言函数的计算,会导致运算涉及的数过大,降低计算效率,因而本实施例提供了采用哈希值末尾n位参与预言函数计算的方案。当n取值10时,预言函数的计算涉及10位16进制数,即2^40,处于数据格式bigint能够表示的数值范围,因而能够方便的各种系统中直接的获得计算兼容。数据被篡改后,哈希值的末尾10位不发生变化的概率为1/16^10,仍然是一个极小的概率。
21.预言函数的输入包括输入数和时间戳,预言函数为多项式项和时间戳项的和,多项式项为输入数的多项式,时间戳项为时间戳与起始时间戳的差值与权重的乘积,权重大于多项式项的取值范围的最大值,数据节点将时间戳和哈希值的末尾n位发送给匹配数发放器,匹配数发放器验证时间戳与当前时间的差值是否小于预设阈值,若时间戳差值小于预设阈值,则匹配数发放器将数据节点提交的时间戳和哈希值末尾n位代入预言函数,获得匹配数发放器反馈的匹配数,若若时间戳差值不小于预设阈值,则不做操作。智能合约是将代码转换为二进制机器码后发布在区块链上的,因而智能合约的公开不等于代码的公开,相当于使预言函数仍然保持保密状态。关联时间戳后,使得匹配数中自然的含有时间戳信息,能够提供更多的信息,提高数据的可信度。哈希值是十六进制数,数值比较大,将哈希值归一化后,能够获得多项式的最大可能取值。如9*归一化哈希值^2-8*归一化哈希值 3的可能最大取值为4,此时权重取值5即可。即匹配数=4*时间戳 9*归一化哈希值^2-8*归一化哈希值 3。归一化后的哈希值小数点后的位数较多,可以视情况决定保留几位小数点。
22.智能合约包括多个预言函数,匹配数发放器接收数据节点发送的十六进制数,分别代入若干个预言函数,获得若干个预言函数的输出,将若干个预言函数的输出的最小值作为匹配数反馈给数据节点,验证已存证数据时,将哈希值和匹配数发送给验证器,验证器将哈希值代入若干个预言函数,获得若干个预言函数的输出,预言函数的输出中的最小值与匹配数相同,则反馈验证通过,反之,则反馈验证失败。智能合约中包含多个预言函数,每次计算获得的最小值作为最终的匹配值反馈给数据节点,使得匹配数更加没有规律,即使长期运行,产生大量的哈希值匹配数对,也难以反推出准确的预言函数。
23.本实施例的有益技术效果是:多个数据节点进行存证时,使用的预言函数是相同的,因而只需要存储预言函数即可,验证数据时采用验证数据节点能够提供正确的与哈希值及预言函数对应的匹配数,因为预言函数是保密的,匹配数只能由智能合约颁发,若数据发生过篡改,则篡改后的数据的哈希值比如与匹配数不再满足对应关系,且不同数据节点之间的匹配数相同的概率极低,因而能够证明拥有正确匹配数的数据未被篡改,本存在方法完成存证不需要在区块链上新增数据,提供了新的区块链数据存证方案。
24.以上的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献