CN109300036A - 区块链网络的分叉回归方法和装置 - Google Patents
区块链网络的分叉回归方法和装置 Download PDFInfo
- Publication number
- CN109300036A CN109300036A CN201811073870.6A CN201811073870A CN109300036A CN 109300036 A CN109300036 A CN 109300036A CN 201811073870 A CN201811073870 A CN 201811073870A CN 109300036 A CN109300036 A CN 109300036A
- Authority
- CN
- China
- Prior art keywords
- block
- state variable
- transaction
- bifurcated
- snapshot
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提出一种区块链网络的分叉回归方法和装置。该方法包括:在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识;根据所述起点区块的标识查找所述起点区块的快照信息;利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。本发明实施例通过对区块中状态变量进行快照得到快照信息,能够支持快速的分叉回归,对交易上链速度有极大的提升作用。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种区块链网络的分叉回归方法和装置。
背景技术
随着区块链技术的快速发展,对区块链的交易验证速度要求越来越高。从区块链历史发展来看,比特币打包7-9个交易每秒(TPS,Transaction Per Second)。作为第二代公链的以太坊,性能在35TPS左右。提升交易上链速度的关键是出块速度。在不考虑硬件限制的情况下,出块的时间主要在于共识速度,以及分叉的回归速度。而且越快的共识,越无法单方面无限的提升出块速度。一定程度之后,会受限制于分叉的回归速度。
目前比特币使用撤销(undo)日志进行分叉回归。以太坊使用梅克尔帕特里夏树(MPT,Merkle Patricia Tree)树进行状态存储,MPT树的状态只能串行修改,交易速度受限,无法实现快速回归。
发明内容
本发明实施例提供一种区块链网络的分叉回归方法和装置,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种区块链网络的分叉回归方法,包括:
在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识;
根据所述起点区块的标识查找所述起点区块的快照信息;
利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。
结合第一方面,本发明实施例在第一方面的第一种实现方式中,还包括:
在签发区块时,将需要提交的各交易的状态变量保存到键值数据库中;
对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息;
建立所签发的区块的标识与其快照信息之间的映射关系。
结合第一方面的第一种实现方式,本发明实施例在第一方面的第二种实现方式中,对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息,还包括:
判断所述交易的状态变量是否发生变化;
如果所述交易的状态变量发生变化,则在所签发的区块的快照信息中保存所述交易的变化后的状态变量;
如果所述交易的状态变量未发生变化,则在所签发的区块的快照信息中保存所述交易的未发生变化的状态变量的索引,所述索引为所述交易的状态变量在键值数据库中的存储地址。
结合第一方面或其任意一种实现方式,本发明实施例在第一方面的第三种实现方式中,还包括:
获取交易的空间标识;
将所述交易加入所述空间标识对应的交易处理队列。
结合第一方面的第三种实现方式,本发明实施例在第一方面的第四种实现方式中,还包括:
在执行所述交易时,如果需要对不同交易处理队列的状态变量进行一致性修改,则向需要一致性修改的各交易处理队列发起数据存储的准备请求;
如果收到需要一致性修改的所有交易处理队列回复的准备就绪的响应,则允许对所述所有交易处理队列的状态变量进行一致性修改;
如果收到任意一个交易处理队列回复的未就绪的响应,则终止对需要一致性修改的所有交易处理队列的状态变量进行修改。
结合第一方面的第三种实现方式,本发明实施例在第一方面的第五种实现方式中,还包括:
在执行所述交易之后,如果所述交易的状态变量发生变化,则将所述交易的变化后的状态变量保存到所述空间标识对应的交易处理队列中。
第二方面,本发明实施例提供了一种区块链网络的分叉回归装置,包括:
分叉起点获取模块,用于在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识;
快照信息查找模块,用于根据所述起点区块的标识查找所述起点区块的快照信息;
回归模块,用于利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。
结合第二方面,本发明实施例在第二方面的第一种实现方式中,还包括:
保存模块,用于在签发区块时,将需要提交的各交易的状态变量保存到键值数据库中;
快照模块,用于对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息;
映射模块,用于建立所签发的区块的标识与其快照信息之间的映射关系。
结合第二方面的第一种实现方式,本发明实施例在第二方面的第二种实现方式中,所述快照模块还用于:判断所述交易的状态变量是否发生变化;如果所述交易的状态变量发生变化,则在所签发的区块的快照信息中保存所述交易的变化后的状态变量;如果所述交易的状态变量未发生变化,则在所签发的区块的快照信息中保存所述交易的未发生变化的状态变量的索引,所述索引为所述交易的状态变量在键值数据库中的存储地址。
结合第二方面或其任意一种实现方式,本发明实施例在第二方面的第三种实现方式中,还包括:
空间标识获取模块,用于获取交易的空间标识;
第一交易处理模块,用于将所述交易加入所述空间标识对应的交易处理队列。
结合第二方面的第三种实现方式,本发明实施例在第二方面的第四种实现方式中,还包括:
准备模块,用于在执行所述交易时,如果需要对不同交易处理队列的状态变量进行一致性修改,则向需要一致性修改的各交易处理队列发起数据存储的准备请求;
一致性修改模块,用于如果收到需要一致性修改的所有交易处理队列回复的准备就绪的响应,则允许对所述所有交易处理队列的状态变量进行一致性修改;
终止修改模块,用于如果收到任意一个交易处理队列回复的未就绪的响应,则终止对需要一致性修改的所有交易处理队列的状态变量进行修改。
结合第二方面的第三种实现方式,本发明实施例在第二方面的第五种实现方式中,还包括:
第二交易处理模块,用于在执行所述交易之后,如果所述交易的状态变量发生变化,则将所述交易的变化后的状态变量保存到所述空间标识对应的交易处理队列中。
第三方面,本发明实施例提供了一种区块链网络的分叉回归装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储区块链网络的分叉回归装置所用的计算机软件指令,其包括用于执行上述方法所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:本发明实施例通过对区块中状态变量进行快照得到快照信息,能够支持快速的分叉回归,对交易上链速度有极大的提升作用。
上述技术方案中的另一个技术方案具有如下优点或有益效果:通过空间标识将交易划分到不同的空间,可以并行执行交易,进一步提升交易执行速度和上链速度。此外,通过一致性保证模块可以保证交易的状态数据的准确性。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1示出根据本发明实施例的区块链网络的分叉回归方法的流程图。
图2示出根据本发明实施例的区块链网络的分叉回归方法的流程图。
图3示出根据本发明实施例的区块链网络的分叉回归方法的流程图。
图4示出根据本发明实施例的区块链网络的分叉回归方法的一种应用示例的示意图。
图5示出根据本发明实施例的区块链网络的分叉回归方法中快照的示意图。
图6a和图6b示出根据本发明实施例的区块链网络的分叉回归方法中二阶段提交的示意图。
图7示出根据本发明实施例的区块链网络的分叉回归方法中分叉回归的流程图。
图8示出根据本发明实施例的区块链网络的分叉回归装置的结构框图。
图9示出根据本发明实施例的区块链网络的分叉回归装置的结构框图。
图10示出根据本发明实施例的区块链网络的分叉回归装置的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本发明实施例的区块链网络的分叉回归方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤S11、在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识。
步骤S12、根据所述起点区块的标识查找所述起点区块的快照信息。
步骤S13、利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。
在一个示例中,在区块链网络中,可以采用委托权益证明(DPoS,Delegated Proofof Stake)等共识机制选举出多个候选区块生产节点。通过不同的区块生产节点轮流出块。在区块生产节点切换(或称为轮值)时,容易产生分叉。如果区块生产节点检测到自己生产的区块处于区块链网络的分叉链上,可以进一步确定出从区块链网络的主干链上开始分叉的起点区块的标识。每个区块生产节点在签发区块的阶段可以为自己生产的区块生成对应的快照信息,并保存区块的标识与该区块的快照信息的映射关系。因此,根据起点区块的标识可以找到起点区块的快照信息。然后,可以将区块生产节点所签发的当前区块中包括的状态变量回归到起点区块的状态变量。
在一种实现方式中,如图2所示,该方法还包括:
步骤S21、在签发区块时,将需要提交的各交易的状态变量保存到键值(KV,Key-Value)数据库中。
步骤S22、对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息。
步骤S23、建立所签发的区块的标识与其快照信息之间的映射关系。
在一个示例中,区块生产节点在签发区块时,可以将需要提交的各交易的状态变量统一写入键值数据库中。每个状态变量在键值数据库中具有对应索引,该索引为状态变量在数据库中的存储地址。在写入时,对各交易的状态变量进行快照。例如,采用写时复制的方式,对各交易的状态变量进行快照,得到对应的快照信息。
在一种实现方式,采用写时复制的方式,步骤S22还包括:判断所述交易的状态变量是否发生变化。如果所述交易的状态变量发生变化,则在所签发的区块的快照信息中保存所述交易的变化后的状态变量。如果所述交易的状态变量未发生变化,则在所签发的区块的快照信息中保存所述交易的未发生变化的状态变量的索引,所述索引为所述交易的状态变量在键值数据库中的存储地址。
在一个示例中,如果执行某次交易之后,某个状态变量发生变化可以包括该状态变量的值发生了变化。该状态变量的每个值具有一个版本号,可以采用交易标识来表示每个值的版本号。通过一个二元组来记录所执行的交易的交易标识及其对应的执行后的状态变量的值。
在一种实现方式中,如图3所示,该方法还包括:
步骤S31、获取交易的空间标识。
步骤S32、将所述交易加入所述空间标识对应的交易处理队列。
在一个示例中,在区块链网络中划分出多个空间,每个空间具有对应的空间标识。每个空间具有对应的交易处理队列。每个交易处理队列具有对应的交易处理引擎。收到一个交易例如智能合约的交易后,可以先判断交易的空间标识,再将该交易存放到对应的交易处理队列。这样,可以并行处理不同空间的交易,从而提高交易处理的速度。
在一种实现方式中,如图3所示,该方法还包括:
步骤S33、在执行所述交易时,如果需要对不同交易处理队列的状态变量进行一致性修改,则向需要一致性修改的各交易处理队列发起数据存储的准备请求。
步骤S34、如果收到需要一致性修改的所有交易处理队列回复的准备就绪的响应,则允许对所述所有交易处理队列的状态变量进行一致性修改。
步骤S35、如果收到任意一个交易处理队列回复的未就绪的响应,则终止对需要一致性修改的所有交易处理队列的状态变量进行修改。
在一个示例中,如果执行某个交易时需要从账户A向账户B转账一定金额XXX。账户A和账户B分别位于不同空间的交易处理队列。可以向账户A和账户B对应的空间的交易处理队列分别发起数据存储的准备请求。如果这两个空间的队列均返回准备就绪的响应,可以对这个两个空间的账户A和账户B对应的状态变量进行一致性修改。将账户A减少金额XXX,将账户B增加金额XXX。如果账户A或账户B对应空间的队列中的至少一个返回未就绪的响应,可以终止对这个两个空间的账户A和账户B对应的状态变量进行修改。
在一种实现方式中,该方法还包括:在执行所述交易之后,如果所述交易的状态变量发生变化,则将所述交易的变化后的状态变量保存到所述空间标识对应的交易处理队列中。
如果执行某个交易之后,该交易的某些状态变量发生变化,则可以将该交易变化的状态变量保存到空间标识对应的交易处理队列。例如保存变化后的状态变量与交易标识的映射关系。
在一种应用示例中,在一般的KV数据库引擎的基础上,结合快照技术以及空间隔离技术,实现一种快速实现分叉回归的技术。键值数据库引擎是区块链网络中常用的本地存储引擎,例如LevelDB是比特币、以太坊的存储引擎。快照技术可以实现快速回归。快照技术的实现方式可以包括:在某个检查点保存一份完整的数据副本,以便于在数据出现不一致时进行快速的回滚和重做数据。空间隔离技术可以包括:在物理存储上,将不同业务逻辑的快照以及数据进行隔离。例如将同一个区块链网络,不同合约的数据放在不同的磁盘上进行保存。这样不同的合约能够并行的进行读写,以加快合约执行和上链的速度。
本发明实施例可以包括以下模块:
(一)空间(namespace)管理模块
交易是区块链网络的核心操作。为了加速交易的确认和上链速度,可以为交易设置一个空间标识。区块链网络的交易处理模块根据交易的空间标识,将其分发到不同的空间进行处理。每个空间可以分别具有快照管理模块以及存储模块的实例。这样,不同空间下的交易,可以并行的进行确认和上链。
参见图4,利用不同空间处理交易的流程如下:
交易处理模块收到区块链网络的节点发起的交易,判断交易的空间标识,将其存放到对应的交易处理队列,交易处理队列以空间标识为索引。
交易处理队列有对应的交易处理引擎,例如针对UTXO(Unspent TransactionOutput,未花费的交易输出)模型进行处理的交易处理引擎;或者针对账户模型进行处理的交易处理引擎。通过存储引擎,获取交易对应的账户余额信息,进行相应的余额修改;或者执行交易对应的智能合约,将智能合约原有的状态变量进行转换,获得新的状态变量。一次交易之后,整个空间下所有的状态变量,可以由一个向量可以简单表示如下:S:={[address0,address1…],[variable0,variable1,…]}。
其中addressi表示第i个账户的余额,variablei表示第i个变量的值。因此执行一次交易之后,在整个区块链网络中发生了以下变化:S->S’。其中,S’是变化后的状态向量。交易处理引擎将变化之后的状态向量,按照空间标识,找到对应的存储模块,将其存储到对应的空间里(交易处理队列)。
(二)存储管理模块
在本示例中,存储管理模块并不是键值存储引擎,而是针对变化的变量进行存储和查询的一个内存结构。
存储模块在接收到状态写入(或者更新)时,并不是实际写入了键值数据库,而是先放在内存中进行缓存。例如,对于之前不存在的变量或者地址操作,可以称之为写入;对于已经存在的变量操作,可以称之为更新。等待区块签发时,进行统一的提交。这个时候,每个状态变量,可能会有多个值。每个值有一个版本号。版本号使用交易ID表示,分别记录着对应的变量的值的变化过程。读取一个变量时,可以优先从内存读取。如果发现内存中没有,再从键值数据库读取,并且将读取结果进行缓存。
因此,存储管理模块这个内存结构的示例如下:
k:[(txid0,v0),(txid1,v1),…]
在实际实现中,可以通过一个映射(map)进行存储。其中,map的值(value)可以是一个数组。数组的每个元素可以是一个二元组,用于记录交易ID与执行对应交易之后的状态变量的最新的值。
(三)快照管理模块
通常的快照技术包括写时复制(COW,copy-on-write)和写重定向(ROW,Redirect-On-Write)。写时复制可以在写入时,将原来的数据复制到一个新的位置,然后将快照索引指向这个新的位置。写重定向可以写入数据时,直接写在新的位置,然后修改元数据索引的指针,让其指向新的位置。
如果频繁出现分叉,需要重新读取快照,恢复空间中包括的交易的状态变量,可以采用写时复制的方法。参见图4,每次签发区块,可以按照区块为粒度,将这个区块的所有交易的状态变量变更的最终结果进行一次性写入,然后再实际的设置检查点,创建快照信息。也就是说,在签发区块时,将所有的状态进行统一存储,生成所签发的区块的快照信息。
如图5所示,元数据(Meta)中保存状态变量的最新的值。如果状态变量例如A没有变化,快照信息中直接存储这个变量A前一个数据的索引A=A’即可。如果状态变量A发生了变化,例如从1变成2,可以保存变化后的状态变量的值,即A=2。
每个快照,分配一个唯一的ID进行表示。并且将快照跟区块的ID进行映射,便于进行分叉回归时,能够快速的索引到需要回滚到的区块对应的快照,以此起点进行主干链上的区块的交易确认。
(四)一致性保证模块
在单个空间下,可以通过一个键值数据库自身的事务机制,保证写入的一致性。参见图4,如果发生了一个空间下的账户往另外一个空间下的账户转账的话。这个时候,需要在2个键值数据库引擎(例如两个不同的空间标识对应的键值数据库引擎)内保证数据写入的一致性。一致性保证模块可以保证写入的一致性。由于每个区块,关联了一个对应的快照。因此,如果对2个快照进行同时操作时,采用二阶段(2PC,Two phase Commit)提交进行解决。
如图6a和图6b所示,二阶段提交流程的示例可以包括:
在阶段一,数据库的协调者C给不同空间P1、P2的存储模块发起数据存储的准备请求,询问是否允许提交(commit)。当所有空间的交易处理队列都回复准备就绪(yes)时,在阶段二执行真正的提交(commit)操作。当任意一个空间的交易处理队列回复未就绪(no)时,在阶段二终止(abort)提交操作。
如图7所示,为分叉回归流程图。其中,S表示当前区块对应的状态变量的快照信息。每次签发新块,S都会被更新,并且会产生新的快照信息。分叉时,可以直接按照信息当前路径往前继续更新状态,无需进行额外的操作。例如图7中,在S1发生了分叉,到达S3时,发生了回归。这个时候只需要简单的丢弃S2‘的快照信息即可(例如S3回到S1的状态变量)。这样,可以实现快速的分叉回归。
本发明实施例通过对区块中状态变量进行快照得到快照信息,提供了一种新的数据结构,能够支持快速的分叉回归,对交易上链速度有极大的提升作用。此外,通过空间标识将交易划分到不同的空间,可以并行执行交易,进一步提升交易执行速度和上链速度。此外,通过一致性保证模块可以保证交易的状态数据的准确性。
例如,在百度超级链采用DPOS的改进算法,不同区块生产节点(也称为矿工节点)轮流出块,出块速度极快。在切换矿工节点的时间附近,分叉回归的速度决定着交易上链的速度。在百度超级链的应用本发明实施例的分叉回归方法,极大的提升了智能合约的执行速度。
图8示出根据本发明实施例的区块链网络的分叉回归装置的结构框图。如图8所示,该装置可以包括:
分叉起点获取模块81,用于在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识;
快照信息查找模块82,用于根据所述起点区块的标识查找所述起点区块的快照信息;
回归模块83,用于利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。
在一种实现方式中,如图9所示,该装置还包括:
保存模块91,用于在签发区块时,将需要提交的各交易的状态变量保存到键值数据库中;
快照模块92,用于对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息;
映射模块93,用于建立所签发的区块的标识与其快照信息之间的映射关系。
在一种实现方式中,所述快照模块92还用于:判断所述交易的状态变量是否发生变化;如果所述交易的状态变量发生变化,则在所签发的区块的快照信息中保存所述交易的变化后的状态变量;如果所述交易的状态变量未发生变化,则在所签发的区块的快照信息中保存所述交易的未发生变化的状态变量的索引,所述索引为所述交易的状态变量在键值数据库中的存储地址。
在一种实现方式中,该装置还包括:
空间标识获取模块94,用于获取交易的空间标识;
第一交易处理模块95,用于将所述交易加入所述空间标识对应的交易处理队列。
在一种实现方式中,该装置还包括:
准备模块96,用于在执行所述交易时,如果需要对不同交易处理队列的状态变量进行一致性修改,则向需要一致性修改的各交易处理队列发起数据存储的准备请求;
一致性修改模块97,用于如果收到需要一致性修改的所有交易处理队列回复的准备就绪的响应,则允许对所述所有交易处理队列的状态变量进行一致性修改;
终止修改模块98,用于如果收到任意一个交易处理队列回复的未就绪的响应,则终止对需要一致性修改的所有交易处理队列的状态变量进行修改。
在一种实现方式中,该装置还包括:
第二交易处理模块99,用于在执行所述交易之后,如果所述交易的状态变量发生变化,则将所述交易的变化后的状态变量保存到所述空间标识对应的交易处理队列中。
本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图10示出根据本发明实施例的区块链网络的分叉回归装置的结构框图。如图10所示,该装置包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。所述处理器920执行所述计算机程序时实现上述实施例中的区块链网络的分叉回归方法。所述存储器910和处理器920的数量可以为一个或多个。
该装置还包括:
通信接口930,用于与外界设备进行通信,进行数据交互传输。
存储器910可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent)总线或扩展工业标准体系结构(EISA,Extended Industry StandardComponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述实施例中任一所述的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种区块链网络的分叉回归方法,其特征在于,包括:
在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识;
根据所述起点区块的标识查找所述起点区块的快照信息;
利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。
2.根据权利要求1所述的方法,其特征在于,还包括:
在签发区块时,将需要提交的各交易的状态变量保存到键值数据库中;
对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息;
建立所签发的区块的标识与其快照信息之间的映射关系。
3.根据权利要求2所述的方法,其特征在于,对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息,还包括:
判断所述交易的状态变量是否发生变化;
如果所述交易的状态变量发生变化,则在所签发的区块的快照信息中保存所述交易的变化后的状态变量;
如果所述交易的状态变量未发生变化,则在所签发的区块的快照信息中保存所述交易的未发生变化的状态变量的索引,所述索引为所述交易的状态变量在键值数据库中的存储地址。
4.根据权利要求1至3中任一项所述的方法,其特征在于,还包括:
获取交易的空间标识;
将所述交易加入所述空间标识对应的交易处理队列。
5.根据权利要求4所述的方法,其特征在于,还包括:
在执行所述交易时,如果需要对不同交易处理队列的状态变量进行一致性修改,则向需要一致性修改的各交易处理队列发起数据存储的准备请求;
如果收到需要一致性修改的所有交易处理队列回复的准备就绪的响应,则允许对所述所有交易处理队列的状态变量进行一致性修改;
如果收到任意一个交易处理队列回复的未就绪的响应,则终止对需要一致性修改的所有交易处理队列的状态变量进行修改。
6.根据权利要求4所述的方法,其特征在于,还包括:
在执行所述交易之后,如果所述交易的状态变量发生变化,则将所述交易的变化后的状态变量保存到所述空间标识对应的交易处理队列中。
7.一种区块链网络的分叉回归装置,其特征在于,包括:
分叉起点获取模块,用于在检测到当前区块处于区块链网络的分叉链上的情况下,获取所述分叉链从所述区块链网络的主干链上开始分叉的起点区块的标识;
快照信息查找模块,用于根据所述起点区块的标识查找所述起点区块的快照信息;
回归模块,用于利用所述起点区块的快照信息,将所述当前区块中的状态变量回归到所述起点区块的状态变量。
8.根据权利要求7所述的装置,其特征在于,还包括:
保存模块,用于在签发区块时,将需要提交的各交易的状态变量保存到键值数据库中;
快照模块,用于对需要提交的各交易的状态变量进行快照,得到所签发的区块的快照信息;
映射模块,用于建立所签发的区块的标识与其快照信息之间的映射关系。
9.根据权利要求8所述的装置,其特征在于,所述快照模块还用于:判断所述交易的状态变量是否发生变化;如果所述交易的状态变量发生变化,则在所签发的区块的快照信息中保存所述交易的变化后的状态变量;如果所述交易的状态变量未发生变化,则在所签发的区块的快照信息中保存所述交易的未发生变化的状态变量的索引,所述索引为所述交易的状态变量在键值数据库中的存储地址。
10.根据权利要求7至9中任一项所述的装置,其特征在于,还包括:
空间标识获取模块,用于获取交易的空间标识;
第一交易处理模块,用于将所述交易加入所述空间标识对应的交易处理队列。
11.根据权利要求10所述的装置,其特征在于,还包括:
准备模块,用于在执行所述交易时,如果需要对不同交易处理队列的状态变量进行一致性修改,则向需要一致性修改的各交易处理队列发起数据存储的准备请求;
一致性修改模块,用于如果收到需要一致性修改的所有交易处理队列回复的准备就绪的响应,则允许对所述所有交易处理队列的状态变量进行一致性修改;
终止修改模块,用于如果收到任意一个交易处理队列回复的未就绪的响应,则终止对需要一致性修改的所有交易处理队列的状态变量进行修改。
12.根据权利要求11所述的装置,其特征在于,还包括:
第二交易处理模块,用于在执行所述交易之后,如果所述交易的状态变量发生变化,则将所述交易的变化后的状态变量保存到所述空间标识对应的交易处理队列中。
13.一种区块链网络的分叉回归装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至6中任一项所述的方法。
14.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811073870.6A CN109300036B (zh) | 2018-09-14 | 2018-09-14 | 区块链网络的分叉回归方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811073870.6A CN109300036B (zh) | 2018-09-14 | 2018-09-14 | 区块链网络的分叉回归方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109300036A true CN109300036A (zh) | 2019-02-01 |
CN109300036B CN109300036B (zh) | 2020-08-14 |
Family
ID=65163084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811073870.6A Active CN109300036B (zh) | 2018-09-14 | 2018-09-14 | 区块链网络的分叉回归方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109300036B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109995585A (zh) * | 2019-03-22 | 2019-07-09 | 杭州复杂美科技有限公司 | 一种异常处理方法、设备和存储介质 |
CN110517124A (zh) * | 2019-07-09 | 2019-11-29 | 咪咕文化科技有限公司 | 交易控制方法及装置、插件装置、计算机可读存储介质 |
CN110706101A (zh) * | 2019-08-30 | 2020-01-17 | 阿里巴巴集团控股有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110942302A (zh) * | 2019-11-26 | 2020-03-31 | 深圳前海微众银行股份有限公司 | 一种区块链凭证撤销、验证方法、签发节点、验证节点 |
CN111226206A (zh) * | 2019-11-29 | 2020-06-02 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
CN111274318A (zh) * | 2020-01-16 | 2020-06-12 | 杭州趣链科技有限公司 | 一种区块链状态数据的存储、回滚方法、设备和存储介质 |
CN111316256A (zh) * | 2019-11-29 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
CN111339191A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN112001799A (zh) * | 2020-10-28 | 2020-11-27 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行智能合约的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016015041A1 (en) * | 2014-07-25 | 2016-01-28 | Blockchain Technologies Corporation | System and method for creating a multi-branched blockchain with configurable protocol rules |
CN106779975A (zh) * | 2017-01-11 | 2017-05-31 | 合肥工业大学 | 基于区块链的信誉信息的防篡改方法 |
CN106991607A (zh) * | 2017-03-29 | 2017-07-28 | 杭州秘猿科技有限公司 | 一种基于区块链账户模型的无序交易控制方法 |
US20170338963A1 (en) * | 2016-04-21 | 2017-11-23 | Protoblock, Inc. | Decentralized exchanges in a distributed autonomous platform |
CN107507006A (zh) * | 2017-08-11 | 2017-12-22 | 杭州秘猿科技有限公司 | 一种基于许可链的共识分叉处理方法 |
CN107729471A (zh) * | 2017-10-13 | 2018-02-23 | 上海策赢网络科技有限公司 | 一种区块链及其生成方法与设备 |
-
2018
- 2018-09-14 CN CN201811073870.6A patent/CN109300036B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016015041A1 (en) * | 2014-07-25 | 2016-01-28 | Blockchain Technologies Corporation | System and method for creating a multi-branched blockchain with configurable protocol rules |
US20170338963A1 (en) * | 2016-04-21 | 2017-11-23 | Protoblock, Inc. | Decentralized exchanges in a distributed autonomous platform |
CN106779975A (zh) * | 2017-01-11 | 2017-05-31 | 合肥工业大学 | 基于区块链的信誉信息的防篡改方法 |
CN106991607A (zh) * | 2017-03-29 | 2017-07-28 | 杭州秘猿科技有限公司 | 一种基于区块链账户模型的无序交易控制方法 |
CN107507006A (zh) * | 2017-08-11 | 2017-12-22 | 杭州秘猿科技有限公司 | 一种基于许可链的共识分叉处理方法 |
CN107729471A (zh) * | 2017-10-13 | 2018-02-23 | 上海策赢网络科技有限公司 | 一种区块链及其生成方法与设备 |
Non-Patent Citations (2)
Title |
---|
张明德等: ""基于区块链技术的比特币安全性研究"", 《计算机工程与应用》 * |
王健: ""比特币区块链分叉研究"", 《通信技术》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109995585A (zh) * | 2019-03-22 | 2019-07-09 | 杭州复杂美科技有限公司 | 一种异常处理方法、设备和存储介质 |
CN110517124A (zh) * | 2019-07-09 | 2019-11-29 | 咪咕文化科技有限公司 | 交易控制方法及装置、插件装置、计算机可读存储介质 |
CN110706101A (zh) * | 2019-08-30 | 2020-01-17 | 阿里巴巴集团控股有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110942302B (zh) * | 2019-11-26 | 2024-04-02 | 深圳前海微众银行股份有限公司 | 一种区块链凭证撤销、验证方法、签发节点、验证节点 |
CN110942302A (zh) * | 2019-11-26 | 2020-03-31 | 深圳前海微众银行股份有限公司 | 一种区块链凭证撤销、验证方法、签发节点、验证节点 |
CN111226206A (zh) * | 2019-11-29 | 2020-06-02 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
CN111316256A (zh) * | 2019-11-29 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
EP3769219A4 (en) * | 2019-11-29 | 2021-04-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | TAKING INSTANT BLOCKCHAIN DATA COPIES |
AU2019380380A1 (en) * | 2019-11-29 | 2021-06-17 | Alipay (Hangzhou) Information Technology Co., Ltd. | Taking snapshots of blockchain data |
US11194792B2 (en) | 2019-11-29 | 2021-12-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Taking snapshots of blockchain data |
AU2019380380B2 (en) * | 2019-11-29 | 2022-03-10 | Alipay (Hangzhou) Information Technology Co., Ltd. | Taking snapshots of blockchain data |
CN111226206B (zh) * | 2019-11-29 | 2023-10-13 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
CN111274318A (zh) * | 2020-01-16 | 2020-06-12 | 杭州趣链科技有限公司 | 一种区块链状态数据的存储、回滚方法、设备和存储介质 |
CN111274318B (zh) * | 2020-01-16 | 2023-04-25 | 杭州趣链科技有限公司 | 一种区块链状态数据的存储、回滚方法、设备和存储介质 |
CN111339191A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN111339191B (zh) * | 2020-02-20 | 2023-05-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
EP3869339A1 (en) * | 2020-02-20 | 2021-08-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Data storage method and apparatus for blockchain, device, and medium |
CN112950378A (zh) * | 2020-10-28 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行智能合约的方法和装置 |
CN112950378B (zh) * | 2020-10-28 | 2022-06-07 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行智能合约的方法和装置 |
CN112001799A (zh) * | 2020-10-28 | 2020-11-27 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行智能合约的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109300036B (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109300036A (zh) | 区块链网络的分叉回归方法和装置 | |
WO2021017435A1 (zh) | 区块链状态数据存储方法及装置、电子设备 | |
CN106034160B (zh) | 分布式计算系统和方法 | |
CN110263014A (zh) | 面向时序型数据的区块链存储系统及方法 | |
CN110020542B (zh) | 数据读写方法及装置、电子设备 | |
TWI719797B (zh) | 區塊鏈中智能合約的儲存、執行方法及裝置和電子設備 | |
CN108446976B (zh) | 一种公积金转移方法、计算机可读存储介质及终端设备 | |
WO2011108695A1 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
CN106331153B (zh) | 一种业务请求的过滤方法、装置及系统 | |
JP5807777B2 (ja) | トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム | |
CN109669709A (zh) | 一种区块链升级的数据迁移方法及数据迁移系统 | |
WO2023160077A1 (zh) | 区块链数据恢复方法及装置、电子设备 | |
WO2023231345A1 (zh) | 对多个交易进行分组的方法和区块链节点 | |
EP2404250A1 (en) | Merging records from different databases | |
WO2021248917A1 (zh) | 一种基于混合链的数据中心网络故障诊断和自动配置方法 | |
JP6877435B2 (ja) | データベース動作方法及び装置 | |
US10599614B1 (en) | Intersection-based dynamic blocking | |
CN109739684A (zh) | 基于向量时钟的分布式键值数据库的副本修复方法与装置 | |
CN109325011A (zh) | 基于区块链的数据存储、处理、分享方法及系统 | |
CN102193988A (zh) | 一种图形数据库节点数据的检索方法及系统 | |
CN114564500A (zh) | 在区块链系统中实现结构化数据存储和查询的方法和系统 | |
CN109446258A (zh) | 一种分布式数据存储方法及系统 | |
CN114022148B (zh) | 基于区块链的交易冲突检测方法、装置、设备和存储介质 | |
CN115617770B (zh) | 一种用于车辆状态信号数据存储的数据磁盘存储管理方法 | |
GB2493963A (en) | Database record repair |
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 |