一种抗陷门泄露的链上数据修复系统及方法

文档序号:28052756发布日期:2021-12-17 21:35阅读:78来源:国知局
1.本发明涉及区块链
技术领域
:,尤其涉及一种抗陷门泄露的链上数据修复系统及方法。
背景技术
::2.区块链作为一种去中心化、防篡改、可溯源的分布式账本系统,已经运用到社会方方面面的领域。其概念的核心是由中心化的记账方式改变为众人共同备份的分布式账本,并通过众人监管来增强账本的防篡改性、安全性。现阶段,各大银行已经搭建了区块链交易平台,并且运用到实际的生产交易中。其目的主要是搭建一个区块链交易平台,来对各类的交易数据进行公开透明化处理,同时进行一个溯源和抗篡改的内容控制。但是事物总有两面性,区块链的不可篡改性在为分布式账本提供数据安全保障的同时,也为区块链上内容的管理提出了严峻的考验。在区块链发展的十多年中,首先其海量增长的数据为存储提出了巨大的要求。同时,银行交易转账的过程中,因为人为的因素犯错不可避免,如果交易系统转账发生错误而不能进行任何的修改则会造成巨大的损失。这些特点使得现存的区块链系统面临许多现实的问题。3.由于账本数据库只能增加查询而不能够进行适当的修改,一方面在于交易内容全部映射到merkle根,如果在本地篡改交易,则其他节点不会予以认可;另一方面在于区块链是有序的,已上链的区块不能更改,否则将影响顺序。但是对于这种存储信息的功能,修改的场景是不可避免的,如交易内容或金额的修改、区块里包含违法信息、上链后遇到意外需要撤销等。针对这种需求,有学者提出了可编辑区块链的概念,目前主要通过以下方式实现对区块链的修改操作:利用变色龙哈希函数设计可编辑区块链,对于现有的hash结构进行改造,留出修改后门,其主要思想是不改变区块链的数据结构,将链接不同区块的哈希函数替换为变色龙哈希函数。例如,2016年atenieseetal提出《redactableblokchain‑or‑rewirtinghistoryinbitcoinandfriends》,该文中提出了基于变色龙哈希函数的可被编辑的区块链技术,允许区块在保持哈希值不变的情况下,实现对问题区块的内容(如违法信息或者涉及非法交易)进行重新编辑,从而确保区块链安全可靠的运行。4.变色龙哈希是一种输入为特定结构的哈希函数,而这种输入的结构允许有陷门(trapdoor)存在,这个陷门也可以称作后门,知道陷门信息的一方可以通过构造输入数据,实现在改变输入的情况哈希函数的输出不变的目的。这就造成了这种哈希函数不具有抗碰撞性,即给定一个m和hc(m),可以迅速找到m',使得hc(m)==hc(m')。变色龙哈希是一种带陷门的单向哈希函数,掌握陷门信息的人可以容易地计算出一个随机输入的碰撞,而没有陷门信息的人则无法计算碰撞。但是,使用变色龙哈希函数构造可应用于实际应用的可编辑区块链需要考虑密钥管理问题:陷门密钥可以中心化的存储在一个实体中,可靠性依赖于掌握陷门密钥用户的可信度和安全防护水平;为了避免权限集中,陷门密钥分布式地存储,但是由于每个用户的安全防护水平参差不齐,一些秘密份额容易被攻击者获取。在最初的变色龙哈希函数方案中,如果指定接收者利用其私钥把消息m的变色龙哈希值伪造为消息m'的哈希值,那么同一个变色龙哈希值将对应两个原象。然而,根据两个原象值可以用来计算出指定接收者的私钥。变色龙哈希函数的这个性质被称作陷门(密钥)泄露性。5.现有技术中,如公开号为cn110086631b的专利文献公开了一种可更新变色龙哈希函数的方法,包括:系统初始化,密钥生成,计算哈希,验证哈希,计算碰撞,更新碰撞,根据陷门密钥,对满足碰撞的变色龙随机数进行周期性的更新,被正确更新后的变色龙随机数可以在当前时间点内通过认证,反之,无法通过认证,解决现有技术中的变色龙哈希函数的变色龙哈希值存在效率性和安全性的问题。该技术方案适用于安全和高效的计算变色龙哈希值,并且能够抗密钥泄露,可以对满足碰撞的变色龙随机数进行周期性的更新,防止碰撞值被滥用,同时提高变色龙哈希值的新鲜性。6.现有研究大多着重于解决如上述技术方案所公开的如何解决不使密钥暴露的问题,然而,解决方案均是与变色龙哈希函数本身的计算效率和安全性相关,若仅简单地将此类解决方案所提出的变色龙哈希应用至区块链系统中,所能够实现的也仅限于修改区块的交易数据,但其修改区块操作本身无法受到监管与审计,无法保障区块链的安全,并且区块上原来的交易数据一旦被修改后就无法恢复,实用性差。7.此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于申请人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在
背景技术
:中增加相关现有技术之权利。技术实现要素:8.现有研究着重于提出如何不使密钥暴露的解决方案,例如现有技术中如公开号为cn110086631b的专利文献所公开的一种可更新变色龙哈希函数的方案中,然而,解决方案均是与变色龙哈希函数本身的计算效率和安全性相关,若仅简单地将此类解决方案所提出的变色龙哈希应用至区块链系统中,所能够实现的也仅限于修改区块的交易数据,但其修改区块操作本身无法受到监管与审计,无法保障区块链的安全,并且区块上原来的交易数据一旦被修改后就无法恢复,实用性差。对此,本技术提出了一种可审计、可监管的抗陷门泄露的链上数据修复系统,通过该系统不仅可以实现现有研究所提出的修复、编辑等功能,并且使得本身为单链表形式的区块链账本变更为双向链表形式的区块链账本,修改前与修改后的区块的交易数据均被保留在底层账本中,修改前的交易数据的保留不仅不会影响链上数据的修复过程,反而使得链上数据的修复过程具有可审计以及可监管的功能,监管者可以验证每一次的链上数据修改,更好地保障了区块链运行的安全可靠。另外,本技术从系统机制的层面上能够有效地避免变色龙哈希函数的陷门暴露之后的风险,即便陷门暴露也不会对已有系统的安全性造成影响。相较于现有研究所提出的可编辑区块链系统,本发明提出的系统中可以采用任何一种变色龙哈希函数作为系统的变色龙哈希函数,因此在性能和适用性上都相较于现有研究更具优势。9.本技术提出了一种抗陷门泄露的链上数据修复系统,至少包括:区块链节点,其用于将请求发起者的交易数据分别广播给其他区块链节点和出块者节点群;出块者节点,用于使用由设于其节点内的密钥生成模块所生成的密钥集进行变色龙哈希计算以及进行交易数据的打包出块,将得到的新区块分发给所有区块链节点,由区块链节点根据出块者广播的新区块进行对应的底层账本更新。10.根据一种优选实施方式,经过区块链节点更新后的底层账本中的每一个区块的区块头中均包含该区块的上一区块和下一区块的索引记录,以使得区块链节点能够通过任一区块来确定其上一区块和/或下一区块的数据。11.根据一种优选实施方式,区块链节点中至少包括数据处理装置,数据处理装置被配置为:根据区块类型,对请求发起者发起的交易是否满足预设修复处理条件进行判断;基于判断结果调用对应的处理合约;根据处理合约,通过多机构投票共识与新区块插入来修复或同步数据。12.优选地,请求发起者或机构是在提出修复请求的同时调用合约,在出块之前由请求发起者或机构进行合约调用,以此提出修复请求。而区块链节点或客户端调用合约可以是在此之后进行的二次调用,具体地,区块链节点或客户端根据区块类型,对请求发起者发起的交易是否满足预设修复处理条件进行判断;基于判断结果调用对应的处理合约;根据处理合约,通过多机构投票共识;基于多机构投票共识结果生成指令,该指令可以是一条交易数据。接收到该指令的出块者获取到相应的区块,对其进行修改操作后,将修改后的结果广播至区块链节点。此处的修改操作可以指的是使用由设于其节点内的密钥生成模块所生成的密钥集进行变色龙哈希计算以及进行交易数据的打包出块。区块链节点根据其接收到的广播信息来修改更新底层账本数据。13.根据一种优选实施方式,出块者节点通过变色龙哈希计算对根据交易数据所确定的旧区块中记录的上一区块的哈希进行修改。14.根据一种优选实施方式,在经过变色龙哈希计算后,旧区块中所记录的上一区块的哈希不变,并且该旧区块在区块链节点将新区块插入至底层账本中后以被标记失效但维持其原有的区块链链接作用的方式保留在底层账本中。15.根据一种优选实施方式,在插入新区块时,区块链节点对旧区块的前后区块中所包含的关于该旧区块的索引记录进行更新。通过更新操作,在双向链表中,当在两个块之间插入新区块时,对旧区块的前一区块中包含的关于直接后块的索引、以及旧区块的后一区块中包含的关于直接前块的索引进行更新。16.根据一种优选实施方式,由出块者节点生成的新区块所对应的后门与基于交易的tx_id所确定到的旧区块的后门不同。17.根据一种优选实施方式,数据处理装置还被配置为:根据调用的处理合约,搜索对应的交易以获取该交易的tx_id;基于获取到的tx_id查找与之对应的旧区块;寻找与所述旧区块相对应的出块者节点并由出块者节点生成新区块。18.本技术还提出了一种抗陷门泄露的链上数据修复方法,其特征在于,至少包括:通过区块链节点将请求发起者的交易数据分别广播给其他区块链节点和出块者节点群;通过出块者节点对交易数据进行打包出块;通过出块者节点使用由设于其节点内的密钥生成模块所生成的密钥集进行变色龙哈希计算;通过出块者节点将得到的新区块分发给所有区块链节点;由区块链节点根据出块者广播的新区块进行对应的底层账本更新。19.根据一种优选实施方式,所述链上数据修复方法还包括:根据区块类型,区块链节点对请求发起者发起的交易是否满足预设修复处理条件进行判断;区块链节点基于判断结果调用对应的处理合约;根据处理合约,区块链节点通过多机构投票共识与新区块插入来修复或同步数据。20.根据一种优选实施方式,所述链上数据修复方法还包括:通过跨域交易的tx_id形成替换区块的索引;将有相同索引的新机构的旧交易排序后插入已有的区块链中。附图说明21.图1是本发明提供的链上数据修复系统的简化框架示意图;22.图2是本发明提供的链上数据修复方法的简化流程示意图;23.图3是本发明提供的链上数据修复方法中进行错误数据修改的简化流程示意图;24.图4是本发明提供的链上数据修复方法中进行数据同步的简化流程示意图;25.图5是本发明提供的链上数据修复方法进行交易乱序修复的简化流程示意图。具体实施方式26.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。27.为了便于理解,将本发明的技术用语进行如下解释。28.tx_id,即transactionid,也称交易id、txhash、交易哈希,和快递单号类似,每一单快递都有唯一的快递单号;同样的,每一条发布在区块链上的交易数据都有唯一的不可篡改的交易id,通过交易id就能查到该笔交易所有相关的信息。29.陷门,陷单向函数是密码学领域的一个重要概念,可简单描述为:正向求解容易,但反向求解不可实现的函数.陷门单向函数不同于单向函数的“不可逆”,它是“陷门”可逆的。在陷门未知时,它等同于普通单向函数;当陷门已知时,求逆便计算上可实现。陷门单向函数f(x)是指满足以下性质的函数:(1)对于属于f定义域的任意x,可在多项式时间内计算得到y=f(x);(2)对于属于f值域的任意y,无法在多项式时间内求出x,使得x=f‑1(y);(3)当k已知时,对于属于f值域的任何y,可在多项式时间内计算出x=fk‑1(y),其中,k为该陷门单向函数的陷门。30.哈希函数,哈希函数指的是将任意长度输入的字串可转换成一个固定长度的字串的函数,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原出原始字串。哈希函数具有抗弱碰撞性,即对于消息x,找到y≠x且h(x)=h(y)的y在计算上是不可行的。哈希函数具有抗强碰撞性,即找到任何满足h(x)=h(y)的偶对(x,y)在计算上是不可行的。31.交易乱序,主要指的是区块中至少部分交易未按顺序排序。32.可编辑区块链,可编辑区块链是对链上数据可进行增加、删减、修改等操作的区块链的统称。33.双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。相对而言,单链表是指各节点中都只包含一个指针(游标),且都统一指向直接后继节点,同单链表相比,双链表仅是各节点多了一个用于指向直接前驱的指针域。和创建单链表不同的是,创建双向链表的过程中,每一个新节点都要和前驱节点之间建立两次链接,分别是:将新节点的prior指针指向直接前驱节点;将直接前驱节点的next指针指向新节点。基于此,本技术所提出的双向链表区块链可以是表示:区块链系统维护的账本中的每一个区块的区块头中具有该区块的上一区块和下一区块的索引记录,索引记录可以是区块号和/或区块存储的位置,以此实现能够通过某一区块找到该区块前一区块和后一区块的数据的双向访问功能。34.本发明所提出的链上数据修复方法及系统,结合可编辑的区块链,实现了可以审计的抗陷门泄露的链上数据修复机制,解决了现有区块链系统中链上数据修复困难的问题。通过本发明提出的系统,可以保障链上链下的数据一致性。在本技术中,每一次进行数据修复或者同步,都会进行审计以及新区块的插入,插入的新区块继承了旧区块的可用数据,并且使旧区块在逻辑上无效。在该设置下,可以在保证在使用最简单的变色龙哈希的情况下进行抗密钥暴露风险的修复,并且这样的修复是可以被审计的。35.所述抗陷门泄露的链上数据修复系统,包括请求发起者、投票审计者、至少一个区块链节点、一个出块者节点和设于区块链节点中的数据处理装置。36.请求发起者(机构)与投票审计者均可与区块链节点进行信息交互以及调用区块链节点上的合约。37.区块链节点(客户端)用于将请求发起者的交易数据分别广播给其他区块链节点和出块者节点群。出块者节点中设置有密钥生成模块,用于生成进行变色龙哈希计算所需的密钥集。38.出块者节点(出块者)使用由密钥生成模块所生成的密钥集进行变色龙哈希计算。出块者节点将经过变色龙哈希计算的交易数据进行打包出块。出块者节点将生成的新区块分发给所有区块链节点。39.区块链节点根据出块者广播的新区块进行对应的底层账本更新。区块链节点不参与哈希计算。40.区块链节点中至少包括数据处理装置,数据处理装置用于进行合约层面的处理,以满足用户对合约进行调用完成交易。41.数据处理装置包括至少一个模块。其中,第一模块被配置为判断发起的交易是否满足排序修复处理条件。第二模块被配置为判断发起的交易是否满足数据修复处理条件。第三模块被配置为根据判断结果调用对应的处理合约。第四模块被配置为根据处理合约,进行多机构投票共识。第五模块被配置为根据投票统计结果,判断发起的交易是否满足投票的预设条件。第六模块被配置为根据处理合约,通过新区块插入来修复或同步数据。42.数据处理装置还可包括公私钥生成模块,其用于保证系统的可用安全,通过设置公私钥生成模块可确保只有出块者才能使用关键信息。43.数据处理装置还可包括区块结构构建模块,其用于在区块链节点中实现支持数据修复机制的区块结构以及对应的默克尔树,以此为系统的数据修复功能提供支持。44.数据处理装置还可包括区块头信息同步模块,其用于从区块链节点上找到最长链并从最长链上获取区块头的信息。45.本发明的数据处理装置优选地例如是:计算机、服务器等,以及其他采抗陷门泄露的链上数据修复系统的装置或系统。根据本发明实施例,除了第一至第六模块外,数据处理装置还可以包括诸如中央处理器、通信单元、存储单元、i/o单元的其他组件。第一至第六模块分别与中央处理器相连接,均与中央处理器进行信息交互。作为示例,可以用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本公开所描述的各种示例性的逻辑块、模块和电路。通用处理器可以是微处理器,或者,处理器也可以是任何普通的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp内核的结合,或者任何其他此种结构。作为示例,本公开的实施例可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。46.相较于传统区块链,本技术提出的系统中所维护的账本中的每一个区块的区块头中都包含有该区块的上一区块和下一区块的索引记录,本技术所提及的索引记录可以是区块号和/或区块存储的位置。索引记录的设置只要能够实现通过某一区块找到该区块的前一区块和后一区块的数据这一功能即可。索引记录不参与哈希计算。47.本发明提出的抗陷门泄露的链上数据修复方法至少包括步骤s1~s10。尽管本发明具体实施方式中的链上数据修复方法以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施例的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的子组合中实施。48.s1:机构按照类型在客户端发起交易。49.本技术中所提及的类型是指需调用的合约的类型。例如,需要调用链上修复合约即指的是链上修复合约这一种类型的数据。若调用其他的合约,则根据其他的合约要求来设置数据输入。50.s2:判断发起的交易是否满足排序修复处理条件。若满足排序修复处理条件,即为普通的排序修复,则转至步骤s4。反之,则转至步骤s3。51.根据调用的合约不同,需要输入的参数不同,得到的结果也不同,依次来判断发起的交易是否满足排序修复处理条件。52.s3:判断发起的交易是否满足数据修复处理条件。若满足数据修复处理条件,即为已有机构的链上数据修复,则转至步骤s5。反之,即为新机构的数据同步,则转至步骤s9。53.本技术中所提及的已有机构是指已经上链的机构。每一个新上链的机构,都是新机构,如果该机构有部分数据需要与已经上链的机构有交互,需要将数据按照顺序放在链上,则调用新机构的数据进行同步,以此判断是否为已有机构的链上数据修复还是新机构的数据同步。54.s4:客户端根据判断结果调用对应的处理合约。通过多机构投票共识与新区块插入来修复数据。55.具体地,调用排序修复合约,先搜索对应的交易获取tx_id,然后查找对应的区块,寻找对应出块者生成带有新后门的区块,并修改对应出块者生成的带有新后门的区块的块内交易的顺序。56.步骤s4至少包括步骤s401~s405。57.s401:搜索需要排序的交易的tx_id。58.基于区块链系统自带的搜索功能,可以根据交易获得对应的tx_id,并根据tx_id搜索到对应的区块。59.s402:根据tx_id搜索对应区块a,此时其上一区块哈希为h(a||ra)。60.s403:根据区块a搜索到与之对应的出块者h。61.s404:由出块者h生成新的区块b。区块b的后门与区块a的后门不同。区块b继承了区块a的所有交易且顺序经过了排序。此时区块b的区块哈希为b。62.通过变色龙哈希计算所需的密钥生成函数/密钥导出函数,每一个区块会生成对应的后门,以此可使得区块b与区块a的后门不同。[0063]“区块b继承了区块a的所有交易且顺序经过了排序”指的是首先将a中所有的交易复制一遍,排序之后生成区块b,即称a的数据被b继承。[0064]s405:出块者h根据区块a的后门计算出与h(a||ra)有相同的哈希值的h(b||rb),以此将块b插在区块a之前并标记块a失效。[0065]其中,h(b||rb)指的是将b和rb经过拼接的方式一起计算哈希函数。[0066]针对在增加新区块(区块b)后无效化旧区块(区块a)的方法,优选地:在旧区块(区块a)的区块头增加一个标志位,标志位值为1则表示该区块无效,值为0则表示该区块数据有效。通过该方法进行无效标识后的区块a中的数据未加密,可以直接看到原来的数据。作为一种优选实施方式,无效化旧区块(区块a)的方法也可以使用aes(advancedencryptionstandard,高级加密标准)加密的方式,将区块加密后存储于账本之中,并将aes密钥交由出块者或可信第三方保管,也可以通过门限签名秘密共享的方式进行保管。通过该方法进行无效标识后的区块a中的数据进行了aes对称加密,除了修改者外其他人无法看到此次修改前的该区块的数据。[0067]s406:在执行区块b的插入操作时,更新区块a的区块头。[0068]更新区块a的区块头至少包括更新其区块头中所包含的关于区块a的上一区块的索引记录,和/或更新区块a的区块头中上一区块哈希计算的随机数。为便于理解,例如,区块a的上一区块哈希为chamleon‑hash(g)(a,ra),在区块a的区块头中存储有a和ra,以及进行chamleon‑hash计算的一些其他参数集合g,在执行新区块插入操作时,更新区块a的区块头,将a、ra以及参数集合g更新为b、rb以及参数集合g,并且此时的chamleon‑hash(g)(b,rb)=chamleon‑hash(g)(a,ra)。此时旧区块a中的交易数据以及交易数据所对应的哈希均没有变化。区块a的上一区块的哈希通过变色龙哈希的计算也是没有变化的,因此区块a仍然能够承担链接链的作用,只是区块a通过被标记无效而其交易在用户端被屏蔽了。为避免赘述,如下相同操作中不再重复上述说明。[0069]每次进行修改、增加区块之后,旧区块实际上仍然存在于底层账本中,并具备可恢复性,因此通过本技术所提出的系统及方法,修改区块的这个操作可以被监管与审计,相较于现有解决方案中的数据不可恢复而具备更好的实用性。[0070]现有解决方案中增加变色龙哈希是为了对本区块内交易数据进行修改,但本技术中增加的变色龙哈希是对本区块中记录的上一区块哈希进行修改。为便于理解,例如,区块a2的上一区块哈希,即a1区块的哈希,是由a0区块的哈希a0、a1区块的区块体哈希一起计算而成的,假设a0区块的chamleon‑hash(g)(a0,ra)=cham_a0,则本技术中计算a1区块的哈希是由cham_a0和、a1区块的区块体哈希一起计算而成的。[0071]s5:客户端根据判断结果调用对应的处理合约。根据数据修复合约,构造交易。通过客户端发起投票。多机构通过客户端进行投票。客户端调用投票合约进行结果统计。[0072]本技术中所提及的构造交易是指根据传递给合约的输入,构造一个可以被节点底层功能函数识别的数据集合,节点底层功能函数可以根据这个数据集合进行对应的操作。[0073]s6:根据投票统计结果,判断发起的交易是否满足投票的预设条件。若满足投票的预设条件,则转至步骤s8。反之结束步骤。[0074]本技术中所提及的预设条件是根据具体交易变化的,比如可以设置6人投票,3人赞同就可以进行本次操作。[0075]s8:调用数据修复的合约,先搜索对应的交易获取tx_id。然后查找tx_id对应的区块。寻找对应出块者生成带有新后门的区块并修改块内交易的信息。[0076]步骤s8具体包括s801~s805步骤。[0077]s801:搜索需要修复的交易的tx_id。[0078]s802:根据tx_id搜索对应区块a,此时其上一区块哈希为h(a||ra)。[0079]s803:根据区块a搜索对应出块者h。[0080]s804:出块者h生成与区块a不同后门的区块b。b继承a的所有数据并修复了需要修复的交易。此时b的区块哈希为b。[0081]根据调用修改合约时机构给的输入来确定需要修改的交易信息,以及块内交易的信息的修复依据。[0082]s805:出块者h根据a的后门计算出与h(a||ra)有相同的哈希值的h(b||rb)。以此将区块b插在区块a之前并标记区块a失效。[0083]s806:在执行区块b的插入操作时,更新区块a的区块头。[0084]s9:根据投票统计结果,判断发起的交易是否满足投票的预设条件。若满足投票的预设条件,则转至步骤s10。反之结束步骤。[0085]s10:调用数据同步的合约,先搜索对应的交易获取tx_id。然后查找x_id对应的区块。寻找对应出块者生成带有新后门的区块并修改块内交易的信息。[0086]步骤s10具体包括s1001~s1005步骤。[0087]s1001:新机构按照需要同步的交易t1搜索tx_id。[0088]此处需要同步的交易t1即指的是由新机构发起的交易。[0089]s1002:客户端根据tx_id搜索与之对应的区块a。此时区块a中上一区块哈希为h(a||ra)。[0090]s1003:客户端根据区块a搜索与之对应的出块者h。[0091]s1004:由出块者h生成区块b、c...n。区块b、c...n的后门均与区块a的后门不同。区块b、c...n的后门彼此互不相同。区块b继承区块a的所有数据。此时区块b的区块哈希为b。[0092]s1005:出块者h根据a的后门计算出h(b||rb)。h(b||rb)与h(a||ra)有相同的哈希值。将区块n...c、b插在块a之前并标记块a失效。假设原区块序列为1、a、3,则插入区块b、c...n后的区块序列为1、n...c、b、a、3。b拥有和a完全相同的区块内交易数据,仅后门不同。[0093]s1006:在执行区块b的插入操作时,更新区块a的区块头。[0094]需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。本发明说明书包含多项发明构思,诸如“优选地”、“根据一个优选实施方式”或“可选地”均表示相应段落公开了一个独立的构思,申请人保留根据每项发明构思提出分案申请的权利。在全文中,“优选地”所引导的特征仅为一种可选方式,不应理解为必须设置,故此申请人保留随时放弃或删除相关优选特征之权利。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1