基于区块链的版本回溯方法、装置及相关设备与流程

    专利2022-07-08  85


    本发明涉及区块链
    技术领域
    ,尤其涉及一种基于区块链的版本回溯方法、装置、计算机设备及存储介质。
    背景技术
    :对于目前的软件开发项目,随着用户需求及软件自身功能更新的需要越来越多,同一软件开发项目的版本号也越来越多,当历史版本的数量越来越大时,如何回溯到需要的目标版本成为有些场景中亟待解决的技术问题。现阶段用于回溯到目标版本的方法可以用区块链原生交易链式存储的方式操作序列来实现,或者用智能合约的方式全量记录操作日志,并通过下标快速回溯到目标版本。目前这种用交易纯链式操作无法做到快速版本回溯,且无法方便做到操作回滚,用智能合约去做版本控制效率降低,时间消耗较大,且这种时间消耗大、回溯效率低的缺陷随着历史版本数量的增加而变得明显。技术实现要素:本发明实施例提供一种基于区块链的版本回溯方法、装置、计算机设备及存储介质,以解决现有版本回溯方法耗时长、回溯效率低的技术问题。本发明一方面提供了一种基于区块链的版本回溯方法,所述方法包括:接收用户确定的当前版本号和需要回溯的目标版本号;计算所述当前版本号和所述目标版本号之间的差值,并将所述差值转换成m进制,得到d=mx … my mz,其中,d表示所述差值,mx表示所述差值的最高位,mz表示所述差值的最低位;从区块链中获取回溯数组,所述回溯数组存储有以每一个版本号为起始节点链起的版本序列中与所述起始节点相隔mi位对应的版本号,所述回溯数组存储有与mi位对应版本号的版本哈希值,所述i表示所述m进制的位数,i≥0且i为整数;以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号;当所述mz不为所述差值的最高位时,以查询得到的与所述起始节点间隔mz位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔my位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔mx位对应的回溯版本号作为所述目标版本号;从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。本发明另一方面提供了一种基于区块链的版本回溯装置,所述装置包括:版本号接收模块,用于接收用户确定的当前版本号和需要回溯的目标版本号;计算模块,用于计算所述当前版本号和所述目标版本号之间的差值,并将所述差值转换成m进制,得到d=mx … my mz,其中,d表示所述差值,mx表示所述差值的最高位,mz表示所述差值的最低位;数组获取模块,用于从区块链中获取回溯数组,所述回溯数组存储有以每一个版本号为起始节点链起的版本序列中与所述起始节点相隔mi位对应的版本号,所述回溯数组存储有与mi位对应版本号的版本哈希值,所述i表示所述m进制的位数,i≥0且i为整数;回溯模块,用于以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号;递归查询模块,用于当所述mz不为所述差值的最高位时,以查询得到的与所述起始节点间隔mz位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔my位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔mx位对应的回溯版本号作为所述目标版本号;哈希值获取模块,用于从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于区块链的版本回溯方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于区块链的版本回溯方法的步骤。本发明提出的基于区块链的版本回溯方法、装置、计算机设备及存储介质,通过计算当前版本号和目标版本号之间的差值,并将该差值转换成m进制,根据回溯数组存储的以每一个版本号为起始节点链起的版本序列中与m进制中mi位对应的版本号,从该差值的m进制的最低位开始查询,直到查询到该差值的m进制的最高位,通过递归的方式以指数级的速度从该回溯数组中找到目标版本号,最后根据该回溯数组中存储的与该目标版本号对应的版本哈希值,得到目标版本,其版本回滚的速度从原先的逐一回滚呈指数级提高,大大减少了版本回溯的耗时,提高了版本回溯的速度。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明一实施例中基于区块链的版本回溯方法的一应用环境示意图;图2是本发明一实施例中基于区块链的版本回溯方法的一流程图;图3是本发明另一实施例中基于区块链的版本回溯方法的一流程图;图4是本发明一实施例中基于区块链的版本回溯装置的结构示意图;图5是本发明一实施例中计算机设备的一示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。其中,该基于区块链的版本回溯方法还可应用在如图1的应用环境中,其中,区块链由若干个相互间能够进行通信的节点组成,每个节点可以看做是一个块存储,各块存储用于保存数据,每一个数据节点之间都包含所有数据,所述块存储数据具备完整历史记录,可快速复原拓展,区域链分为公有链、私有链和联盟链,公有链是任何节点都是开放的,每个人都可以参与到这个区块链计算,而且任何人都可以下载获得完整区块链数据,私有链是有些区块链并不希望这个系统任何人都可参与,不对外公开,适用于特定机构的内部数据管理与审计或开放测试等,联盟链是参与每个节点的权限都完全对等,大家在不需要完全互信的情况下就可以实现数据的可信交换,联盟链的各个节点通常有与之对应的实体机构组织,通过授权后才能加入与退出网络,在使用整个区块链备份系统的过程中,需使用数字签字,数字签字设计一个哈希函数、发送者的公钥、发送者的私钥,区块链具备完整的分布式存储特性,其实是更加庞大的网络数据存储同时使用了“哈希算法”形式的数据结构保存基础数据。在一实施例中,如图2所示,提供一种基于区块链的版本回溯方法,以该方法应用在图1中的区块链节点为例进行说明,可以将计算机设备部署为该区块链的该节点,其中,该基于区块链的版本回溯方法包括如下步骤s101至s106。s101、接收用户确定的当前版本号和需要回溯的目标版本号。可以理解的是,在本实施例的应用场景中,用户知道想要回溯的目标版本号,例如当前版本号为1000,用户想要回溯到的目标版本号为500,但是不知道目标版本号为500的版本是哪个版本,本实施例下述步骤的目的即为根据当前版本号和需要回溯的目标版本号快速回溯到目标版本。s102、计算所述当前版本号和所述目标版本号之间的差值,并将所述差值转换成m进制,得到d=mx … my mz,其中,d表示所述差值,mx表示所述差值的最高位,mz表示所述差值的最低位。在其中一个实施例中,所述m进制为二进制,在其他实施例中,所述m进制还可以为三进制、五进制、八进制等。将所述差值转换成对应的进制数使得版本回溯时可以以该进制数的指数级速度回溯。s103、从区块链中获取回溯数组,所述回溯数组存储有以每一个版本号为起始节点链起的版本序列中与所述起始节点相隔mi位对应的版本号,所述回溯数组存储有与mi位对应版本号的版本哈希值,所述i表示所述m进制的位数,i≥0且i为整数。进一步地,16≥i≥0,且i为整数。当i最大值取16时,表示该回溯数组的位数包括16位,该回溯数组存储了以每一个版本号为起始节点链起的版本序列中与mi位对应的版本号及该版本号的版本哈希值。以所述m进制为二进制且16≥i≥0为例,该回溯数组存储的以每一个版本号为起始节点链起的版本序列中与2i位对应的版本号如下表(1)所示:表(1)其中,与20位对应的数值可以理解为本实施例中以该版本号链起的版本序列的起始节点,表(1)中k对应的列表示起始节点。s104、以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号。以所述m进制为二进制为例,操作上述表(1),该步骤中以所述当前版本号作为所述链起的版本序列的起始节点可以理解为:将当前版本号作为20对应的起始节点的版本序列中,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号。s105、当所述mz不为所述差值的最高位时,以查询得到的与所述起始节点间隔mz位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔my位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔mx位对应的回溯版本号作为所述目标版本号。s106、从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。根据本实施例的一个使用场景例如:每个操作版本以普通交易方式存储到区块链,并且存储的时候会将记录上一个版本的哈希值txhash的记录下来存储到当前版本的数据中,例如版本2会存储记录版本1的哈希值txhash以及其链接起版本序列。其中,每笔交易上的存储要素包括:(1)、操作数据:当前操作记录;(2)、当前版本号:当前版本序列号,为自增序列;(3)、当前回溯版本号:如果此版本回溯过,则记录回溯版本号;(4)、最初操作版本的哈希值txhash,是第一个操作版本的操作哈希值txhash;(5)、快速回溯数组,存储有若干个用于快速回溯的数组,包括若干个版本号对应的版本哈希值txhash,具体存储有前1个,前2个,前4个,…,前2i-1个,及存储的版本号对应的版本哈希值txhash。数组大小可以设置为n。如果n为16,那可以最大回溯到第前216=65536个版本;(6)、上一个版本的版本txhash。如果要从当前版本k快速回溯到第a个版本(k>=a),如果d=k-a≤216,可知需要回溯到k的前d个版本,通过运算可以可知d的二进制表达方式为a16a15...a2a1。比如d=7的表达方式为0000000000000111,根据本实施例提出的基于区块链的版本回溯方法只要获得版本k的前一个版本x(x=k 1),以x版本为起始节点链起的版本序列的前2个版本y(y=k 1 2),以版本y为起始节点链起的版本序列的第前4个版本z(z=k 1 2 4)为k,可知目标版本号z为k的第前7个版本,进而通过回溯数组中同步存储的版本哈希值,得到目标版本。可以理解的是,由于该版本哈希值是根据存储的与mi位对应版本号的版本计算得来,因此,通过查询该目标版本号对应的版本哈希值,即可得到目标版本。本实施例提出的基于区块链的版本回溯方法通过计算当前版本号和目标版本号之间的差值,并将该差值转换成m进制,根据回溯数组存储的以每一个版本号为起始节点链起的版本序列中与m进制中mi位对应的版本号,从该差值的m进制的最低位开始查询,直到查询到该差值的m进制的最高位,通过递归的方式以指数级的速度从该回溯数组中找到目标版本号,最后根据该回溯数组中存储的与该目标版本号对应的版本哈希值,得到目标版本,其版本回滚的速度从原先的逐一回滚呈指数级提高,大大减少了版本回溯的耗时,提高了版本回溯的速度。为便于理解,下面以所述m进制为二进制,16≥i≥0,i为整数为例,给出根据本实施例中以每一个版本号为起始节点链起的版本序列及其与回溯数组中mi位的对应关系,如下表(2)。k202122232421601234567891011121314151617181920…65536123456789101112131415161718192021…/2345678910111213141516171819202122…/34567891011121314151617181920212223…/456789101112131415161718192021222324…/5678910111213141516171819202122232425…/…………………………………………………………表(2)其中,表(2)中k对应的列表示起始节点,k对应的行表示以k为起始节点链起的版本序列。可以理解的是,回溯数组存储的以每一个版本号为起始节点链起的版本序列中与该起始节点相隔mi位对应的版本号为表(2)中加粗的部分。下面以x≤16为例给出本实施例的第一个使用场景。当计算所述当前版本号和所述目标版本号之间的差值为13时,先将该差值转换为二进制,得到0000000000001101,得到d=23 22 20,参照上述表(1)和表(2),可以得知以所述当前版本号作为所述链起的版本序列的起始节点为0,以0为起始节点链起的版本序列中,与该起始节点0间隔20位对应的版本号为1,以1为起始节点链起的版本序列中,与该起始节点1间隔22位对应的版本号为5,然后以5为起始节点链起的版本序列中,与该起始节点5间隔23位对应的版本号为13,从当前版本回溯到相隔13个版本号的目标版本的版本号依次为1→5→13,可知通过本实施例提出的基于区块链的版本回溯方法只需要查询三次即可找到目标版本。给出本实施例的第二个使用场景。当计算所述当前版本号和所述目标版本号之间的差值为19时,先将该差值转换为二进制,得到0000000000010011,得到d=24 21 20,参照上述表(1)和表(2),可以得知以所述当前版本号作为所述链起的版本序列的起始节点为0,以0为起始节点链起的版本序列中,与该起始节点0间隔20位对应的版本号为1,以1为起始节点链起的版本序列中,与该起始节点1间隔21位对应的版本号为3,然后以3为起始节点链起的版本序列中,与该起始节点3间隔24位对应的版本号为19,从当前版本回溯到相隔19个版本号的目标版本的版本号依次为1→3→19,可知通过本实施例提出的基于区块链的版本回溯方法只需要查询三次即可找到目标版本。在其中一个实施例中,哈希值是使用哈希函数计算得到的值。哈希函数是一种从任何一种数据中创建小的数字“指纹”的方法。可以通过散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来,就是根据数据内容计算得到相应的“摘要”,根据这个摘要可以区分不同的数据版本。当所述m进制为二进制,16≥i≥0,i为整数,且x>16时,表示该差值大于该回溯数组能够表示的最大值,即d>216,此种情况下可以用两组回溯数组来指引以每一个版本号为起始节点链起的版本序列中与2i位对应的版本号,进一步地,该基于区块链的版本回溯方法中步骤s102至s105具体包括:计算所述差值与216倍数的差值,得到最小正回溯差值;将所述最小正回溯差值转换成二进制,得到d’=2x’ … 2y’ 2z’,d’表示所述最小正回溯差值,2x’表示所述最小正回溯差值的最高位,2z’表示所述最小正回溯差值的最低位;通过所述回溯数组查询与所述当前版本号间隔216倍数位对应的回溯版本号;以与所述当前版本号间隔216倍数位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔2z’位对应的回溯版本号;当所述2z’不为所述最小正回溯差值的最高位时,以查询得到的与所述当前起始节点间隔2z’位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔2y’位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔2x’位对应的回溯版本号作为所述目标版本号。根据本实施例的一个使用场景例如,当16≥i≥0时,如果差值d=k-a>216>65536,计算该差值与216倍数的差值,得到最小正回溯差值,可以理解的是,将d-n*65536得到该最小正回溯差值,n值取该最小正回溯差值为正数的最小值,该n值表示216的倍数。在进行版本回溯时第一步直接回溯到第65536的n倍数对应的版本号,然后根据计算得到的最小正回溯差值d’=2x’ … 2y’ 2z’,按照表(2)中实施例提供的回溯方法对当前起始节点和对应的回溯版本号进行递归查询,得到目标版本号。图3是本发明另一实施例中基于区块链的版本回溯方法的一流程图,如图3所示,当有新版本出现时,该基于区块链的版本回溯方法还包括对版本序列及回溯数组进行更新,具体包括以下步骤s301至s304。s301、接收到新版本的更新指令时,获取所述新版本及新版本号。s302、计算所述新版本的版本哈希值。s303、按照所述新版本号与所述版本号的先后顺序,将所述新版本号及所述新版本的版本哈希值存储在所述回溯数组中,更新所述版本序列。可以理解的是,更新所述版本序列主要是更新新版本号与历史版本号之间的指向关系。s304、更新以每一个版本号为起始节点链起的版本序列中与mi位对应的版本号,保存与mi位对应版本号的版本哈希值。根据本实施例的版本在回溯数组中的更新场景例如:假设需要更新的版本为第k版本,其中k≤216。更新k版本的第前1个版本,即为上一个版本f(f=k 1);更新k版本的第前2个版本,即为f的上一个版本i(i=f 1=k 1 1=k 2);更新k版本的第前4个版本,即为i的上第两个版本g(g=i 2=k 2 2=k 4);更新k版本的第前8个版本,即为g的上第4个版本u(u=g 4=k 4 4=k 8),依次类推,直到所有的版本都在该回溯数组中更新。如果k>216,可以先把k对216取模,获得值为k%216=m,再按照上述方式进行对m版本的更新。在其中一个实施例中,如图3所示,该基于区块链的版本回溯方法还包括以下步骤s305。s305、将更新后的回溯数组存储在所述区块链中。本实施例通过存储结构体,可以在有限存储情况下记录足够快速回溯的关键信息,可以在不确定最大版本号的情况下,采取用216分割的方式能做到也能直到消耗的存储空间不变而快速回溯,可以在只利用普通交易的情况下做到操版本的快速查询和回滚,版本控制效率也得到提高。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。在一实施例中,提供一种基于区块链的版本回溯装置,该基于区块链的版本回溯装置与上述实施例中基于区块链的版本回溯方法一一对应。如图4所示,该基于区块链的版本回溯装置100包括版本号接收模块11、计算模块12、数组获取模块13、回溯模块14、递归查询模块15和哈希值获取模块16。各功能模块详细说明如下:版本号接收模块11,用于接收用户确定的当前版本号和需要回溯的目标版本号;计算模块12,用于计算所述当前版本号和所述目标版本号之间的差值,并将所述差值转换成m进制,得到d=mx … my mz,其中,d表示所述差值,mx表示所述差值的最高位,mz表示所述差值的最低位;数组获取模块13,用于从区块链中获取回溯数组,所述回溯数组存储有以每一个版本号为起始节点链起的版本序列中与所述起始节点相隔mi位对应的版本号,所述回溯数组存储有与mi位对应版本号的版本哈希值,所述i表示所述m进制的位数,i≥0且i为整数;回溯模块14,用于以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号;递归查询模块15,用于当所述mz不为所述差值的最高位时,以查询得到的与所述起始节点间隔mz位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔my位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔mx位对应的回溯版本号作为所述目标版本号;哈希值获取模块16,用于从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。进一步地,所述m进制为二进制,更进一步地,16≥i≥0,且i为整数。在其中一个实施例中,该基于区块链的版本回溯装置100还包括:新版本获取模块,用于接收到新版本的更新指令时,获取所述新版本及新版本号;哈希值计算模块,用于计算所述新版本的版本哈希值;版本序列更新模块,用于按照所述新版本号与所述版本号的先后顺序,将所述新版本号及所述新版本的版本哈希值存储在所述回溯数组中,更新所述版本序列;版本号更新模块,用于更新以每一个版本号为起始节点链起的版本序列中与mi位对应的版本号,保存与mi位对应版本号的版本哈希值。在其中一个实施例中,该基于区块链的版本回溯装置100还包括:存储模块,用于将更新后的回溯数组存储在所述区块链中。在其中一个实施例中,当所述m进制为二进制,16≥i≥0,i为整数,且x>16时,表示该差值大于该回溯数组能够表示的最大值,即d>216,此种情况下可以用两组回溯数组来指引以每一个版本号为起始节点链起的版本序列中与2i位对应的版本号。进一步地,该计算模块12具体包括:最小正回溯差值单元,用于计算所述差值与216倍数的差值,得到最小正回溯差值;二进制转换单元,用于将所述最小正回溯差值转换成二进制,得到d’=2x’ … 2y’ 2z’,d’表示所述最小正回溯差值,2x’表示所述最小正回溯差值的最高位,2z’表示所述最小正回溯差值的最低位。该回溯模块14具体包括:第一查询单元,用于通过所述回溯数组查询与所述当前版本号间隔216倍数位对应的回溯版本号;第二查询单元,用于以与所述当前版本号间隔216倍数位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔2z’位对应的回溯版本号。该递归查询模块15具体用于当所述2z’不为所述最小正回溯差值的最高位时,以查询得到的与所述当前起始节点间隔2z’位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔2y’位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔2x’位对应的回溯版本号作为所述目标版本号。其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。关于基于区块链的版本回溯装置的具体限定可以参见上文中对于基于区块链的版本回溯方法的限定,在此不再赘述。上述基于区块链的版本回溯装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链的版本回溯方法。在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中基于区块链的版本回溯方法的步骤,例如图2所示的步骤101至步骤106及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机程序时实现上述实施例中基于区块链的版本回溯装置的各模块/单元的功能,例如图4所示模块11至模块16的功能。为避免重复,这里不再赘述。所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中基于区块链的版本回溯方法的步骤,例如图2所示的步骤101至步骤106及该方法的其它扩展和相关步骤的延伸。或者,计算机程序被处理器执行时实现上述实施例中基于区块链的版本回溯装置的各模块/单元的功能,例如图4所示模块11至模块16的功能。为避免重复,这里不再赘述。本实施例提出的基于区块链的版本回溯方法、装置、计算机设备及存储介质,通过计算当前版本号和目标版本号之间的差值,并将该差值转换成m进制,根据回溯数组存储的以每一个版本号为起始节点链起的版本序列中与m进制中mi位对应的版本号,从该差值的m进制的最低位开始查询,直到查询到该差值的m进制的最高位,通过递归的方式以指数级的速度从该回溯数组中找到目标版本号,最后根据该回溯数组中存储的与该目标版本号对应的版本哈希值,得到目标版本,其版本回滚的速度从原先的逐一回滚呈指数级提高,大大减少了版本回溯的耗时,提高了版本回溯的速度。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。当前第1页1 2 3 
    技术特征:

    1.一种基于区块链的版本回溯方法,其特征在于,所述方法包括:

    接收用户确定的当前版本号和需要回溯的目标版本号;

    计算所述当前版本号和所述目标版本号之间的差值,并将所述差值转换成m进制,得到d=mx … my mz,其中,d表示所述差值,mx表示所述差值的最高位,mz表示所述差值的最低位;

    从区块链中获取回溯数组,所述回溯数组存储有以每一个版本号为起始节点链起的版本序列中与所述起始节点相隔mi位对应的版本号,所述回溯数组存储有与mi位对应版本号的版本哈希值,所述i表示所述m进制的位数,i≥0且i为整数;

    以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号;

    当所述mz不为所述差值的最高位时,以查询得到的与所述起始节点间隔mz位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔my位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔mx位对应的回溯版本号作为所述目标版本号;

    从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。

    2.根据权利要求1所述的基于区块链的版本回溯方法,其特征在于,所述m进制为二进制。

    3.根据权利要求2所述的基于区块链的版本回溯方法,其特征在于,16≥i≥0,且i为整数。

    4.根据权利要求3所述的基于区块链的版本回溯方法,其特征在于,当x>16时,所述方法具体包括:

    计算所述差值与216倍数的差值,得到最小正回溯差值;

    将所述最小正回溯差值转换成二进制,得到d’=2x’ … 2y’ 2z’,d’表示所述最小正回溯差值,2x’表示所述最小正回溯差值的最高位,2z’表示所述最小正回溯差值的最低位;

    通过所述回溯数组查询与所述当前版本号间隔216倍数位对应的回溯版本号;

    以与所述当前版本号间隔216倍数位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔2z’位对应的回溯版本号;

    当所述2z’不为所述最小正回溯差值的最高位时,以查询得到的与所述当前起始节点间隔2z’位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔2y’位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔2x’位对应的回溯版本号作为所述目标版本号。

    5.根据权利要求1所述的基于区块链的版本回溯方法,其特征在于,所述方法还包括:

    接收到新版本的更新指令时,获取所述新版本及新版本号;

    计算所述新版本的版本哈希值;

    按照所述新版本号与所述版本号的先后顺序,将所述新版本号及所述新版本的版本哈希值存储在所述回溯数组中,更新所述版本序列;

    更新以每一个版本号为起始节点链起的版本序列中与mi位对应的版本号,保存与mi位对应版本号的版本哈希值。

    6.根据权利要求5所述的基于区块链的版本回溯方法,其特征在于,所述方法还包括:

    将更新后的回溯数组存储在所述区块链中。

    7.一种基于区块链的版本回溯装置,其特征在于,所述装置包括:

    版本号接收模块,用于接收用户确定的当前版本号和需要回溯的目标版本号;

    计算模块,用于计算所述当前版本号和所述目标版本号之间的差值,并将所述差值转换成m进制,得到d=mx … my mz,其中,d表示所述差值,mx表示所述差值的最高位,mz表示所述差值的最低位;

    数组获取模块,用于从区块链中获取回溯数组,所述回溯数组存储有以每一个版本号为起始节点链起的版本序列中与所述起始节点相隔mi位对应的版本号,所述回溯数组存储有与mi位对应版本号的版本哈希值,所述i表示所述m进制的位数,i≥0且i为整数;

    回溯模块,用于以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔mz位对应的回溯版本号;

    递归查询模块,用于当所述mz不为所述差值的最高位时,以查询得到的与所述起始节点间隔mz位对应的回溯版本号作为所述链起的版本序列的当前起始节点,通过所述回溯数组查询与所述当前起始节点间隔my位对应的回溯版本号,对所述当前起始节点和对应的回溯版本号进行递归查询,将查询得到的与最新当前起始节点间隔mx位对应的回溯版本号作为所述目标版本号;

    哈希值获取模块,用于从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。

    8.根据权利要求7所述的基于区块链的版本回溯装置,其特征在于,所述装置还包括:

    新版本获取模块,用于接收到新版本的更新指令时,获取所述新版本及新版本号;

    哈希值计算模块,用于计算所述新版本的版本哈希值;

    版本序列更新模块,用于按照所述新版本号与所述版本号的先后顺序,将所述新版本号及所述新版本的版本哈希值存储在所述回溯数组中,更新所述版本序列;

    版本号更新模块,用于更新以每一个版本号为起始节点链起的版本序列中与mi位对应的版本号,保存与mi位对应版本号的版本哈希值。

    9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述基于区块链的版本回溯方法的步骤。

    10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述基于区块链的版本回溯方法的步骤。

    技术总结
    本发明公开了一种基于区块链的版本回溯方法,应用于区块链技术领域,用于以解决现有版本回溯方法耗时长、回溯效率低的技术问题。本发明提供的基于区块链的版本回溯方法包括:接收用户确定的当前版本号和需要回溯的目标版本号;计算所述当前版本号和所述目标版本号之间的差值;从区块链中获取回溯数组;以所述当前版本号作为所述链起的版本序列的起始节点,通过所述回溯数组查询与所述起始节点间隔Mz位对应的回溯版本号,通过递归查询的方式将查询得到的与最新当前起始节点间隔Mx位对应的回溯版本号作为所述目标版本号;从所述回溯数组中查询所述目标版本号的版本哈希值,得到目标版本。

    技术研发人员:嵇士杰;张圣楠;张显;刘永辉;蔡亮;李伟;匡立中;张帅;曾磊
    受保护的技术使用者:北京电力交易中心有限公司;杭州趣链科技有限公司
    技术研发日:2020.11.25
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23233.html

    最新回复(0)