CN112650734A - 一种区块修复方法及相关装置 - Google Patents
一种区块修复方法及相关装置 Download PDFInfo
- Publication number
- CN112650734A CN112650734A CN202011601364.7A CN202011601364A CN112650734A CN 112650734 A CN112650734 A CN 112650734A CN 202011601364 A CN202011601364 A CN 202011601364A CN 112650734 A CN112650734 A CN 112650734A
- Authority
- CN
- China
- Prior art keywords
- block
- target block
- current target
- repair
- proposal
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种区块修复方法及相关装置,涉及区块链技术领域,该区块修复方法包括:接收区块修复指令,基于该区块修复指令中的区块高度指示信息定位到待修复区块(区块链中经投票确认允许被修复的区块),以目标区块数据替换待修复区块中的源区块数据,重新计算并更新待修复区块及其之后已生成的区块的目标区块参数,达成删除和修改部分区块数据的效果,一方面实现了对待修复区块的修复,另一方面,由于是对区块链上已有区块进行更新,并不会改变区块链原本的结构,故相对于传统的硬分叉方式,本申请技术方案在实现对区块修复的同时也可减少对整体区块链运行的损害。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种区块修复方法及相关装置。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,它通过密码学技术让网络中的所有节点共同拥有、管理和监督数据,具有去中心化、不可伪造、不可篡改、可追溯等特点。
由于区块链不可篡改的特性,在某些场景下易出现无法逾越的障碍,比如某用户恶意在区块链上发布一些暴力,色情等敏感信息并在区块链上被确认了,那这些敏感信息也就永久存储在了区块链上了,这给监管和审查带来了不小的难度。
面对该情况,现有的做法一般是进行硬分叉,即从被攻击(即产生上述敏感信息)的区块的前一个区块开始延伸出新的区块分支,抛弃被攻击的分叉。举例说明,如图1所示,区块A1~A6表示某一区块链中依次生成的区块,现有技术中,当监听到区块A4遭受攻击时,采用硬分叉的方式,在区块A3之后延伸新的区块分支,即从区块A3之后重新出块(如图1中在区块A3之后产生新的区块A7,在区块A7之后产生新的区块A8,以此类推)。
由图1可见,上述硬分叉的方式对于区块链的用户伤害比较大,因为遭受攻击的区块(如图中的区块A4)之后的交易(如区块A5和区块A6)都无效化了,损害了整体区块链的运行。
发明内容
本申请提供一种区块修复方法及相关装置,可在实现对区块修复的同时减少对整体区块链运行的损害。
为了实现上述技术效果,本申请第一方面提供一种区块修复方法,包括:
接收区块修复指令,其中,上述区块修复指令包含:待修复区块的区块高度指示信息、源区块数据以及目标区块数据,上述待修复区块为区块链中经投票确认允许被修复的区块;
基于上述区块高度指示信息定位到上述待修复区块;
将上述待修复区块作为当前目标区块,将当前目标区块中存储的上述源区块数据替换为上述目标区块数据;
重新计算并更新当前目标区块的目标区块参数,其中,上述目标区块参数为区块参数中与相关区块所存储的区块数据相关的参数;
将当前目标区块的下一个区块作为当前目标区块,并返回执行上述重新计算并更新当前目标区块的目标区块参数的步骤,直至上述区块链中最后一个区块的目标区块参数完成更新。
基于本申请第一方面,在第一种可能的实现方式中,在上述最后一个区块的目标区块参数完成更新后,上述区块修复方法还包括:
在上述区块链中记录本次区块修复事件。
基于本申请第一方面或本申请第一方面的第一种可能的实现方式,在第二种可能的实现方式中,上述目标区块参数包括:交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针;
上述重新计算并更新当前目标区块的目标区块参数包括:
基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
更新当前目标区块的区块头中指向父区块的哈希指针;
基于当前目标区块的区块头内容生成并更新区块签名。
基于本申请第一方面,或者本申请第一方面的第一种可能的实现方式,在第三种可能的实现方式中,上述区块链中存在委员会,上述委员会具备投票选举功能和修复触发功能;上述投票选举功能包括:当接收到提案时,触发上述委员会内各成员在之后产出的N个区块的每个区块产出时刻,针对上述提案进行投票,以支持或反对上述提案的相关区块被修复,其中,每个提案包含:区块高度指示信息、源区块数据、目标区块数据以及修复理由,N为大于2的预设值;
上述修复触发功能包括:在针对上述提案的最后一次投票结束后,统计上述委员会内各成员针对上述提案的所有投票;当针对上述提案的累计支持票数多于累计反对票数时,基于上述提案输出相应的区块修复指令;
上述接收区块修复指令具体为:接收来自上述委员会的区块修复指令。
本申请第二方面提供一种区块修复装置,包括:
接收单元,用于接收区块修复指令,其中,上述区块修复指令包含:待修复区块的区块高度指示信息、源区块数据以及目标区块数据,上述待修复区块为区块链中经投票确认允许被修复的区块;
定位单元,用于基于上述区块高度指示信息定位到上述待修复区块;
数据替换单元,用于将上述待修复区块作为当前目标区块,将当前目标区块中存储的上述源区块数据替换为上述目标区块数据;
更新单元,用于重新计算并更新当前目标区块的目标区块参数,之后将当前目标区块的下一个区块作为当前目标区块并再次执行上述重新计算并更新当前目标区块的目标区块参数的动作,直至上述区块链中最后一个区块的目标区块参数完成更新。
基于本申请第二方面,在第一种可能的实现方式中,上述区块修复装置还包括:
事件记录单元,用于在上述最后一个区块的目标区块参数完成更新后,在上述区块链中记录本次区块修复事件。
基于本申请第二方面或本申请第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述目标区块参数包括:交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针;
上述更新单元包括:
第一子更新单元,用于基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
第二子更新单元,用于基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
第三子更新单元,用于基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
第四子更新单元,用于更新当前目标区块的区块头中指向父区块的哈希指针;
第五子更新单元,用于基于当前目标区块的区块头内容生成并更新区块签名。
基于本申请第二方面或本申请第二方面的第一种可能的实现方式,在第三种可能的实现方式中,上述区块链中存在委员会,上述委员会具备投票选举功能和修复触发功能;上述投票选举功能包括:当接收到提案时,触发上述委员会内各成员在之后产出的N个区块的每个区块产出时刻,针对上述提案进行投票,以支持或反对上述提案的相关区块被修复,其中,每个提案包含:区块高度指示信息、源区块数据、目标区块数据以及修复理由,N为大于2的预设值;
上述修复触发功能包括:在针对上述提案的最后一次投票结束后,统计上述委员会内各成员针对上述提案的所有投票;当针对上述提案的累计支持票数多于累计反对票数时,基于上述提案输出相应的区块修复指令;
上述接收单元具体用于接收来自上述委员会的区块修复指令。
本申请第三方面提供一种区块修复装置,包括存储器和处理器,上述存储器存储有计算机程序,上述处理器执行上述计算机程序时实现上述第一方面或上述第一方面的任一可能实现方式中提及的区块修复方法的步骤。
本申请第四方面提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现上述第一方面或上述第一方面的任一可能实现方式中提及的区块修复方法的步骤。
由上可见,本申请的技术方案针对待修复区块(即通过投票确认允许被修复的区块),在相应区块修复指令的触发下,以目标区块数据替换待修复区块中的源区块数据,重新计算并更新待修复区块及其之后已生成的区块的目标区块参数,达成删除和修改部分区块数据的效果,一方面实现了对待修复区块的修复,另一方面,由于是对区块链上已有区块进行更新,并不会改变区块链原本的结构,故相对于传统的硬分叉方式,本申请技术方案在实现对区块修复的同时也可减少对整体区块链运行的损害。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请提供的经硬分叉修复后的区块链结构示意图;
图2为本申请提供的区块修复方法一实施例流程示意图;
图3a和图3b为本申请提供的投票机制场景示意图;
图4为本申请提供的交易树根计算过程示意图;
图5为本申请提供的区块修复场景示意图;
图6为本申请提供的区块修复装置一实施例结构示意图;
图7为本申请提供的区块修复装置另一实施例结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而并非全部的实施例,应理解,本申请不受下面所描述实施例的限制。
在本说明书和附图中,根据实施例,元素以单数或复数的形式来描述。然而,单数和复数形式被适当地选择用于所提出的情况仅仅是为了方面解释而无意将本申请限制于此。因此,单数形式可以包括复数形式,并且复数形式也可以包括单数形式,除非上下文另有明确说明。
本申请的实施例涉及区块链技术,为便于理解,以下先对与本申请实施例相关的一些概念进行说明。
区块链:以经过共识机制确认的区块(block)作为基本单位的链式数据结构,该区块链内的数据分布在时间上相连的一个个区块内,后一个区块中记录前一个区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验,具有不可篡改、公开、透明的特性。
区块:区块链中的数据元素,用以记录一段时间内发生的所有交易数据和状态结果等。每个区块的结构分为两部分,区块头和区块体。区块头主要包括如下几个部分:version,prevBlockHash,merkleRoot,time difficultyTarget,nonce。version:记录了区块头的版本号,用于跟踪软件/协议的更新;prevBlockHash:记录了该区块的上一个区块的Hash地址(即指向父区块的哈希指针);merkleRoot:记录了该区块中默克尔树根(即merkle树根)的哈希值(如交易树根值、收据树根值、状态树根值);time:记录了该区块的创建时间戳;difficultyTarget:记录了该区块链工作量证明难度目标;nonce:记录了用于证明工作量的计算参数。区块体的内容是该区块的交易信息,包括交易数量和交易数据(也称为区块数据)。
交易树根值:交易树根的哈希值,交易树用以记录交易的状态和变化。每个区块都有各自的交易树。
收据树根值:收据树的哈希值,收据树用以存储交易收据。
状态树根值:状态树的哈希值,状态数用以保存账户中各种状态,如余额等。
节点(或节点设备):指可通过遵循相应节点协议、运行节点协议程序的安装来加入区块链,作为该区块链的节点。
监管机构:对被监管方施行行业或业务监管的实体组织或个人,监管机构可以对应一个设备终端或服务器,也可以对应多个设备终端或服务器作为相应区块链的节点设备;
委员会:具备投票选举功能和修复触发功能的机构,委员会的成员可以通过选举的方式产生,每个委员会的成员可对应区块链中的节点设备。
存证交易:区块链中的节点对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易格式,然后发布至区块链,由区块链中的节点对收到的交易进行共识处理,并在达成共识确认后,由区块链中的记账节点将这笔交易打包进(即存入)区块,在区块链的区块中进行持久化存证。
记账节点/挖矿节点(validator/miner):区块链中参与共识,为达成共识贡献力量的节点。
共识:分布式***中达成一致性的算法,典型的共识机制有proof of work(英文简称为pow)、proof of stake(英文简称为pos)和拜占庭容错(英文简称为BFT)等。
哈希值:也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前一个区块的哈希值,前一个区块被称为当前区块的父区块。哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
如图2所示为本申请提供的一种区块修复方法流程示意图,包括:
步骤101,接收区块修复指令;
其中,上述区块修复指令包含:待修复区块的区块高度指示信息(用以指示待修复区块的区块高度)、源区块数据(即需要修复的交易数据)以及目标区块数据(即用以替换源区块数据的新交易数据),上述待修复区块为区块链中经投票确认允许被修复的区块。
本申请实施例中,可由监管机构监听区块链上的交易数据以确定交易携带信息是否合规,当确定交易携带信息不合规后,可以将相关的提案提交到提案池中,申请删除该不合规交易。具体的,该提案可以包括:区块高度指示信息(指示不合规交易所在区块的区块高度)、源区块数据(即不合规交易的交易数据)、目标区块数据(即用以替换该源区块数据的新交易数据)以及修复理由(比如违规信息)。进入提案池中的提案会经投票确认相关的待修复区块是否允许被修复,当确认相关的待修复区块允许被修复,则可以由上述委员会中的任一成员或一特定成员(如会长)向本实施例的执行主体(如挖矿节点,简称矿工)发送针对该待修复区块的区块修复指令,步骤101具体表现为接收来自上述委员会的区块修复指令。具体的,可以通过比对交易在Extra字段携带的二进制信息和已有的敏感信息数据库来确定交易携带信息是否合规,当然,也可以通过已有的文本和图片识别技术或者人工智能技术来确定交易携带信息是否合规,此处不做限定。
进一步,上述针对待修复区块的投票可以由委员会执行。如前述,该委员会具备投票选举功能和修复触发功能。上述投票选举功能包括:当接收到提案时,触发上述委员会内各成员在之后产出的N个区块的每个区块产出时刻(本实施例将该N个区块的每个区块产出时刻所在的时段称为投票窗口期),针对上述提案进行投票,以支持或反对上述提案的相关区块被修复。即,委员会成员在投票窗口期的N个区块内连续投票,在投票窗口期的最后一个区块完成时进行计票的工作,以减少委员会部分成员的作恶或者是不在线的情况,其中,上述N为大于2的预设值。需要说明的是:委员会中的成员不会凭空判断提案包含的源区块数据非法,而可从待修复区块中恢复出提案提供的证据,并且判断提案中的源区块数据是否合规,当然这里的是否合规可能存在一些模糊的情况,所以要根据各个委员会成员自行判断并给出投票。
上述修复触发功能包括:在针对上述提案的最后一次投票结束后,统计上述委员会内各成员针对上述提案的所有投票;当针对上述提案的累计支持票数多于累计反对票数时,基于上述提案输出相应的区块修复指令。为了区块链状态不造成分叉,在上述投票窗口期内可限制无法在该区块链中提交新的普通交易。
为便于更好地理解该投票机制,下面结合图3a和图3b所示的场景示意图对基于委员会的投票机制进行说明。H-1、H、H+1、H+2、H+3和H+4分别表示区块A1-A6所在的区块高度,ID1、ID2、ID3为已被提交到提案池中的提案。设如图3a所示,监管机构通过监听确认区块A2存在不合规交易,将与区块A2相关的提案ID3提交到提案池中,如图3b所示,委员会从提案池接收到提案ID3并触发上述委员会内各成员在之后产出的4个区块(即N取4)的每个区块产出时刻(对应区块高度H+1、H+2、H+3和H+4),针对提案ID3进行投票,以支持或反对提案ID3的相关区块A2被修复。在投票窗口期的最后一次投票结束后,统计委员会各成员针对提案ID3的所有投票,当针对提案ID3的累计支持票数多于累计反对票数时,即确定区块A2为允许被修复的区块,此时基于提案ID3输出相应的区块修复指令,如果提案ID3的累计支持票数少于累计反对票数,则可不对提案ID3所对应的区块进行修复。在实际投票过程中,每个委员会成员在4个区块中可能投了3次支持票,1次反对票,这种情况下该成员最终的投票意见为赞同,原则就是最终投票结果和累计票数多的结果一致。
步骤102,基于上述区块高度指示信息定位到上述待修复区块;
由于区块高度对应区块在区块链中的位置,因此基于区块修复指令中的区块高度指示信息可定位到相应的待修复区块,比如图3b中的区块A2。
步骤103,将上述待修复区块作为当前目标区块,将当前目标区块中存储的上述源区块数据替换为上述目标区块数据。
步骤104,重新计算并更新当前目标区块的目标区块参数;
其中,上述目标区块参数为区块参数中与相关区块所存储的区块数据相关的参数,这里的相关,是指目标区块参数的值是基于相应区块存储的区块数据直接或间接计算得到。比如图4所示的交易树根计算过程示意图,HA~HP表示一个区块中所有交易的哈希列表,通过不断的将相邻的哈希值拼接为一个再做一次哈希得到一个新的哈希值,如HAB=Hash(HA,HB)。不断重复上述的过程,最终得到一个唯一的哈希值,这个就是交易数根。状态树根和收据树的构造过程和上述一致,只是HA~Hp分别是所有账户状态的哈希值以及所有交易收据的哈希值。由此可以看到,在Merkel树中,只要有一个哈希值发生改变,最后算出来的Merkel根一定会发生改变,所有的Merkel根都需要重新计算。区块签名是对区块头内容的签名,故与区块头内容有关;指向父区块的哈希指针与父区块的哈希值有关。
故本申请实施例中,可设置交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针为目标区块参数,在步骤104中,对这些目标区块参数重新计算,保留区块中的其它信息(比如已有的nonce值、时间戳、区块高度和区块中除源区块数据外的其它数据)。
具体的,步骤104可以包括:
基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
更新当前目标区块的区块头中指向父区块的哈希指针;
基于当前目标区块的区块头内容生成并更新区块签名。
步骤105,将当前目标区块的下一个区块作为当前目标区块,并返回执行步骤104,直至上述区块链中最后一个区块的目标区块参数完成更新。
下面在图3b所示实施例的基础上,以图5为例进行示意说明,由图5可见,在对区块A2完成修复后得到区块B2,之后将区块A2的下一个区块A3作为当前目标区块,并返回执行步骤104,直至上述区块链中最后一个区块A6的目标区块参数完成更新,得到区块B3~B6,也即经过本申请的区块修复方法,该区块链的区块由区块A1-A2-A3-A4-A5-A6更新为A1-B2-B3-B4-B5-B6,由于该区块链原本的结构没有改变,故下一个区块将在B6之后产出,如图5所示的区块B7,对应的区块高度为H+5。
进一步,为了本次的修复事件可以感知,当所有的后续区块更新完成后,本申请实施例中的区块修复方法还包括:在上述区块链中记录本次区块修复事件。具体的,可以在投票窗口期之后生成新的一个区块(如图5所示的区块B7),并构造一笔交易来记录该次区块修复事件,一般来说可以记录的内容可以包括修复前的区块状态A2~A6和修复后的区块状态B2~B6。
由上可见,本申请实施例针对待修复区块(即通过投票确认允许被修复的区块),在相应区块修复指令的触发下,以目标区块数据替换待修复区块中的源区块数据,重新计算并更新待修复区块及其之后已生成的区块的目标区块参数,达成删除和修改部分区块数据的效果,一方面实现了对待修复区块的修复,另一方面,由于是对区块链上已有区块进行更新,并不会改变区块链原本的结构,故相对于传统的硬分叉方式,本申请技术方案在实现对区块修复的同时也可减少对整体区块链运行的损害。另外,由于待修复区块是区块链中经投票确认允许被修复的区块,故本申请区块修复方法是经区块链内大多数节点选举达成共识的。
本申请实施例还提供一种区块修复装置,如图6所示,该区块修复装置500包括:
接收单元501,用于接收区块修复指令,其中,上述区块修复指令包含:待修复区块的区块高度指示信息、源区块数据以及目标区块数据,上述待修复区块为区块链中经投票确认允许被修复的区块;
定位单元502,用于基于上述区块高度指示信息定位到上述待修复区块;
数据替换单元503,用于将上述待修复区块作为当前目标区块,将当前目标区块中存储的上述源区块数据替换为上述目标区块数据;
更新单元504,用于重新计算并更新当前目标区块的目标区块参数,之后将当前目标区块的下一个区块作为当前目标区块并再次执行上述重新计算并更新当前目标区块的目标区块参数的动作,直至上述区块链中最后一个区块的目标区块参数完成更新。
可选的,上述区块修复装置还包括:
事件记录单元,用于在上述最后一个区块的目标区块参数完成更新后,在上述区块链中记录本次区块修复事件。
可选的,上述目标区块参数包括:交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针;
更新单元504包括:
第一子更新单元,用于基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
第二子更新单元,用于基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
第三子更新单元,用于基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
第四子更新单元,用于更新当前目标区块的区块头中指向父区块的哈希指针;
第五子更新单元,用于基于当前目标区块的区块头内容生成并更新区块签名。
可选的,如前述方法实施例所提及的,上述区块链中存在委员会,上述委员会具备投票选举功能和修复触发功能;
上述投票选举功能包括:当接收到提案时,触发上述委员会内各成员在之后产出的N个区块的每个区块产出时刻,针对上述提案进行投票,以支持或反对上述提案的相关区块被修复,其中,每个提案包含:区块高度指示信息、源区块数据、目标区块数据以及修复理由;
上述修复触发功能包括:在针对上述提案的最后一次投票结束后,统计上述委员会内各成员针对上述提案的所有投票;当针对上述提案的累计支持票数多于累计反对票数时,基于上述提案输出相应的区块修复指令;
接收单元501具体用于接收来自上述委员会的区块修复指令。
由上可见,本申请实施例针对待修复区块(即通过投票确认允许被修复的区块),在相应区块修复指令的触发下,以目标区块数据替换待修复区块中的源区块数据,重新计算并更新待修复区块及其之后已生成的区块的目标区块参数,达成删除和修改部分区块数据的效果,一方面实现了对待修复区块的修复,另一方面,由于是对区块链上已有区块进行更新,并不会改变区块链原本的结构,故相对于传统的硬分叉方式,本申请技术方案在实现对区块修复的同时也可减少对整体区块链运行的损害。
本申请还提供另一种区块修复装置,如图7所示,该跨链存证装置包括:存储器601、处理器602以及存储在存储器601中并可在处理器602上运行的计算机程序,其中:存储器601用于存储软件程序以及模块,处理器602通过运行存储在存储器601的软件程序以及模块,从而执行各种功能应用以及数据处理,存储器601和处理器602通过总线连接。
具体的,处理器602通过运行存储在存储器601的上述计算机程序时实现以下步骤:
接收区块修复指令,其中,上述区块修复指令包含:待修复区块的区块高度指示信息、源区块数据以及目标区块数据,上述待修复区块为区块链中经投票确认允许被修复的区块;
基于上述区块高度指示信息定位到上述待修复区块;
将上述待修复区块作为当前目标区块,将当前目标区块中存储的上述源区块数据替换为上述目标区块数据;
重新计算并更新当前目标区块的目标区块参数,其中,上述目标区块参数为区块参数中与相关区块所存储的区块数据相关的参数;
将当前目标区块的下一个区块作为当前目标区块,并返回执行上述重新计算并更新当前目标区块的目标区块参数的步骤,直至上述区块链中最后一个区块的目标区块参数完成更新。
假设上述为第一种可能的实施方式,则在基于上述第一种可能的实施方式的第二种可能的实施方式中,处理器602通过运行存储在存储器601的上述计算机程序时还实现以下步骤:
在上述最后一个区块的目标区块参数完成更新后,在上述区块链中记录本次区块修复事件。
在基于上述第一种可能的实施方式或者上述第二种可能的实施方式的第三种可能的实施方式中,上述目标区块参数包括:交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针;
上述重新计算并更新当前目标区块的目标区块参数包括:
基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
更新当前目标区块的区块头中指向父区块的哈希指针;
基于当前目标区块的区块头内容生成并更新区块签名。
在基于上述第一种可能的实施方式、或者上述第二种可能的实施方式的第四种可能的实施方式中,上述区块链中存在委员会,上述委员会具备投票选举功能和修复触发功能;上述投票选举功能包括:当接收到提案时,触发上述委员会内各成员在之后产出的N个区块的每个区块产出时刻,针对上述提案进行投票,以支持或反对上述提案的相关区块被修复,其中,每个提案包含:区块高度指示信息、源区块数据、目标区块数据以及修复理由,N为大于2的预设值;
上述修复触发功能包括:在针对上述提案的最后一次投票结束后,统计上述委员会内各成员针对上述提案的所有投票;当针对上述提案的累计支持票数多于累计反对票数时,基于上述提案输出相应的区块修复指令;
上述接收区块修复指令具体为:接收来自上述委员会的区块修复指令。
由上可见,本申请实施例针对待修复区块(即通过投票确认允许被修复的区块),在相应区块修复指令的触发下,以目标区块数据替换待修复区块中的源区块数据,重新计算并更新待修复区块及其之后已生成的区块的目标区块参数,达成删除和修改部分区块数据的效果,一方面实现了对待修复区块的修复,另一方面,由于是对区块链上已有区块进行更新,并不会改变区块链原本的结构,故相对于传统的硬分叉方式,本申请技术方案在实现对区块修复的同时也可减少对整体区块链运行的损害。
本申请还提供一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述方法实施例所提供的步骤。具体的,该计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式中的一种,此处不作限定;该计算机可读存储介质可以为能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、电载波信号、电信信号以及软件分发介质中的一种,此处不作限定。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
需要说明的是,上述实施例所提供的方法及其细节举例可结合至实施例提供的装置中,相互参照,不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
Claims (10)
1.一种区块修复方法,其特征在于,包括:
接收区块修复指令,其中,所述区块修复指令包含:待修复区块的区块高度指示信息、源区块数据以及目标区块数据,所述待修复区块为区块链中经投票确认允许被修复的区块;
基于所述区块高度指示信息定位到所述待修复区块;
将所述待修复区块作为当前目标区块,将当前目标区块中存储的所述源区块数据替换为所述目标区块数据;
重新计算并更新当前目标区块的目标区块参数,其中,所述目标区块参数为区块参数中与相关区块所存储的区块数据相关的参数;
将当前目标区块的下一个区块作为当前目标区块,并返回执行所述重新计算并更新当前目标区块的目标区块参数的步骤,直至所述区块链中最后一个区块的目标区块参数完成更新。
2.根据权利要求1所述的区块修复方法,其特征在于,在所述最后一个区块的目标区块参数完成更新后,所述区块修复方法还包括:
在所述区块链中记录本次区块修复事件。
3.根据权利要求1或2所述的区块修复方法,其特征在于,所述目标区块参数包括:交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针;
所述重新计算并更新当前目标区块的目标区块参数包括:
基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
更新当前目标区块的区块头中指向父区块的哈希指针;
基于当前目标区块的区块头内容生成并更新区块签名。
4.根据权利要求1或2所述的区块修复方法,其特征在于,所述区块链中存在委员会,所述委员会具备投票选举功能和修复触发功能;所述投票选举功能包括:当接收到提案时,触发所述委员会内各成员在之后产出的N个区块的每个区块产出时刻,针对所述提案进行投票,以支持或反对所述提案的相关区块被修复,其中,每个提案包含:区块高度指示信息、源区块数据、目标区块数据以及修复理由,N为大于2的预设值;
所述修复触发功能包括:在针对所述提案的最后一次投票结束后,统计所述委员会内各成员针对所述提案的所有投票;当针对所述提案的累计支持票数多于累计反对票数时,基于所述提案输出相应的区块修复指令;
所述接收区块修复指令具体为:接收来自所述委员会的区块修复指令。
5.一种区块修复装置,其特征在于,包括:
接收单元,用于接收区块修复指令,其中,所述区块修复指令包含:待修复区块的区块高度指示信息、源区块数据以及目标区块数据,所述待修复区块为区块链中经投票确认允许被修复的区块;
定位单元,用于基于所述区块高度指示信息定位到所述待修复区块;
数据替换单元,用于将所述待修复区块作为当前目标区块,将当前目标区块中存储的所述源区块数据替换为所述目标区块数据;
更新单元,用于重新计算并更新当前目标区块的目标区块参数,之后将当前目标区块的下一个区块作为当前目标区块并再次执行所述重新计算并更新当前目标区块的目标区块参数的动作,直至所述区块链中最后一个区块的目标区块参数完成更新。
6.根据权利要求5所述的区块修复装置,其特征在于,所述区块修复装置还包括:
事件记录单元,用于在所述最后一个区块的目标区块参数完成更新后,在所述区块链中记录本次区块修复事件。
7.根据权利要求5或6所述的区块修复装置,其特征在于,所述目标区块参数包括:交易树根值、收据树根值、状态树根值、区块签名以及指向父区块的哈希指针;
所述更新单元包括:
第一子更新单元,用于基于当前目标区块中所有交易的哈希列表计算并更新当前目标区块的交易树根值;
第二子更新单元,用于基于当前目标区块中所有交易收据的哈希列表计算并更新当前目标区块的收据树根值;
第三子更新单元,用于基于当前目标区块中所有账户状态的哈希列表计算并更新当前目标区块的状态树根值;
第四子更新单元,用于更新当前目标区块的区块头中指向父区块的哈希指针;
第五子更新单元,用于基于当前目标区块的区块头内容生成并更新区块签名。
8.根据权利要求5或6所述的区块修复装置,其特征在于,所述区块链中存在委员会,所述委员会具备投票选举功能和修复触发功能;所述投票选举功能包括:当接收到提案时,触发所述委员会内各成员在之后产出的N个区块的每个区块产出时刻,针对所述提案进行投票,以支持或反对所述提案的相关区块被修复,其中,每个提案包含:区块高度指示信息、源区块数据、目标区块数据以及修复理由,N为大于2的预设值;
所述修复触发功能包括:在针对所述提案的最后一次投票结束后,统计所述委员会内各成员针对所述提案的所有投票;当针对所述提案的累计支持票数多于累计反对票数时,基于所述提案输出相应的区块修复指令;
所述接收单元具体用于接收来自所述委员会的区块修复指令。
9.一种区块修复装置,其特征在,包括存储器和处理器;
所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至4任一项所述区块修复方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4任一项所述区块修复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011601364.7A CN112650734B (zh) | 2020-12-29 | 2020-12-29 | 一种区块修复方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011601364.7A CN112650734B (zh) | 2020-12-29 | 2020-12-29 | 一种区块修复方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650734A true CN112650734A (zh) | 2021-04-13 |
CN112650734B CN112650734B (zh) | 2023-03-24 |
Family
ID=75364227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011601364.7A Active CN112650734B (zh) | 2020-12-29 | 2020-12-29 | 一种区块修复方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650734B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018234922A1 (en) * | 2017-06-19 | 2018-12-27 | nChain Holdings Limited | COMPUTER-IMPLEMENTED SYSTEM AND METHOD FOR TEMPORAL RELEASE ENCRYPTION ON A BLOCK CHAINS NETWORK |
CN109213900A (zh) * | 2018-09-18 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据修改方法、装置、设备和介质 |
CN109241192A (zh) * | 2018-09-18 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 区块链的数据修改及区块验证方法、装置、设备和介质 |
CN110489422A (zh) * | 2019-08-23 | 2019-11-22 | 电子科技大学 | 区块链自动修复的方法 |
CN111679936A (zh) * | 2020-05-26 | 2020-09-18 | 中国工商银行股份有限公司 | 一种区块链网络分叉自动恢复方法、装置及*** |
-
2020
- 2020-12-29 CN CN202011601364.7A patent/CN112650734B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018234922A1 (en) * | 2017-06-19 | 2018-12-27 | nChain Holdings Limited | COMPUTER-IMPLEMENTED SYSTEM AND METHOD FOR TEMPORAL RELEASE ENCRYPTION ON A BLOCK CHAINS NETWORK |
CN109213900A (zh) * | 2018-09-18 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据修改方法、装置、设备和介质 |
CN109241192A (zh) * | 2018-09-18 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 区块链的数据修改及区块验证方法、装置、设备和介质 |
CN110489422A (zh) * | 2019-08-23 | 2019-11-22 | 电子科技大学 | 区块链自动修复的方法 |
CN111679936A (zh) * | 2020-05-26 | 2020-09-18 | 中国工商银行股份有限公司 | 一种区块链网络分叉自动恢复方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN112650734B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755718B2 (en) | Blockchain implemented counting system and method for use in secure voting and distribution | |
JP7199775B2 (ja) | スマートコントラクトに基づくデータ処理方法、データ処理装置、ノード機器、及びコンピュータプログラム | |
JP2022549581A (ja) | Dag構造のブロックチェーンにおいてブロックの連続的順序を決定するためのコンピューティング・システム、方法、非一時的コンピュータ可読媒体及びコンピュータ・プログラム | |
EP3779760B1 (en) | Blockchain-based data processing method and apparatus, and electronic device | |
CN110503558A (zh) | 一种基于区块链***的处理方法及装置 | |
CN108009445B (zh) | 一种半中心化的可信数据管理*** | |
CN110751485B (zh) | 一种数据处理方法及设备 | |
CN115152177B (zh) | 提供机密知识的专门证明的***和方法 | |
CN111556115B (zh) | 一种基于区块链的数据处理方法、装置、设备及存储介质 | |
CN109658099B (zh) | 一种基于区块链的账本记账方法 | |
CN111915294A (zh) | 一种基于区块链技术的安全、隐私保护、可交易的分布式机器学习框架 | |
CN110599331A (zh) | 基于区块链的债务催收***、方法、设备及存储介质 | |
EP3688717A1 (en) | Method for executing smart contracts through electronic processing means using the blockchain technology | |
CN111612457A (zh) | 基于区块链的电子投票方法、装置及存储介质 | |
CN114065145A (zh) | 基于区块链的作品原创审核方法、装置及设备 | |
CN112291067B (zh) | 一种业务操作记录及操作验证方法、装置 | |
WO2018013124A1 (en) | Digital asset platform | |
CN112650734B (zh) | 一种区块修复方法及相关装置 | |
CN111861737B (zh) | 基于区块链的风控模型优化方法、装置和计算机设备 | |
CN111881147B (zh) | 计算任务的处理方法和装置、存储介质及处理器 | |
US11362806B2 (en) | System and methods for recording codes in a distributed environment | |
CN116151826A (zh) | 一种高效可靠的基于区块链的电力交易终端信任管理方法 | |
CN111797590B (zh) | 数据核对方法、装置和设备 | |
CN114650289B (zh) | 用于区块链共识的方法及装置 | |
KR20190119911A (ko) | 블록체인 기반 티켓 판매 시스템 |
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 |