一种长度可调节的区块链及区块验证方法与流程
未命名
10-19
阅读:159
评论:0
1.本发明涉及一种长度可调节的区块链及区块验证方法,属于区块链中的数据存储技术领域。
背景技术:
2.工业物联网(industrial internet of things,iiot)通过无线传感器网络技术、射频识别技术,将mesh网络中的各个节点结合起来,通过数据交互实现复杂的数据采集与监控。近年来,区块链技术(blockchain,bc)越来越受到信息安全领域研究关注,受益于其不可篡改性,区块链特别适用于关键数据,如工业物联网通信分组的存储与访问。
3.与传统的数据存储模型不同,区块链不支持对于区块中数据的修改、删除操作,而iiot底层数据具有较高的时效性,通常而言,三到五年之后即会因为设备周期结束而失去意义,没有必要永久持久化保存。随着区块链中区块数量的增加,访问效率将会逐渐降低直至影响系统的可用性,且哈希函数输出的碰撞概率也会随之线性增加,这对于算力受限的iiot节点将会造成性能灾难。
4.为了能够将区块及其所占空间进行循环回收利用,限制区块链中区块的数量规模,从而进一步提高iiot节点的工作效率,使其能够符合水利、环保、交通等应用场景下的具体需求,需要设计一种长度可调节的区块链结构。
技术实现要素:
5.本发明所要解决的技术问题是:提供一种长度可调节的区块链及区块验证方法,通过动态调节区块链上区块数量,限制区块链总体存储规模,从而节约存储空间、提高数据访问效率、降低因哈希碰撞与哈希耗尽导致的重复计算开销及存储规模总量限制。
6.本发明为解决上述技术问题采用以下技术方案:
7.一种长度可调节的区块链,所述区块链包括ltn个区块,ltn个区块按照第一个区块至第ltn个区块的顺序首尾链接形成环状结构,ltn为区块长度阈值,即区块链中所允许存储的最大区块数量,且ltn>1;
8.每个区块包括首部bheader和主体bbody两部分,其中,首部bheader包括以下属性:区块编号bn、时间戳stp、父区块首部哈希phash、区块主体哈希bhash、区块信任根编号trn以及区块信任根首部哈希trhash;主体bbody包括需要存入区块链中的数据;
9.当需要在区块链中生成新区块,即需要在区块链中存入数据时,将需要在区块链中存入的数据作为新区块主体,根据新区块主体生成其对应的首部,新区块首部包括以下属性:
10.1)区块编号bn,以长整型表示,bn的值通过以下公式计算:
11.bn=(前一个区块.bheader.bn+1)mod ltn
12.其中,前一个区块.bheader.bn表示新区块的前一个区块首部中区块编号的值;mod表示求模取余运算;
13.2)时间戳stp,以长整型表示,stp的值为生成新区块首部时的系统时间;
14.3)父区块首部哈希phash,以二进制串表示,对新区块的前一个区块首部的所有属性联合哈希得出;
15.4)区块主体哈希bhash,以二进制串表示,对新区块主体的全部数据属性联合哈希得出,其值根据以下公式计算:
16.bhash=hash(bbody)
17.其中,hash表示哈希运算;
18.5)区块信任根编号trn,trn的值为当前区块链中第一个区块的区块编号;
19.6)区块信任根首部哈希trhash,以二进制串表示,其值根据以下公式计算:
20.trhash=hash(hash(区块链中stp最小的区块.bheader)+bn)
21.其中,区块链中stp最小的区块.bheader表示当前区块链中时间戳stp最小的区块首部中所有属性;当前区块链中时间戳stp最小的区块即当前区块链中的第一区块;
22.当区块链中已有的区块数量小于ltn时,将新区块加入区块链尾部;当区块链中已有的区块数量大于等于ltn时,将第一个区块从区块链中移除,再将新区块加入区块链尾部;
23.当需要将区块长度阈值从ltn增加至n时,判断区块链中第一个区块的区块编号是否等于0;若是,则将区块长度阈值重新设定为n;否则,继续向区块链中增加新区块,直至第一个区块的区块编号为0时,将区块长度阈值重新设定为n;
24.当需要将区块长度阈值从ltn减少至m时,判断区块链中第一个区块的区块编号是否等于m;若是,从区块链中第一个区块开始,向后依次移除(ltn-m)个区块,将区块长度阈值重新设定为m;否则,继续向区块链中增加新区块,直至第一个区块的区块编号为m。
25.作为本发明的一种优选方案,所述第一区块的区别编号bn为0,第一区块的父区块首部哈希phash值为空,第一区块的区块信任根首部哈希trhash值为空。
26.作为本发明的一种优选方案,所述哈希算法包括但不限于循环冗余校验算法crc、md5信息摘要算法、sm3密码杂凑算法和安全哈希算法sha。
27.作为本发明的一种优选方案,从区块链中移除的区块同步或异步转存至外置非易失性介质存储器中,进行离线或在线备份,所述外置非易失性介质存储器包括高密度磁带、磁盘阵列和移动硬盘。
28.作为本发明的一种优选方案,所述区块链中存在以下关系:
29.hash(第一个区块.bheader.phash+(第一个区块.bheader.bn-1))=hash(第一个区块.bheader.phash+最后一个区块.bheader.bn)=最后一个区块.bheader.trhash
30.其中,第一个区块.bheader.phash表示第一个区块首部中父区块首部哈希的值,第一个区块.bheader.bn表示第一个区块首部中区块编号的值,最后一个区块.bheader.bn表示最后一个区块首部中区块编号的值,最后一个区块.bheader.trhash表示最后一个区块首部中区块信任根首部哈希的值。
31.作为本发明的一种优选方案,将区块长度阈值从ltn增加至n的具体过程如下:
32.s1,判断区块链中第一个区块的区块编号是否等于0,若是,则进入s2,否则进入s3;
33.s2,暂停向区块链中增加新区块,将区块长度阈值重新设定为n;
34.s3,继续向区块链中增加新区块,并返回s1。
35.作为本发明的一种优选方案,需要将区块长度阈值从ltn减少至m的具体过程如下:
36.s4,判断区块链中第一个区块的区块编号是否等于m,若是,则进入s5,否则进入s6;
37.s5,暂停向区块链中增加新区块,从区块链中第一个区块开始,向后依次移除(ltn-m)个区块,将区块长度阈值重新设定为m;
38.s6,继续向区块链中增加新区块,并返回s4。
39.一种区块验证方法,所述区块验证方法包括如下步骤:
40.步骤1,找到区块链中时间戳stp值最小的区块,计算当前区块主体的哈希值,并与当前区块首部中区块主体哈希bhash值比较,若相同,则当前区块主体完整性验证通过,进入步骤2验证当前区块首部完整性,否则验证不通过,停止验证;
41.步骤2,判断当前区块是否为区块链中最后一个区块,若不是最后一个区块,计算当前区块首部所有属性的联合哈希值temp0,计算公式如下:
42.temp0=hash(当前区块.bheader)
43.其中,当前区块.bheader表示当前区块首部中的所有属性;将所有属性的联合哈希值与当前区块的后一个区块首部中的父区块首部哈希phash值比较,若相同,当前区块首部完整性验证通过,返回步骤1继续验证下一个区块;否则验证不通过,停止验证;
44.若是最后一个区块,将区块链中第一个区块首部中的父区块首部哈希phash与第一个区块的[区块编号bn-1)mod ltn]联合哈希,计算公式如下:
[0045]
temp1=(第一个区块.bheader.bn-1)mod ltn=最后一个区块.bheader.bntemp2=hash(第一个区块.bheader.phash+temp1)
[0046]
其中,第一个区块.bheader.bn表示第一个区块首部中的区块编号,最后一个区块.bheader.bn表示最后一个区块首部中的区块编号,第一个区块.bheader.phash表示第一个区块首部中的父区块首部哈希,temp1表示中间结果,temp2表示最终结果,将最终结果与最后一个区块首部中的信任根首部哈希trhash比较,若相同,当前区块首部完整性验证通过,所有区块验证完成;否则验证不通过,停止验证。
[0047]
一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的区块验证方法的步骤。
[0048]
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的区块验证方法的步骤。
[0049]
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0050]
本发明能够根据性能及存储冗余需要将区块链长度动态设置为ltn,并以模ltn的阿贝尔群上的离散整数作为区块首部编号,每个区块编号在区块链上全局唯一,攻击者无法向区块链中插入超出ltn范围的区块;对于区块链首部的第一个区块,当其不是创世区块时,建立第一个区块与区块链中最后一个区块之间的哈希链接,形成封闭的单向环结构。上述设计使得传统区块链结构上连续区块组成的真子集同样具备所有区块节点上的哈希连接,降低了区块首部、区块主体数据受到非法篡改的安全风险。
附图说明
[0051]
图1是本发明长度可调节的区块链区块数据结构示意图;
[0052]
图2是本发明长度可调节的区块链区块间哈希连接示意图。
具体实施方式
[0053]
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0054]
如图1所示,为本发明长度可调节的区块链区块数据结构示意图。区块链中,有穷个数的区块以链表结构相互连接。换言之,一条区块链中,区块数量为大于1的整数,初始状态时最少存在一个区块,该区块被称为创世区块。每一区块由区块主体、区块首部两部分组成,其中区块首部包含以下属性:
[0055]
区块编号,时间戳,父区块首部哈希,区块主体哈希,区块信任根编号,区块信任根首部哈希;
[0056]
区块主体包含需要存入区块链中需要持久化保存的数据,区块主体所在区块一旦进入区块链中,在被从区块链移除之前无法进行任何修改,区块链提供对于区块主体、区块首部的数据完整性验证。区块主体可为明文数据或加密数据。
[0057]
当需要在区块链中生成新的区块时,执行如下操作:
[0058]
将需要存入区块链持久化保存的数据作为区块主体,设其为bbody,其数据类型可为字符串或字节流。根据bbody,生成其对应的区块首部bheader,bheader的数据结构中至少包括以下属性:
[0059]
区块编号bn,以长整型表示,bn的值通过以下公式计算:
[0060]
bn=(前一个区块.bheader.bn+1)mod ltn
[0061]
前一个区块.bheader.bn表示当前区块的前一个区块首部中,区块编号的值;mod表示求模取余运算,即减去ltn的整数倍后,小于ltn的余数。区块长度阈值ltn,为该区块链中所允许存储的最大区块数量,由于初始状态下区块链中至少存在1个创世区块,显然ltn的值大于1。ltn可由创建者自行设定,该值限定了区块链中区块的最大数量,超过该数量的区块将会被从区块链中移除。为方便计算,将创世区块的bn值设为0。
[0062]
时间戳stp,以长整型表示,其值为生成bheader时的系统时间,其精度由创建者自行设定,可精确至秒、毫秒、纳秒。
[0063]
父区块首部哈希phash,以二进制串表示,对当前区块的前一个区块中bheader所有属性联合哈希得出,哈希算法包括但不限于crc、md5、sm3、sha等。
[0064]
创世区块默认为区块链中第1个区块,不存在前一个区块,故创世区块的phash值为空。
[0065]
区块主体哈希bhash,以二进制串表示,对当前区块主体bbody的全部数据属性联合哈希得出,其值根据以下公式计算:
[0066]
bhash=hash(bbody)
[0067]
区块信任根编号,为当前区块链中首部区块的区块编号。
[0068]
区块信任根首部哈希trhash,以二进制串表示,其值根据以下公式计算:
[0069]
trhash=hash(hash(区块链中stp最小的区块.bheader)+bn)
[0070]
区块链中stp最小的区块.bheader表示当前区块链中时间戳stp最小的区块首部中所有属性。由于各区块依时间顺序进入区块链,故生成bheader时,区块链中第一个区块必定拥有最小的时间戳stp,此时上述公式可替换为:
[0071]
trhash=hash(hash(区块链中第一个区块.bheader)+bn)
[0072]
创世区块加入区块链之前,不存在其他区块,故创世区块的trhash值为空。
[0073]
由bn计算公式可证,当区块链中已有的区块数量小于区块长度阈值ltn时,新区块的区块编号bn不会与其他区块发生碰撞,将bheader、bbody作为新的区块加入区块链尾部,区块生成完成。
[0074]
当区块链中已有的区块数量大于等于ltn时,下一个区块编号bn必定与区块链中第一个区块发生碰撞,此时将第一个区块从区块链中移除,再将bheader、bbody作为新的区块加入区块链尾部,区块生成步骤完成。此时,区块编号bn+1的区块成为区块链新的首部,其父区块首部哈希phash指向的前一个区块已被移除,但是仍可在区块验证步骤中对该值进行验证。
[0075]
移除的区块,可同步或异步转存至高密度磁带、磁盘阵列、移动硬盘等外置非易失性介质存储器中,进行离线或在线备份。
[0076]
区块长度阈值增加
[0077]
假设需要将区块长度阈值从当前值ltn增加至n,显然存在如下关系:
[0078]
n》ltn》0
[0079]
当且仅当区块链中第一个区块的区块编号等于0时,允许执行区块长度阈值增加步骤。若当前区块链中第一个区块的区块编号不等于0时,等待区块生成步骤向区块链中加入新的区块,直到第一个区块的区块编号为0:
[0080]
首先,暂停区块生成步骤,挂起一切区块生成操作指令,从而停止向区块链中增加区块;
[0081]
然后,将区块长度阈值重新设为n;
[0082]
最后,恢复区块生成步骤,继续向区块链中增加区块。
[0083]
区块长度阈值减少
[0084]
假设需要将区块长度阈值从当前值ltn减少至m,显然存在由如下关系:
[0085]
0《m《ltn
[0086]
当且仅当区块链中第一个区块的区块编号等于m时,允许执行区块长度阈值减少步骤。若当前区块链中第一个区块的区块编号不等于m时,等待区块生成步骤向区块链中加入新的区块,直到第一个区块的区块编号为m:
[0087]
首先,暂停区块生成步骤,挂起一切区块生成操作指令,从而停止向区块链中增加区块;
[0088]
然后,从区块链中第一个区块开始,向后依次移除(ltn-m)个区块,直到区块链中第一个区块的区块编号bn为0,并将区块长度阈值重新设为m;
[0089]
最后,恢复区块生成步骤,继续向区块链中增加区块。
[0090]
根据上述公式,易证当ltn+1个区块存入区块链后,区块链中移除旧的区块,仅保留最新的ltn个区块。且区块链中存在以下关系:
[0091]
hash(第一个区块.bheader.phash+(第一个区块.bheader.bn-1))=hash(第一个
区块.bheader.phash+最后一个区块.bheader.bn)=最后一个区块.bheader.trhash
[0092]
上述关系建立了第一个区块和最后一个区块间的哈希连接,使其称为一个环状结构,如图2所示,任何在环上的元素间插入区块的操作必然破坏哈希连接,导致区块验证步骤不通过,从而降低对于区块链上数据非法篡改的风险。因此,攻击者无法在不破坏哈希连接的条件下,自第一个区块到最后一个区块之间插入、篡改任何区块。
[0093]
区块验证
[0094]
当需要验证区块链中每一个区块的数据完整性时,执行如下操作:
[0095]
找到当前区块链中第一个区块,该区块必定拥有最小的时间戳stp值,验证其区块主体bbody的完整性,具体步骤如下:
[0096]
首先,计算当前区块主体bbody的哈希值,并与当前区块首部的区块主体哈希bhash比较。若相同,区块主体完整性验证通过,开始验证其区块首部完整性。若否,验证不通过,停止验证。
[0097]
然后,判断当前区块是否为区块链中最后一个区块。若当前区块为区块链中最后一个区块,则当前区块编号bn+1的区块必为区块链中第一个区块,拥有最小的时间戳stp值;反之,则当前区块编号bn+1的区块一定不是区块链中第一个区块。
[0098]
若不是最后一个区块,计算该区块首部所有属性的联合哈希值,计算公式如下:
[0099]
temp0=hash(当前区块.bheader)
[0100]
将上述值与当前区块链中后一个区块首部的父区块首部哈希phash比较,若相同,区块首部完整性验证通过,继续验证下一个区块;若否,验证不通过,停止验证。
[0101]
若是最后一个区块,将区块链中第一个区块的父区块首部哈希phash,与第一个区块的[区块编号bn-1)mod ltn]联合哈希,计算公式如下:
[0102]
temp1=(第一个区块.bheader.bn-1)mod ltn=最后一个区块.bheader.bntemp2=hash(第一个区块.bheader.phash+temp1)
[0103]
其结果与最后一个区块的信任根首部哈希trhash比较。若相同,区块首部完整性验证通过,所有区块验证成功完成;若否,验证不通过,停止验证。
[0104]
基于同一发明构思,本技术实施例提供一种计算机设备,包括存储器、处理器,以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述的区块验证方法的步骤。
[0105]
基于同一发明构思,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现前述的区块验证方法的步骤。
[0106]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0107]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0108]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0109]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0110]
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
技术特征:
1.一种长度可调节的区块链,其特征在于,所述区块链包括ltn个区块,ltn个区块按照第一个区块至第ltn个区块的顺序首尾链接形成环状结构,ltn为区块长度阈值,即区块链中所允许存储的最大区块数量,且ltn>1;每个区块包括首部bheader和主体bbody两部分,其中,首部bheader包括以下属性:区块编号bn、时间戳stp、父区块首部哈希phash、区块主体哈希bhash、区块信任根编号trn以及区块信任根首部哈希trhash;主体bbody包括需要存入区块链中的数据;当需要在区块链中生成新区块,即需要在区块链中存入数据时,将需要在区块链中存入的数据作为新区块主体,根据新区块主体生成其对应的首部,新区块首部包括以下属性:1)区块编号bn,以长整型表示,bn的值通过以下公式计算:bn=(前一个区块.bheader.bn+1)mod ltn其中,前一个区块.bheader.bn表示新区块的前一个区块首部中区块编号的值;mod表示求模取余运算;2)时间戳stp,以长整型表示,stp的值为生成新区块首部时的系统时间;3)父区块首部哈希phash,以二进制串表示,对新区块的前一个区块首部的所有属性联合哈希得出;4)区块主体哈希bhash,以二进制串表示,对新区块主体的全部数据属性联合哈希得出,其值根据以下公式计算:bhash=hash(bbody)其中,hash表示哈希运算;5)区块信任根编号trn,trn的值为当前区块链中第一个区块的区块编号;6)区块信任根首部哈希trhash,以二进制串表示,其值根据以下公式计算:trhash=hash(hash(区块链中stp最小的区块.bheader)+bn)其中,区块链中stp最小的区块.bheader表示当前区块链中时间戳stp最小的区块首部中所有属性;当前区块链中时间戳stp最小的区块即当前区块链中的第一区块;当区块链中已有的区块数量小于ltn时,将新区块加入区块链尾部;当区块链中已有的区块数量大于等于ltn时,将第一个区块从区块链中移除,再将新区块加入区块链尾部;当需要将区块长度阈值从ltn增加至n时,判断区块链中第一个区块的区块编号是否等于0;若是,则将区块长度阈值重新设定为n;否则,继续向区块链中增加新区块,直至第一个区块的区块编号为0时,将区块长度阈值重新设定为n;当需要将区块长度阈值从ltn减少至m时,判断区块链中第一个区块的区块编号是否等于m;若是,则从区块链中第一个区块开始,向后依次移除(ltn-m)个区块,并将区块长度阈值重新设定为m;否则,继续向区块链中增加新区块,直至第一个区块的区块编号为m。2.根据权利要求1所述的长度可调节的区块链,其特征在于,所述第一区块的区别编号bn为0,第一区块的父区块首部哈希phash值为空,第一区块的区块信任根首部哈希trhash值为空。3.根据权利要求1所述的长度可调节的区块链,其特征在于,所述哈希算法包括但不限于循环冗余校验算法crc、md5信息摘要算法、sm3密码杂凑算法和安全哈希算法sha。4.根据权利要求1所述的长度可调节的区块链,其特征在于,从区块链中移除的区块同步或异步转存至外置非易失性介质存储器中,进行离线或在线备份,所述外置非易失性介
质存储器包括高密度磁带、磁盘阵列和移动硬盘。5.根据权利要求1所述的长度可调节的区块链,其特征在于,所述区块链中存在以下关系:hash(第一个区块.bheader.phash+(第一个区块.bheader.bn-1))=hash(第一个区块.bheader.phash+最后一个区块.bheader.bn)=最后一个区块.bheader.trhash其中,第一个区块.bheader.phash表示第一个区块首部中父区块首部哈希的值,第一个区块.bheader.bn表示第一个区块首部中区块编号的值,最后一个区块.bheader.bn表示最后一个区块首部中区块编号的值,最后一个区块.bheader.trhash表示最后一个区块首部中区块信任根首部哈希的值。6.根据权利要求1所述的长度可调节的区块链,其特征在于,将区块长度阈值从ltn增加至n的具体过程如下:s1,判断区块链中第一个区块的区块编号是否等于0,若是,则进入s2,否则进入s3;s2,暂停向区块链中增加新区块,将区块长度阈值重新设定为n;s3,继续向区块链中增加新区块,并返回s1。7.根据权利要求1所述的长度可调节的区块链,其特征在于,需要将区块长度阈值从ltn减少至m的具体过程如下:s4,判断区块链中第一个区块的区块编号是否等于m,若是,则进入s5,否则进入s6;s5,暂停向区块链中增加新区块,从区块链中第一个区块开始,向后依次移除(ltn-m)个区块,将区块长度阈值重新设定为m;s6,继续向区块链中增加新区块,并返回s4。8.一种区块验证方法,其特征在于,所述区块验证方法包括如下步骤:步骤1,找到区块链中时间戳stp值最小的区块,计算当前区块主体的哈希值,并与当前区块首部中区块主体哈希bhash值比较,若相同,则当前区块主体完整性验证通过,进入步骤2验证当前区块首部完整性,否则验证不通过,停止验证;步骤2,判断当前区块是否为区块链中最后一个区块,若不是最后一个区块,计算当前区块首部所有属性的联合哈希值temp0,计算公式如下:temp0=hash(当前区块.bheader)其中,当前区块.bheader表示当前区块首部中的所有属性;将所有属性的联合哈希值与当前区块的后一个区块首部中的父区块首部哈希phash值比较,若相同,当前区块首部完整性验证通过,返回步骤1继续验证下一个区块;否则验证不通过,停止验证;若是最后一个区块,将区块链中第一个区块首部中的父区块首部哈希phash与第一个区块的[区块编号bn-1)mod ltn]联合哈希,计算公式如下:temp1=(第一个区块.bheader.bn-1)mod ltn=最后一个区块.bheader.bntemp2=hash(第一个区块.bheader.phash+temp1)其中,第一个区块.bheader.bn表示第一个区块首部中的区块编号,最后一个区块.bheader.bn表示最后一个区块首部中的区块编号,第一个区块.bheader.phash表示第一个区块首部中的父区块首部哈希,temp1表示中间结果,temp2表示最终结果,将最终结果与最后一个区块首部中的信任根首部哈希trhash比较,若相同,当前区块首部完整性验证通过,所有区块验证完成;否则验证不通过,停止验证。
9.一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求8所述的区块验证方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求8所述的区块验证方法的步骤。
技术总结
本发明公开了一种长度可调节的区块链及区块验证方法,区块链由LTN个区块首尾链接形成环状结构,每个区块包括首部和主体两部分,其中,首部包括以下属性:区块编号、时间戳、父区块首部哈希、区块主体哈希、区块信任根编号以及区块信任根首部哈希;主体包括需要存入区块链中的数据。通过动态调节区块链上区块数量,限制区块链总体存储规模,从而节约存储空间、提高数据访问效率、降低因哈希碰撞与哈希耗尽导致的重复计算开销及存储规模总量限制。本发明方法能够运行在嵌入式等算力受限的瘦系统上,与传统区块链技术相比,具有算法轻量、高效便捷、弹性部署等优点。弹性部署等优点。弹性部署等优点。
技术研发人员:傅晓 潘昊 杨瀚博
受保护的技术使用者:南京安芯物联科技有限公司
技术研发日:2023.07.04
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
