CN111679936B - 一种区块链网络分叉自动恢复方法、装置及系统 - Google Patents
一种区块链网络分叉自动恢复方法、装置及系统 Download PDFInfo
- Publication number
- CN111679936B CN111679936B CN202010453248.9A CN202010453248A CN111679936B CN 111679936 B CN111679936 B CN 111679936B CN 202010453248 A CN202010453248 A CN 202010453248A CN 111679936 B CN111679936 B CN 111679936B
- Authority
- CN
- China
- Prior art keywords
- block
- transaction
- information
- endorsement
- request
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- 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/2365—Ensuring data consistency and integrity
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提供了一种区块链网络分叉自动恢复方法、装置及系统,方法包括:将获取的交易请求封装成待共识的区块批量消息并对区块批量消息进行广播,以使普通成员节点根据区块批量消息生成共识消息并进行广播,根据共识消息对交易进行共识;对完成共识的交易进行判重检查并生成待执行交易清单;对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;若强一致性检查未通过,则向背书链发送背书存证查询请求以从背书链中获取最新区块信息;将最新区块信息作为恢复数据向所有普通成员节点广播,以使所有节点根据恢复数据进行恢复。本申请至少解决了区块链网络分叉时的复位区块数据争议问题。
Description
技术领域
本申请属于区块链技术领域,具体地讲,涉及一种区块链网络分叉自动恢复方法、装置及系统。
背景技术
区块链网络是一种利用P2P通讯技术实现对等通信、利用共识机制实现记账合法性、利用链式结构存储数据的共同记账的解决方案。区块链业务场景落地时,需要将业务逻辑编写为可在区块链节点上执行的智能合约,且该智能合约需部署在组成区块链业务链的每一个成员节点上,接收到交易请求后各成员节点进行交易共识、交易执行,并将交易结果数据写入区块,每个成员节点上都保存有一份相同的链式区块。在智能合约执行交易过程中遇到智能合约版本不一致等异常情况时,就会因区块数据不一致而产生区块链网络分叉,如不及时恢复就会影响整个区块链网络共识从而无法处理新的智能合约交易请求。
发明内容
本申请提供了一种区块链网络分叉自动恢复方法、装置及系统,以至少解决不同成员节点间的区块链网络分叉问题。
根据本申请的一个方面,提供了一种区块链网络分叉自动恢复方法,包括:
将获取的交易请求封装成待共识的区块批量消息并对区块批量消息进行广播,以使普通成员节点根据区块批量消息生成共识消息并进行广播,根据共识消息对交易进行共识,共识消息包括:区块批量消息、区块哈希值和区块序号;
对完成共识的交易进行判重检查并生成待执行交易清单;
对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
若强一致性检查未通过,则向背书链发送背书存证查询请求以从背书链中获取最新区块信息;
将最新区块信息作为恢复数据向所有普通成员节点广播,以使所有节点根据恢复数据进行恢复,最新区块信息包括:最新成功交易信息、最新世界状态信息、最新世界状态哈希值和最新区块序号。
在一实施例中,将获取的交易请求封装成待共识的区块批量消息,包括:
将交易请求的交易缓存在待共识区块数组中;
判断待共识区块数组中的交易数量及交易存放时间;
当交易数量或交易存放时间超过预设的阈值时,将待共识区块数组中的交易按时间排序并封装成待共识的区块批量消息。
在一实施例中,对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,包括:
根据交易执行成功结果修改原始世界状态信息;
根据修改后的世界状态信息生成修改后的世界状态哈希值;
根据区块批量消息获取交易执行成功的信息;
将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一实施例中,根据接收到的执行成功事件发起强一致性检查,包括:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
在一实施例中,本申请提供的区块链网络分叉自动恢复方法还包括:
若通过强一致性检查,将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号封装成区块背书请求发送至背书链进行背书存证。
在一实施例中,本申请提供的区块链网络分叉自动恢复方法还包括:
用恢复数据中的区块序号作为键值的区块替换当前区块,其中,恢复数据中的区块序号作为当前区块的区块高度序号。
从另一个角度出发,本申请还提供了一种区块链网络分叉自动恢复方法,包括:
根据领导成员节点发送的区块批量消息计算区块哈希值和区块序号,区块批量消息中包括待共识的交易请求;
根据区块批量消息、区块哈希值和区块序号生成共识消息广播至所有节点以使所有节点根据共识消息对交易进行共识;
对完成共识的交易进行判重检查并生成待执行交易清单;
对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
若强一致性检查未通过,从领导成员节点中获取背书链发送的恢复数据,并根据恢复数据进行恢复。
在一实施例中,本申请提供的区块链网络分叉自动恢复方法还包括:
若在预设的时间内未收到领导成员节点发送的区块批量消息,则重新选举领导成员节点。
在一实施例中,对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,包括:
根据交易执行成功结果修改原始世界状态信息;
根据修改后的世界状态信息生成修改后的世界状态哈希值;
根据区块批量消息获取交易执行成功的信息;
将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一实施例中,根据接收到的执行成功事件发起强一致性检查,包括:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
从另一个角度出发,本申请还提供了另一种区块链网络分叉自动恢复装置,包括:
计算单元,用于根据领导成员节点发送的区块批量消息计算区块哈希值和区块序号,区块批量消息中包括待共识的交易请求;
共识消息生成单元,用于根据区块批量消息、区块哈希值和区块序号生成共识消息广播至所有节点以使所有节点根据共识消息对交易进行共识;
交易清单生成单元,用于对完成共识的交易进行判重检查并生成待执行交易清单;
强一致性检查单元,用于对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
恢复单元,用于当强一致性检查未通过时,从领导成员节点中获取背书链发送的恢复数据,并根据恢复数据进行恢复。
在一实施例中,本申请提供的区块链网络分叉自动恢复装置还包括:
超时处理单元,用于若在预设的时间内未收到领导成员节点发送的区块批量消息,则重新选举领导成员节点。
在一实施例中,强一致性检查单元包括:
世界状态信息修改模块,用于根据交易执行成功结果修改原始世界状态信息;
世界状态哈希值修改模块,用于根据修改后的世界状态信息生成修改后的世界状态哈希值;
交易执行成功信息获取模块,用于根据区块批量消息获取交易执行成功的信息;
执行成功事件广播模块,用于将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一实施例中,强一致性检查单元还包括:
一致性对比模块,用于将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
从本申请的另一个角度出发,提供了一种区块链网络分叉自动恢复方法,包括:
判断领导成员节点发送的请求的类型,请求的类型包括:区块背书请求和背书存证查询请求;
若请求的类型为背书存证查询请求,解析背书存证查询请求的参数,并查找参数对应的最新区块信息发送至领导成员节点,最新区块信息包括:成功交易信息、世界状态信息、世界状态哈希值和区块序号;
若请求的类型为区块背书请求,根据区块背书请求更新本地数据。
在一实施例中,根据区块背书请求更新本地数据,包括:
解析区块背书请求的参数并根据参数生成区块数据;
重新计算区块高度和区块哈希值;
将区块数据、区块高度和区块哈希值进行广播共识。
基于上述方法申请提供了一种区块链网络分叉自动恢复装置,包括:
请求类型判断单元,用于判断领导成员节点发送的请求的类型,请求的类型包括:区块背书请求和背书存证查询请求;
最新区块信息查找单元,用于当请求的类型为背书存证查询请求时,解析背书存证查询请求的参数,并查找参数对应的最新区块信息发送至领导成员节点,最新区块信息包括:成功交易信息、世界状态信息、世界状态哈希值和区块序号;
更新单元,用于当请求的类型为区块背书请求时,根据区块背书请求更新本地数据。
在一实施例中,更新单元包括:
区块数据生成模块,用于解析区块背书请求的参数并根据参数生成区块数据;
计算模块,用于重新计算区块高度和区块哈希值;
更新并共识单元,用于将区块数据、区块高度和区块哈希值进行广播共识。
根据本申请的另一个方面,还提供了一种区块链网络分叉恢复的系统,包括:
业务链,业务链中的节点包括:一个领导成员节点和若干普通成员节点,领导成员节点由所有节点选举产生;
背书链,与业务链中的领导成员节点通信连接。
本申请在业务链的基础上引入了背书链,业务链用于执行业务智能合约而背书链则用于记录业务链的区块强一致性检查信息,本申请通过业务链和背书链的协助实现了业务链网络分叉时进行自动恢复的功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种区块链网络分叉恢复的系统结构示意图。
图2为本申请提供的一种区块链网络分叉恢复的方法流程图。
图3为本申请实施例中将获取的交易请求封装成待共识的区块批量消息的流程图。
图4为本申请实施例中对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播的流程图。
图5为本申请提供的另一种区块链网络分叉恢复的方法流程图。
图6为本申请实施例中对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播的流程图。
图7为本申请提供的另一种区块链网络分叉恢复的方法流程图。
图8为本申请实施例中根据区块背书请求更新本地数据的流程图。
图9为本申请提供的一种区块链网络分叉恢复装置的结构框图。
图10为本申请实施例中区块批量消息封装单元的结构框图。
图11为本申请实施例中强一致性检查单元的结构框图。
图12为本申请提供的另一种区块链网络分叉恢复装置的结构框图。
图13为本申请实施例中强一致性检查单元的结构框图。
图14为本申请提供的另一种区块链网络分叉恢复装置的结构框图。
图15为本申请实施例中一种电子设备的具体实施方式。
图16为本申请提供的一种区块链网络分叉恢复系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决背景技术中涉及的因区块数据不一致而导致的区块链网络分叉问题,本申请提供了一种区块链网络分叉自动恢复系统,如图1所示,包括:
业务链1,业务链1中的节点包括:一个领导成员节点3和若干普通成员节点2,领导成员节点3由所有节点选举产生;
背书链4,与业务链1中的领导成员节点3通信连接。
具体地,业务链1根据外部用户的上链业务需求组建而成,业务链1上包含普通成员节点2和领导成员节点3,所谓普通成员节点2和领导成员节点3概念是为描述交易过程的功能而另一的,其系统结构上不存在差异,均属于参与区块共识的成员节点,成员节点上均部署有满足外部用户业务需求的业务智能合约及与背书链4进行交互的系统智能合约。成员节点包括:普通成员节点2和领导成员节点3,成员节点总数为3f+1个,其中f表示可支持的容错节点个数,最小值为1,采用pbft拜占庭容错算法进行共识,也就是说,一笔共识请求必须在业务链1中的每个成员节点收到至少来自2f+1个其他成员节点的一致的确认消息后,该笔交易才能完成当前阶段的共识,三个阶段的共识都完成后才共识成功(三个阶段分别为:pre-prepare共识、prepare共识和commit共识),业务智能合约才被执行,执行结果才能作为合法数据生成新的区块并进行持久化。
普通成员节点2用于接收外部用户发起的业务智能合约交易请求,对交易进行权限验证并完成重复校验及参数合法性校验,校验通过后将交易广播至业务链1中的其他所有成员节点。接收领导成员节点3的待共识的区块批量消息(reqBatchMessage)广播通知,对待共识的区块批量消息中的交易逐个进行重复校验及参数合法性校验,校验通过后则进入三段式共识过程,第一阶段为pre-prepare共识,第二阶段为prepare共识,第三阶段为commit共识,三个阶段为顺序执行,当前一阶段累计收到2f+1个其他交易共识节点的一致确认消息后当前阶段的共识完成并进入下一阶段,三个阶段的共识全部完成后代表区块批量消息合法,按业务智能合约中的逻辑处理后的数据生成新的区块数据,待接收到领导成员节点3的强一致性检查成功通知后对区块数据进行持久化操作。
领导成员节点3和普通成员节点2的内部结构完全一致,由业务链1中的所有普通成员节点2选举产生,选举的规则为:业务链上当前的区块高度(seqNo)与业务链上的成员节点个数N(3f+1)取模(对应公式为:n=seqNo mod N),取模的结果就是被选举为领导成员节点的成员节点编号,下面以一个具体的例子说明领导成员节点的选举过程:
假设业务链1当前区块高度为N=1001;业务链1的节点个数是3f+1(f=1)=4,节点编号分别是VP0、VP1、VP2、VP3;选举结果n=1001mod 4=1,即领导成员节点的编号为1,VP1为领导成员节点3,VP0、VP2、VP3为普通成员节点2。当领导成员节点3发生超时或其他异常需要重新选举时,选举结果会因当前选举时区块高度不同而不同,每次选择所有的成员节点均会在普通成员节点2和领导成员节点3的角色之间切换。
领导成员节点3需要接收普通成员节点2广播的业务智能合约交易请求,对交易进行重复检查并排序并生成待共识的区块批量消息(reqBatchMessage)广播至所有普通成员节点2进行交易共识,共识分为三个阶段,第一阶段为pre-prepare共识,第二阶段为prepare共识,第三阶段为commit共识,三个阶段为顺序执行,当前一阶段累计收到2f+1个其他交易共识节点的一致确认消息后当前阶段的共识完成并进入下一阶段,三个阶段的共识全部完成后代表区块批量共识消息合法,按业务智能合约中的逻辑处理后的数据生成新的区块数据。待收到所有普通成员节点2的区块执行成功事件通知后,领导成员节点3则发起强一致性检查通知,强一致性检查通过则通过区块背书系统智能合约向背书链4发起区块背书更新请求,并将最新区块做持久化。强一致性检察不通过则通过区块背书系统智能合约向背书链2发起区块背书查询请求,并根据查询结果复位区块持久化数据。
背书链4用于为通过业务链强一致检查的区块进行背书,链上由3f+1个成员节点组成,其中f表示可支持的容错节点个数,最小值为1,采用pbft拜占庭容错算法进行共识,一笔共识请求必须在业务链中的每个成员节点收到至少2f+1个来自其他成员节点的一致的确认消息后,该笔交易才能完成当前阶段的共识,三个阶段的共识都完成后才共识成功,背书区块持久化。背书链4上的所有成员节点都部署有背书合约,对外提供背书区块上链调用功能及背书区块查询方法调用功能。
基于图1中的区块链网络分叉自动恢复系统,本申请提供了一种应用于该系统上的区块链网络分叉自动恢复方法(从领导成员节点端出发),如图2所示,包括如下步骤:
S201:将获取的交易请求封装成待共识的区块批量消息并对区块批量消息进行广播,以使普通成员节点根据区块批量消息生成共识消息并进行广播,根据共识消息对交易进行共识,共识消息包括:区块批量消息、区块哈希值和区块序号。
在一具体实施例中,业务链中的普通成员节点接收来自外部用户的交易请求,并验证交易签名,验证通过后将交易(请求)广播至业务链所有的其他成员节点(包括领导成员节点在内)。以领导成员节点为执行主体:领导成员节点接收到广播的交易请求后,对该交易进行判重检查,即,检查该交易是否为重复交易,如果是,则将该交易抛弃,如果不是,则将交易请求缓存在待共识的区块数组中,然后将区块数组中的待共识的交易请求按时间排序并封装成待共识的区块批量消息。然后,领导成员节点生成交易请求区块的哈希值,并使用该哈希值作为该区块的键值,将封装成的区块批量消息保存至本地,然后将该区块序号seqNo加1后生成该区块的新的区块高度后,再将区块批量消息广播至所有普通成员节点。
S202:对完成共识的交易进行判重检查并生成待执行交易清单。
在一具体实施例中,普通成员节点接收到S201中生成的区块批量消息后生成共识消息(共识消息中包括区块批量消息、区块哈希值、区块序号)并进行广播共识(共识过程中使用拜占庭共识算法进行交易共识)。领导成员节点如果收到2f+1个成员节点的一致确认消息,则共识成功,取出共识完成的区块信息(区块信息中包含了交易),然后,领导成员节点对共识完成的交易进行判重检查,剔除掉重复交易,生成最终的待执行的交易清单,并将当前区块的世界状态副本stateData拷贝到内存中。
若超时未收到2f+1个成员节点的一致确认消息,则说明共识失败,领导成员节点记录失败日志信息,然后通过区块哈希值找到本地记录的区块批量消息并删除,将区块序号减1,然后通过普通成员节点将交易失败信息反馈给用户以提示用户进行失败闭环处理。
S203:对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查。
在一具体实施例中,领导成员节点从待执行的交易清单中逐条取出交易并执行,然后根据执行结果生成区块执行成功事件并广播至其他成员节点。领导成员节点接收到其他成员节点发送的区块执行成功事件后向所有成员节点发起强一致性检查通知,以使所有成员节点对接收到的执行成功事件进行强一致性检查,其目的在于检查区块链网络是否发生了分叉。
S204:若强一致性检查未通过,则向背书链发送背书存证查询请求以从背书链中获取最新区块信息。
在一具体实施例中,如果强一致性检查未通过,则说明区块链网络中发生的分叉,此时,领导成员节点向背书链发起“背书存证查询请求”,背书链接收到该请求后查找该业务链对应的最新区块信息(最新区块信息包括交易执行后的世界状态信息、世界状态哈希值和区块序号等在内)并返回给领导成员节点。
S205:将最新区块信息作为恢复数据向所有普通成员节点广播,以使所有节点根据恢复数据进行恢复,最新区块信息包括:最新成功交易信息、最新世界状态信息、最新世界状态哈希值和最新区块序号。
在一具体实施例中,领导成员节点将该最新区块信息作为恢复数据广播至所有普通成员节点,以使普通成员节点进行分叉自动恢复。
图2所示的方法的执行主体可以为PC、终端等,通过在业务链上外接一背书链记录最新的一致性区块数据,使得业务链在进行区块持久化上链前均需要对成员节点的区块做强一致性检查,然后将检查通过的区块在背书链上进行背书(类似于备份),实现了当区块链网络分叉时(即强一致性检查不通过时)业务链能够从背书链上获取备份的数据进行分叉自动恢复的功能。
在一实施例中,将获取的交易请求封装成待共识的区块批量消息,如图3所示,包括:
S301:将交易请求的交易缓存在待共识区块数组中。
在一具体实施例中,领导成员节点将通过判重检查的交易请求缓存在待共识的区块链数组中。
S302:判断待共识区块数组中的交易数量及交易存放时间。
在一具体实施例中,领导成员节点判断待共识的区块链数组中的交易请求对应的交易的数量以及该交易的存放时长。
S303:当交易数量或交易存放时间超过预设的阈值时,将待共识区块数组中的交易按时间排序并封装成待共识的区块批量消息。
在一具体实施例中,当领导成员节点发现在待共识的区块数组中的交易数量已经超过10条或者交易请求未提交时长超过1秒(本申请不以此为限),则对待共识区块数组中的交易按时间排序后封装成待共识的区块批量消息。
在一实施例中,对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,如图4所示,包括:
S401:根据交易执行成功结果修改原始世界状态信息。
在一具体实施例中,领导成员节点从待执行的交易清单中逐条取出交易并执行,如果交易执行成功,则根据交易执行成功结果修改世界状态副本stateData。
S402:根据修改后的世界状态信息生成修改后的世界状态哈希值。
S403:根据区块批量消息获取交易执行成功的信息。
在一具体实施例中,领导成员节点从区块批量信息中筛选出执行成功的交易,并获得交易执行成功的信息。
S404:将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一具体实施例中,领导成员节点将交易执行成功的信息(区块批量消息中那些被成功执行的交易所组成的信息)、交易执行后的世界状态信息(即修改后的世界状态信息)、交易执行后的世界状态哈希值(即修改后的世界状态哈希值)与该区块所对应的区块序号存储至本地磁盘中然后广播该区块的执行成功事件。
在一实施例中,根据接收到的执行成功事件发起强一致性检查,包括:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
在一具体实施例中,领导成员节点在接收到所有普通成员节点发送的执行成功事件后对执行成功事件发起强一致性检查消息,以使所有成员节点(包括领导成员节点自身)对获取的执行成功事件进行强一致性检查,具体的强一致性检查过程为:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比,如果所有成员节点上的强一致性检查结果均为一致,则通过。
在一实施例中,本申请提供的区块链网络分叉自动恢复方法还包括:
若通过强一致性检查,将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号封装成区块背书请求发送至背书链进行背书存证。
在一具体实施例中,如果检查通过,领导成员节点将最新区块数据:成功交易信息sucReqBatchMessage、交易执行后的世界状态信息stateData、交易执行后的世界状态哈希值stateHash、区块序号seqNo封装成区块背书请求发送到背书链4上进行背书存证(相当于做备份),请求参数为:Invoke(背书链,update,[业务链1,seqNo,stateData,stateHash])。背书成功后业务链中的所有成员节点将恢复数据作为最新区块数据进行持久化并按照交易清单返回交易执行结果给外部用户以进行交易相关闭环处理。
在一实施例中,本申请提供的区块链网络分叉自动恢复方法还包括:
用恢复数据中的区块序号作为键值的区块替换当前区块,其中,恢复数据中的区块序号作为当前区块的区块高度序号。
在一具体实施例中,以恢复数据中的区块序号X作为键值,领导成员节点用该键值X对应的区块B来替换当前节点对应的持久化区块A,并且将该区块B作为当前节点的最新区块,以区块序号X作为当前的区块高度序号。
上面是以领导成员节点为执行主体介绍本申请提供的区块链网络分叉自动恢复方法,接下来,从普通成员节点端出发(即以普通成员节点为执行主体),本申请还提供了一种应用于该系统上的区块链网络分叉自动恢复方法,如图5所示,包括:
S501:根据领导成员节点发送的区块批量消息计算区块哈希值和区块序号,区块批量消息中包括待共识的交易请求。
在一具体实施例中,普通成员节点接收来自外部用户的交易请求,然后对交易请求进行签名验证,并将验证通过的交易(请求)广播至所有其他成员节点,普通成员节点接收到广播的加以请求后先进行判重检查,如果是重复交易则丢弃,将非重复交易请求保存到本地的内存数组reqStore中。然后,普通成员节点接收领导成员节点广播的区块批量消息,中止接收超时程序的阻塞等待,根据该区块批量消息计算区块哈希值并使用区块哈希值作为区块的键值,将区块序号加1然后将区块批量消息进行保存。
S502:根据区块批量消息、区块哈希值和区块序号生成共识消息广播至所有节点以使所有节点根据共识消息对交易进行共识。
在一具体实施例中,普通成员节点根据S501中计算得到的区块哈希值、区块序号和获取的区块批量消息生成共识消息并广播,具体地,所有成员节点使用拜占庭共识算法进行交易共识,若收到2f+1个成员节点的一致确认消息,则共识成功。
S503:对完成共识的交易进行判重检查并生成待执行交易清单。
在一具体实施例中,普通成员节点对完成共识的交易进行逐个检查是否重复提交并剔除重复提交的交易后生成待执行的交易清淡并拷贝当前最新区块的世界状态副本到内存中。
S504:对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查。
在一具体实施例中,普通成员节点从交易清单中逐条取出交易并执行,然后根据执行结果生成执行成功事件并广播至其他成员节点,同时接收其他成员节点发送的各节点的执行成功事件并对接收到的执行成功事件进行强一致性检查。
S505:若强一致性检查未通过,从领导成员节点中获取背书链发送的恢复数据,并根据恢复数据进行恢复。
图5所示的方法的执行主体可以为PC、终端等,通过图5所示的方法,引入区块背书链用于记录最新一致区块数据信息,业务链在新的区块持久化上链前先对现有成员节点的区块做强一致性检查,检查通过则将该区块的最新数据在背书链上进行背书,检查不通过时则从背书链上获取最新数据信息进行复位(分叉恢复),以保障业务链上所有成员节点的数据一致性,解决不同成员节点间的区块链网络分叉问题。由于系统链(业务链+背书链)自身也是一个区块链,因此可达到去中心化及防篡改的目标,保证区块背书信息的公正及准确,从而解决解决分叉过程中的数据争议问题。
在一实施例中,本申请提供的区块链网络分叉自动恢复方法还包括:
若在预设的时间内未收到领导成员节点发送的区块批量消息,则重新选举领导成员节点。
在一具体实施例中,在普通成员节点中设置有待共识区块批量消息接收超时程序,设置一定的阻塞等待阈值,例如2秒,如果2秒内未收到领导成员节点的区块批量消息则重新选举新的领导成员节点,选举的方式如图1的具体实施例中记载,此处不再重复叙述。
在一实施例中,对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,如图6所示,包括:
S601:根据交易执行成功结果修改原始世界状态信息。
在一具体实施例中,普通成员节点从待执行的交易清单中逐条取出交易并执行,如果交易执行成功,则根据交易执行成功结果修改世界状态副本stateData。
S602:根据修改后的世界状态信息生成修改后的世界状态哈希值。
S603:根据区块批量消息获取交易执行成功的信息。
在一具体实施例中,普通成员节点从区块批量信息中筛选出执行成功的交易,并获得交易执行成功的信息。
S604:将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一具体实施例中,普通成员节点将交易执行成功的信息、交易执行后的世界状态信息(即修改后的世界状态信息)、交易执行后的世界状态哈希值(即修改后的世界状态哈希值)与该区块所对应的区块序号存储至本地磁盘中然后广播该区块的执行成功事件。
在一实施例中,根据接收到的执行成功事件发起强一致性检查,包括:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
在一具体实施例中,普通成员节点在接收来自领导成员节点的强一致性检查消息时,对获取的执行成功事件进行强一致性检查,具体的强一致性检查过程为:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比,如果所有成员节点上的强一致性检查结果均为一致,则通过,领导成员节点将最新区块数据封装成区块背书请求发送到背书链4上进行背书存证,请求参数为:Invoke(背书链,update,[业务链1,seqNo,stateData,stateHash])。背书成功后业务链中的所有成员节点将恢复数据作为最新区块数据进行持久化并按照交易清单返回交易执行结果给外部用户以进行交易相关闭环处理。
如果检查不通过,领导成员节点向背书链发起背书存证查询请求信息,请求参数为:Invoke(背书链,query,[业务链1]),背书链返回业务链对应的最新区块信息并做为强一致性检查恢复数据广播至业务链中所有的普通成员节点。
从背书链的角度出发,以背书链作为执行主体,本申请还提供了一种区块链网络分叉自动恢复方法,如图7所示,包括:
S701:判断领导成员节点发送的请求的类型,请求的类型包括:区块背书请求和背书存证查询请求。
在一具体实施例中,背书链解析领导成员节点的请求参数,如果判断交易为重复提交,则抛弃交易并原路返回交易重复提示信息给领导成员节点。如果该笔交易并非重复提交,则判断交易类型function。
S702:若请求的类型为背书存证查询请求,解析背书存证查询请求的参数,并查找参数对应的最新区块信息发送至领导成员节点,最新区块信息包括:成功交易信息、世界状态信息、世界状态哈希值和区块序号。
在一具体实施例中,若交易类型function值为query则表示是查询请求交易,解析并校验查询请求参数args,查询参数制定的业务链ID对应的最新区块背书数据信息,包括交易成功执行的信息sucReqBatchMessage、交易执行后的世界状态信息stateData、交易执行后的世界状态信息哈希stateHash、区块序号seqNo返回给业务链上的领导成员节点。
S703:若请求的类型为区块背书请求,根据区块背书请求更新本地数据。
图7所示的方法的执行主体可以为PC、终端等,通过判断领导节点发送的请求类型判断是否应当将最新区块数据(恢复数据)发送给业务链以使业务链自行分叉恢复,并且还可以通过请求类型及时更新背书链中的数据,避免了因区块链网络分叉带来的业务影响。
在一实施例中,根据区块背书请求更新本地数据,如图8所示,包括:
S801:解析区块背书请求的参数并根据参数生成区块数据。
在一具体实施例中,若交易类型function值为update则表示是更新请求交易,解析并校验查询请求参数args,解析并校验查询请求参数args,将请求数据封装成区块数据,区块高度加1。
S802:重新计算区块高度和区块哈希值。
S803:将区块数据、区块高度和区块哈希值进行广播共识。
在一具体实施例中,重新计算区块哈希值,将区块高度、区块数据、区块哈希值广播至背书链上的其他所有成员节点进行交易共识。若收到2f+1个交易验证节点3的一致确认消息,则共识成功,将背书合约执行后生成的新区块数据、区块哈希值、区块数据写入区块进行持久化,并返回背书成功消息给业务链的领导成员节点;若在一定时间内无法收到2f+1个交易验证节点3的一致确认消息,则共识失败,记录失败日志,返回背书失败消息给领导成员节点,同时清除内存数组reqStore。
基于同一发明构思,本申请实施例还提供了与上述三种方法对应的区块链网络分叉自动恢复装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该区块链网络分叉自动恢复装置解决问题的原理与区块链网络分叉自动恢复方法相似,因此区块链网络分叉自动恢复装置的实施可以参见区块链网络分叉自动恢复方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图9所示,本申请提供了一种基于领导成员节点的区块链网络分叉自动恢复装置,包括:
区块批量消息封装单元901,用于将获取的交易请求封装成待共识的区块批量消息并对区块批量消息进行广播,以使普通成员节点根据区块批量消息生成共识消息并进行广播,根据共识消息对交易进行共识,共识消息包括:区块批量消息、区块哈希值和区块序号;
待执行交易清单生成单元902,用于对完成共识的交易进行判重检查并生成待执行交易清单;
强一致性检查单元903,用于对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
最新区块信息获取单元904,用于当强一致性检查未通过时,则向背书链发送背书存证查询请求以从背书链中获取最新区块信息;
数据恢复单元905,用于将最新区块信息作为恢复数据向所有普通成员节点广播,以使所有节点根据恢复数据进行恢复,最新区块信息包括:最新成功交易信息、最新世界状态信息、最新世界状态哈希值和最新区块序号。
在一实施例中,如图10所示,区块批量消息封装单元901包括:
缓存模块1001,用于将交易请求的交易缓存在待共识区块数组中;
时间判断模块1002,用于判断待共识区块数组中的交易数量及交易存放时间;
封装模块1003,用于当交易数量或交易存放时间超过预设的阈值时,将待共识区块数组中的交易按时间排序并封装成待共识的区块批量消息。
在一实施例中,如图11所示,强一致性检查单元903包括:
世界状态信息修改模块1101,用于根据交易执行成功结果修改原始世界状态信息;
世界状态哈希值修改模块1102,用于根据修改后的世界状态信息生成修改后的世界状态哈希值;
交易执行成功信息获取模块1103,用于根据区块批量消息获取交易执行成功的信息;
执行成功事件广播模块1104,用于将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一实施例中,强一致性检查单元904还包括:
一致性对比模块,用于将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
在一实施例中,区块链网络分叉自动恢复装置还包括:
背书存证单元,用于当通过强一致性检查时,将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号封装成区块背书请求发送至背书链进行背书存证。
在一实施例中,区块链网络分叉自动恢复装置还包括:
区块替换模块,用于用恢复数据中的区块序号作为键值的区块替换当前区块,其中,恢复数据中的区块序号作为当前区块的区块高度序号。
本申请还提供了一种基于普通成员节点的区块链网络分叉自动恢复装置,如图12所示,包括:
计算单元1201,用于根据领导成员节点发送的区块批量消息计算区块哈希值和区块序号,区块批量消息中包括待共识的交易请求;
共识消息生成单元1202,用于根据区块批量消息、区块哈希值和区块序号生成共识消息广播至所有节点以使所有节点根据共识消息对交易进行共识;
交易清单生成单元1203,用于对完成共识的交易进行判重检查并生成待执行交易清单;
强一致性检查单元1204,用于对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
恢复单元1205,用于当强一致性检查未通过时,从领导成员节点中获取背书链发送的恢复数据,并根据恢复数据进行恢复。
在一实施例中,本申请提供的区块链网络分叉自动恢复装置还包括:
超时处理单元,用于若在预设的时间内未收到领导成员节点发送的区块批量消息,则重新选举领导成员节点。
在一实施例中,如图13所示,强一致性检查单元1204包括:
世界状态信息修改模块1301,用于根据交易执行成功结果修改原始世界状态信息;
世界状态哈希值修改模块1302,用于根据修改后的世界状态信息生成修改后的世界状态哈希值;
交易执行成功信息获取模块1303,用于根据区块批量消息获取交易执行成功的信息;
执行成功事件广播模块1304,用于将交易执行成功的信息、修改后的世界状态信息、修改后的世界状态哈希值和对应的区块序号进行存储并广播。
在一实施例中,强一致性检查单元1204还包括:
一致性对比模块,用于将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
本申请还提供了一种基于背书链的区块链网络分叉自动恢复装置,如图14所示,包括:
请求类型判断单元1401,用于判断领导成员节点发送的请求的类型,请求的类型包括:区块背书请求和背书存证查询请求;
最新区块信息查找单元1402,用于当请求的类型为背书存证查询请求时,解析背书存证查询请求的参数,并查找参数对应的最新区块信息发送至领导成员节点,最新区块信息包括:成功交易信息、世界状态信息、世界状态哈希值和区块序号;
更新单元1403,用于当请求的类型为区块背书请求时,根据区块背书请求更新本地数据。
在一实施例中,更新单元包括:
区块数据生成模块,用于解析区块背书请求的参数并根据参数生成区块数据;
计算模块,用于重新计算区块高度和区块哈希值;
更新并共识单元,用于将区块数据、区块高度和区块哈希值进行广播共识。
如图16所示,为本申请提供的一种区块链网络分叉自动恢复系统,包括:基于领导成员节点的区块链网络分叉自动恢复装置、基于普通成员节点的区块链网络分叉自动恢复装置和基于背书链的区块链网络分叉自动恢复装置;
基于领导成员节点的区块链网络分叉自动恢复装置包括:强一致性检查单元、最新区块信息获取单元和数据恢复单元;
基于普通成员节点的区块链网络分叉自动恢复装置包括:计算单元、共识消息生成单元、交易清单生成单元、强一致性检查单元和恢复单元;
基于背书链的区块链网络分叉自动恢复装置包括:请求类型判断单元、最新区块信息查找单元和更新单元。
本申请提供的区块链网络分叉自动恢复方法、装置及系统,可保障在业务链成员节点出现区块链网络分叉时自动复位到可信的最新一致性区块位置,避免因区块链网络分叉带来的业务影响及解决分叉时的复位区块数据争议问题,具有以下优点:
分叉恢复过程全自动:通过将区块持久化信息实时存证到背书链,在新的区块持久化前增加区块强一致检查步骤,并在检查出分叉时从背书链获取复位区块信息,分叉检查及分叉恢复步骤均为可执行程序自动运行,无需人工干预。
复位数据安全可信:背书链也采用区块连技术,基于智能合约的执行实现链与链之间的数据信任传递,复位区块服务数据安全可信且过程可追溯。
提升区块链网络分叉问题解决的整体效率:通过背书链实现区块链网络分叉争议快速恢复,避免繁琐的分叉区块数据排查及复位数据计算,提升区块链网络分叉问题解决效率,保障复位区块的公信力。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图15,所述电子设备具体包括如下内容:
处理器(processor)1501、内存1502、通信接口(Communications Interface)1503、总线1504和非易失性存储器1505;
其中,所述处理器1501、内存1502、通信接口1503通过所述总线1504完成相互间的通信;
所述处理器1501用于调用所述内存1502和非易失性存储器1505中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现S201-S205、S501-S505、S701-S703的步骤。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现S201-S205、S501-S505、S701-S703的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“在一实施例”、“在一具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (20)
1.一种区块链网络分叉自动恢复方法,其特征在于,包括:
对根据获取的交易请求生成的待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
若所述强一致性检查未通过,则向背书链发送背书存证查询请求以从背书链中获取最新区块信息;
将所述最新区块信息作为恢复数据向所有普通成员节点广播,以使所有节点根据所述恢复数据进行恢复,所述最新区块信息包括:最新成功交易信息、最新世界状态信息、最新世界状态哈希值和最新区块序号。
2.根据权利要求1所述的区块链网络分叉自动恢复方法,其特征在于,还包括:
将获取的交易请求封装成待共识的区块批量消息并对所述区块批量消息进行广播,以使普通成员节点根据所述区块批量消息生成共识消息并进行广播,根据所述共识消息对交易进行共识,所述共识消息包括:所述区块批量消息、区块哈希值和区块序号;
对完成共识的交易进行判重检查并生成待执行交易清单。
3.根据权利要求2所述的区块链网络分叉自动恢复方法,其特征在于,所述将获取的交易请求封装成待共识的区块批量消息,包括:
将所述交易请求的交易缓存在待共识区块数组中;
判断所述待共识区块数组中的交易数量及交易存放时间;
当交易数量或交易存放时间超过预设的阈值时,将所述待共识区块数组中的交易按时间排序并封装成待共识的所述区块批量消息。
4.根据权利要求2所述的区块链网络分叉自动恢复方法,其特征在于,所述对根据获取的交易请求生成的待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,包括:
根据交易执行成功结果修改原始世界状态信息;
根据修改后的世界状态信息生成修改后的世界状态哈希值;
根据所述区块批量消息获取交易执行成功的信息;
将所述交易执行成功的信息、所述修改后的世界状态信息、所述修改后的世界状态哈希值和对应的区块序号进行存储并广播。
5.根据权利要求4所述的区块链网络分叉自动恢复方法,其特征在于,所述根据接收到的执行成功事件发起强一致性检查,包括:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
6.根据权利要求4所述的区块链网络分叉自动恢复方法,其特征在于,还包括:
若通过强一致性检查,将所述交易执行成功的信息、所述修改后的世界状态信息、所述修改后的世界状态哈希值和对应的区块序号封装成区块背书请求发送至背书链进行背书存证。
7.根据权利要求1所述的区块链网络分叉自动恢复方法,其特征在于,还包括:
用所述恢复数据中的区块序号作为键值的区块替换当前区块,其中,所述恢复数据中的区块序号作为当前区块的区块高度序号。
8.一种基于领导成员节点的区块链网络分叉自动恢复装置,其特征在于,包括:
强一致性检查单元,用于对根据获取的交易请求生成的待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
最新区块信息获取单元,用于当所述强一致性检查未通过时,则向背书链发送背书存证查询请求以从背书链中获取最新区块信息;
数据恢复单元,用于将所述最新区块信息作为恢复数据向所有普通成员节点广播,以使所有节点根据所述恢复数据进行恢复,所述最新区块信息包括:最新成功交易信息、最新世界状态信息、最新世界状态哈希值和最新区块序号。
9.一种区块链网络分叉自动恢复方法,其特征在于,包括:
对完成共识的交易进行判重检查并生成待执行交易清单;
对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
若所述强一致性检查未通过,从领导成员节点中获取背书链发送的恢复数据,并根据所述恢复数据进行恢复;
所述区块链网络分叉自动恢复方法还包括:
根据领导成员节点发送的区块批量消息计算区块哈希值和区块序号,所述区块批量消息中包括待共识的交易请求;
根据所述区块批量消息、所述区块哈希值和所述区块序号生成共识消息广播至所有节点以使所有节点根据所述共识消息对交易进行共识。
10.根据权利要求9所述的区块链网络分叉自动恢复方法,其特征在于,还包括:
若在预设的时间内未收到领导成员节点发送的所述区块批量消息,则重新选举领导成员节点。
11.根据权利要求9所述的区块链网络分叉自动恢复方法,其特征在于,所述对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,包括:
根据交易执行成功结果修改原始世界状态信息;
根据修改后的世界状态信息生成修改后的世界状态哈希值;
根据所述区块批量消息获取交易执行成功的信息;
将所述交易执行成功的信息、所述修改后的世界状态信息、所述修改后的世界状态哈希值和对应的区块序号进行存储并广播。
12.根据权利要求11所述的区块链网络分叉自动恢复方法,其特征在于,所述根据接收到的执行成功事件发起强一致性检查,包括:
将接收到的执行成功事件中的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号与本地的交易执行成功的信息、世界状态信息、世界状态哈希值和区块序号进行一致性对比。
13.一种基于普通成员节点的区块链网络分叉自动恢复装置,其特征在于,包括:
计算单元,用于根据领导成员节点发送的区块批量消息计算区块哈希值和区块序号,所述区块批量消息中包括待共识的交易请求;
共识消息生成单元,用于根据所述区块批量消息、所述区块哈希值和所述区块序号生成共识消息广播至所有节点以使所有节点根据所述共识消息对交易进行共识;
交易清单生成单元,用于对完成共识的交易进行判重检查并生成待执行交易清单;
强一致性检查单元,用于对待执行交易清单中的交易执行成功后得到的执行成功事件进行广播,并根据接收到的执行成功事件发起强一致性检查;
恢复单元,用于当所述强一致性检查未通过时,从领导成员节点中获取背书链发送的恢复数据,并根据所述恢复数据进行恢复。
14.一种区块链网络分叉自动恢复方法,其特征在于,包括:
判断领导成员节点发送的请求的类型,所述请求的类型包括:区块背书请求和背书存证查询请求;
若所述请求的类型为背书存证查询请求,解析所述背书存证查询请求的参数,并查找参数对应的最新区块信息发送至领导成员节点,所述最新区块信息包括:成功交易信息、世界状态信息、世界状态哈希值和区块序号;
若所述请求的类型为区块背书请求,根据所述区块背书请求更新本地数据。
15.根据权利要求14所述的区块链网络分叉自动恢复方法,其特征在于,所述根据所述区块背书请求更新本地数据,包括:
解析所述区块背书请求的参数并根据参数生成区块数据;
重新计算区块高度和区块哈希值;
将所述区块数据、区块高度和区块哈希值进行广播共识。
16.一种基于背书链的区块链网络分叉自动恢复装置,其特征在于,包括:
请求类型判断单元,用于判断领导成员节点发送的请求的类型,所述请求的类型包括:区块背书请求和背书存证查询请求;
最新区块信息查找单元,用于当所述请求的类型为背书存证查询请求时,解析所述背书存证查询请求的参数,并查找参数对应的最新区块信息发送至领导成员节点,所述最新区块信息包括:成功交易信息、世界状态信息、世界状态哈希值和区块序号;
更新单元,用于当所述请求的类型为区块背书请求时,根据所述区块背书请求更新本地数据。
17.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7、9至12、14至15中任意一项所述区块链网络分叉自动恢复方法。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7、9至12、14至15中任一项所述区块链网络分叉自动恢复方法。
19.一种区块链网络分叉自动恢复系统,用于实现权利要求1至7、9至12、14至15中任一项所述区块链网络分叉自动恢复方法,其特征在于,包括:
业务链,所述业务链中的节点包括:一个领导成员节点和若干普通成员节点,所述领导成员节点由所有节点选举产生;
背书链,与所述业务链中的所述领导成员节点通信连接。
20.一种区块链网络分叉自动恢复系统,其特征在于,包括:基于领导成员节点的区块链网络分叉自动恢复装置、基于普通成员节点的区块链网络分叉自动恢复装置和基于背书链的区块链网络分叉自动恢复装置;
所述基于领导成员节点的区块链网络分叉自动恢复装置包括:强一致性检查单元、最新区块信息获取单元和数据恢复单元;
所述基于普通成员节点的区块链网络分叉自动恢复装置包括:计算单元、共识消息生成单元、交易清单生成单元、强一致性检查单元和恢复单元;
所述基于背书链的区块链网络分叉自动恢复装置包括:请求类型判断单元、最新区块信息查找单元和更新单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010453248.9A CN111679936B (zh) | 2020-05-26 | 2020-05-26 | 一种区块链网络分叉自动恢复方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010453248.9A CN111679936B (zh) | 2020-05-26 | 2020-05-26 | 一种区块链网络分叉自动恢复方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679936A CN111679936A (zh) | 2020-09-18 |
CN111679936B true CN111679936B (zh) | 2023-09-05 |
Family
ID=72434371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010453248.9A Active CN111679936B (zh) | 2020-05-26 | 2020-05-26 | 一种区块链网络分叉自动恢复方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679936B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650734B (zh) * | 2020-12-29 | 2023-03-24 | 杭州趣链科技有限公司 | 一种区块修复方法及相关装置 |
CN114820183B (zh) * | 2021-09-08 | 2023-01-31 | 佛山赛思禅科技有限公司 | 一种消除并行投票证明共识算法中分叉问题的方法及系统 |
CN114153827B (zh) * | 2021-10-11 | 2023-01-10 | 北京天德科技有限公司 | 一种基于区块链系统的交易数据移除方法 |
CN114254050B (zh) * | 2022-03-02 | 2022-06-07 | 恒生电子股份有限公司 | 区块链网络共识预加载方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109242685A (zh) * | 2018-08-29 | 2019-01-18 | 众安信息技术服务有限公司 | 基于区块链的共识和验证方法及装置 |
CN109871669A (zh) * | 2019-03-14 | 2019-06-11 | 哈尔滨工程大学 | 一种基于区块链技术的数据共享解决方法 |
CN110298754A (zh) * | 2019-06-21 | 2019-10-01 | 杭州云象网络技术有限公司 | 一种应用于区块链的共识方法 |
CN110544095A (zh) * | 2019-09-03 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 区块链网络的交易处理方法及区块链网络 |
CN111131209A (zh) * | 2019-12-16 | 2020-05-08 | 国网重庆市电力公司客户服务中心 | 一种改进的高效共识方法、系统、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10901957B2 (en) * | 2018-08-29 | 2021-01-26 | International Business Machines Corporation | Checkpointing for increasing efficiency of a blockchain |
-
2020
- 2020-05-26 CN CN202010453248.9A patent/CN111679936B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109242685A (zh) * | 2018-08-29 | 2019-01-18 | 众安信息技术服务有限公司 | 基于区块链的共识和验证方法及装置 |
CN109871669A (zh) * | 2019-03-14 | 2019-06-11 | 哈尔滨工程大学 | 一种基于区块链技术的数据共享解决方法 |
CN110298754A (zh) * | 2019-06-21 | 2019-10-01 | 杭州云象网络技术有限公司 | 一种应用于区块链的共识方法 |
CN110544095A (zh) * | 2019-09-03 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 区块链网络的交易处理方法及区块链网络 |
CN111131209A (zh) * | 2019-12-16 | 2020-05-08 | 国网重庆市电力公司客户服务中心 | 一种改进的高效共识方法、系统、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
韩镇阳等.一种区块链实用拜占庭容错算法的改进.计算机应用与软件.2020,第37卷(第2期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111679936A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111679936B (zh) | 一种区块链网络分叉自动恢复方法、装置及系统 | |
US11411721B2 (en) | Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system | |
CN112035889B (zh) | 计算外包的区块链隐私验证方法、装置及计算机设备 | |
EP3605947B1 (en) | Distributed system, message processing method, node, client, and storage medium | |
KR102578019B1 (ko) | 블록체인 기반 데이터 검출 방법 및 디바이스, 및 컴퓨터 판독가능 저장 매체 | |
CN111382456A (zh) | 提案消息处理方法、装置、设备以及存储介质 | |
CN108710681B (zh) | 文件获取方法、装置、设备及存储介质 | |
US11689372B2 (en) | Secure, energy-efficient public blockchain | |
CN110784495B (zh) | 基于区块链的大数据集群系统的发现与配置信息管理方法 | |
CN112800129B (zh) | 区块状态更新方法、装置、系统和电子设备 | |
CN110557452B (zh) | 区块链的节点管理方法、装置、存储介质和计算机设备 | |
CN110704464B (zh) | 一种分叉问题的处理方法及装置 | |
WO2016155492A1 (zh) | 一种数据库的远程数据同步方法和装置 | |
CN111104460A (zh) | 一种区块链共识方法、系统、电子设备、存储介质 | |
CN114048517A (zh) | 区块链的双通道共识系统和方法、计算机可读存储介质 | |
CN111899019A (zh) | 一种黑名单多方交叉验证和共享的方法及系统 | |
CN113326165A (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112835605B (zh) | 区块链版本灰度升级验证方法、装置及系统 | |
CN111444206B (zh) | 一种同步处理方法、装置、设备及介质 | |
CN113094400A (zh) | 一种数据溯源方法、系统及装置 | |
US20220343323A1 (en) | Method and apparatus maintaining private data with consortium blockchain | |
García-Pérez et al. | Federated byzantine quorum systems (extended version) | |
CN115796861B (zh) | 一种区块链上跨链交易方法、系统、设备及存储介质 | |
CN112465516B (zh) | 基于区块链网络的设备管理方法,相关设备及存储介质 |
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 |