CN112650735B - 联盟链的丢失区块确定方法、装置、设备及存储介质 - Google Patents
联盟链的丢失区块确定方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112650735B CN112650735B CN202011606706.4A CN202011606706A CN112650735B CN 112650735 B CN112650735 B CN 112650735B CN 202011606706 A CN202011606706 A CN 202011606706A CN 112650735 B CN112650735 B CN 112650735B
- Authority
- CN
- China
- Prior art keywords
- block
- hash value
- lost
- target
- currently selected
- 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
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
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
Abstract
本申请提供一种联盟链的丢失区块的确定方法、装置、设备及存储介质,包括:获取正在监听的联盟链事件中待写入的当前区块的prehash值;查询区块存储数据库中目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同;若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。本申请实时性强、性能高,提升了丢失区块恢复的速率和准确率。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种联盟链的丢失区块确定方法、装置、计算机设备及存储介质。
背景技术
联盟链,只针对特定某个群体的成员和有限的第三方,内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过问记账过程,其他第三方可以通过该联盟链开放的应用程序接口(ApplicationProgramming Interface,API)进行限定查询。为了获得更好的性能,联盟链对于共识或验证节点的配置和网络环境有一定要求。有了准入机制,可以使得交易性能更容易提高,避免由参次不齐的参与者产生的一些问题。
联盟链链事件监听,是软件开发工具包(Software Development Kit,SDK)客户端以一种长连接的方式监听联盟链网络发出的联盟链事件,当业务系统监听到事件时以此进行业务逻辑上的处理,由于网络的原因、或者SDK客户端本身的原因会导致区块事件丢失,现有技术中,采用定时轮询从联盟链网络中查询区块数据再进行业务逻辑上的处理并记录到数据库的方式实时性低、性能低。
发明内容
本申请提供一种联盟链的丢失区块确定方法、装置、计算机设备及存储介质,通过匹配待写入的当前区块的prehash值和数据库中目标区块的hash值,从而确定是否存在丢失区块,并在确定存在丢失区块后,快速、准确确定丢失区块,实时性强、性能高,提升了丢失区块恢复的速率和准确率。
根据本申请的一个方面,提供了一种联盟链的丢失区块确定方法,所述方法包括:
获取正在监听的联盟链事件中待写入的当前区块的prehash值;
查询区块存储数据库中目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同,其中,所述目标区块包括所述待更新联盟链上的末位区块;
若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;
将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。
根据本申请的一个方面,提供一种联盟链的丢失区块确定装置,其特征在于,所述装置包括:
获取模块,用于获取正在监听的联盟链事件中待写入的当前区块的prehash值;
查询模块,用于查询区块存储数据库中目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同,其中,所述目标区块包括所述待更新联盟链上的末位区块;
匹配模块,用于若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;
确定模块,用于将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。
根据本申请的一个方面,还提供一种联盟链的丢失区块确定设备,所述设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行如上所述的任一方法的操作。
根据本申请的一个方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行如上所述的任一方法的操作。
本申请中通过匹配待写入的当前区块的prehash值和数据库中目标区块的hash值,从而确定是否存在丢失区块,并在确定存在丢失区块后,快速、准确确定丢失区块,实时性强、性能高,提升了丢失区块恢复的速率和准确率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本申请实施例提供的一种联盟链的丢失区块确定方法的方法流程图;
图2示出本申请实施例中提供的一种联盟链的丢失区块确定方法的流程示例图;
图3示出本申请实施例中提供的丢失区块确定装置的功能模块;
图4示出可被用于实施本申请中所述的各个实施例的示例性系统。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
需要说明的是,本申请实施例方法由于是在计算设备中执行,各计算设备的处理对象均以数据或信息的形式存在,例如时间,实质为时间信息,可以理解的是,后续实施例中若提及尺寸、数量、位置等,均为对应的数据存在,以便电子设备进行处理,具体此处不作赘述。
在本申请一个典型的配置中,终端或可信方等均包括一个或多个处理器,例如,中央处理器(Central Processing Unit,CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(Random Access Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(FlashMemory)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PCM)、可编程随机存取存储器(Programmable Random Access Memory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请所指设备包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备包括但不限于任何一种可与用户进行人机交互(例如通过触摸板进行人机交互)的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如Android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的程序。
当然,本领域技术人员应能理解上述设备仅为举例,其他现有的或今后可能出现的设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
本申请提供了一种联盟链的丢失区块确定方法,所述方法应用于联盟链网络中的节点设备,所述联盟链网络包括多个区块链节点,各个区块链节点之间通过节点设备保持通信,并基于共识机制进行数据更新和共享。所述联盟链网络中,联盟链分类账本中产生区块时(或说区块同步)会发出事件。Fabric是一种多通道的联盟链,可以实现物理上一条链,逻辑上多条链,这是通过通道进行区分的。客户端应用程序可以使用联盟链客户端注册监听器,对前述事件进行监听等。联盟链客户端还可以通过处理传入的区块并查找特定的交易或链代码事件来协助客户端应用程序。根据收到的信息,客户端应用程序可以采取某些操作。在开源区块链分布式账本(Hyperledger Fabric)中,有三种类型的事件监听器:
1、区块监听器,当需要监视添加到联盟链分类账的新区块时,我们使用它。当新区块被提交给节点上的联盟链分类账时,将通知联盟链客户端之后,应用程序可以采取某些行动。
2、交易监听器,当需要监视组织节点上的交易完成时,我们使用它。当新区块被提交给节点上的联盟链分类账时,将通知客户端然后,客户端将检查块以查找已注册的交易标识符。如果找到交易,则将通过交易标识,交易状态和块编号通知回调函数。
3、链码监听器,我们在需要监控将从我们的链代码中发布的事件时使用它。当新块提交到联盟链分类账时,将通知客户端然后,客户端将检查链代码事件名称字段中的已注册链代码模式。
相比于公共区块链,联盟链在效率和灵活性上更有优势,主要体现为以下几点:一是交易成本更便宜。交易只需被几个受信的高算力节点验证就可以了,而无需全网确认;二是节点可以很好地连接,故障可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成交易;三是如果读取权限受到限制,可以提供更好的隐私保护;四是更灵活,如果需要的话,运行私有区块链的共同体或公司可以很容易地修改该区块链的规则,还原交易,修改余额等。
所述联盟链网络可以设置于计算机设备,计算机设备中集成有对应丢失区块确定装置。本申请实施例中,该计算机设备可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本申请实施例中所描述的计算机设备,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(Cloud Computing)的大量计算机或网络服务器构成。
参阅图1,根据本申请一个方面,提供了一种联盟链的丢失区块确定方法,所述方法包括步骤S101、步骤S102、步骤S103以及步骤S104。在步骤S101中,获取正在监听的联盟链事件中待写入的当前区块的prehash值;在步骤S102中,查询区块存储数据库中已更新的目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同;在步骤S103中,若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;在步骤S104中,将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。其中,所述联盟链通过设置对应事件监听器对联盟链上的区块事件等进行监听,若某区块链节点接收到其他节点发送的事件,如更新当前联盟链等,则对应监听器在更新过程中保持对更新节点的监听状态。
具体而言,在步骤S101中,获取正在监听的联盟链事件中待写入的当前区块的prehash值。例如,哈希算法是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个密码,我们不能通过解密哈希来还原原始数据,它是一个单向的加密函数。通过哈希算法,我们能以固定长度保存区块链上区块数据的摘要,计算得到的固定长度字符结果即为该区块的hash值。在区块链中,每个区块都有前一个区块的哈希值(即prehash值),前一个区块被称为当前区块的父块。在区块链中,每个区块都有前一个区块的哈希值。当我们更改当前区块中的任何数据时,区块的哈希值将被更改,这将影响前一个区块,因为它有前一个区块的地址。如果我们要更改当前区块中的数据,当前区块的父块的哈希地址必须更改,但是父块的哈希是不可能更改的,所以区块链被称为不可变的,数据可信的。
哈希值大大提高了数据的安全性。正如我已经提到的,它是一个单向的加密函数。一个加密哈希函数需要具备以下几个关键的特性才能被认为是有用的:1.每个哈希值都是不同的;2.对于相同的消息,总是生成相同的哈希值;3.不可能根据哈希值来决定输入;4.即使对输入的整个哈希值做一个小的更改也会被更改。基于上述特性,区块链中每个区块所交易数据是不同的,每个区块所生成的hash值也不相同,具有标识该区块唯一性的作用。
当区块链节点接收到其他节点发送的待更新区块时,可以基于该待更新区块更新当前节点的区块链的区块。在更新过程完成一个区块的同步后,能够产生一个事件发送至监听器,通过该监听器监听该事件,并获取待写入的当前区块的prehash值,并基于该prehash值判断是否存在区块丢失事件等。对应区块丢失事件可能由于网络的原因、或者SDK客户端本身的原因会导致,如网络重启或者SDK客户端数据丢失等可能存在区块丢失的情形。本方案实施场景为区块链更新过程中Sdk客户端与节点之间的网络中断或者SDK客户端应用程序中断运行等。
在步骤S102中,查询区块存储数据库中已更新的目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同,其中,所述目标区块包括所述待更新联盟链上的末位区块。例如,所述数据库包括区块链外部的数据库(如mysql、oracle等),所述存储数据库是业务系统的数据库,主要记录已接收区块事件中区块数据的hash,节点之间每同步到一个区块,就会将这个区块的完整数据包装起来,以事件的方式分发给监听者(sdk客户端)。所述目标区块包括某区块链节点待更新联盟链上最后一个区块,该目标区块存在对应的hash值。所述目标区块对应联盟链存储于该节点对应的区块存储数据库中,所述区块存储数据库用于存储该节点对应联盟链上共识而产生的链上数据,该链上数据包括对应区块数据和状态数据等,区块中间的数据是因为不同节点之间的交易数据存储然后被广播到所有联盟链节点的共识状态,所以区块数据也是因为共识而产生的数据。通过检测区块更新事件中包含的更新内容中的当前区块以及目标区块是否为相邻区块,可以判断是否存在区块丢失情形,并进一步判断对应丢失区块等。如对比当前区块的prehash值和目标区块的hash值是否相同,若这两个值相同,则确定当前区块为目标区块的下一个区块,可以继续执行区块更新事件。若这两个值不相同,则确定当前区块与目标区块不相邻,存在区块丢失情形,需要确定并同步更新对应丢失区块。
如在一些实施方式中,所述方法还包括步骤S105(未示出),在步骤S105中,若所述当前区块的prehash值与所述目标区块的hash值相同,根据所述当前区块更新所述区块存储数据库。例如,通过检测当前区块的prehash值和目标区块的hash值是否一致,如依次从对应prehash值和hash值的首位字符开始对比,遍历对应prehash值和hash值,若对应prehash值和hash值中所有字符均相同,则确定当前区块的prehash值和目标区块的hash值相同,确定当前不存在丢失区块,直接通过当前区块更新所述区块存储数据库,如根据当前区块的hash值,更新所述区块存储数据库。当然,当前联盟链事件中后续区块也适用于本方案的监听并确定丢失区块的方案,直至联盟链事件中区块更新完毕。
在步骤S103中,若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块。例如,通过检测当前区块的prehash值和目标区块的hash值是否相同,如依次从对应prehash值和hash值的首位字符开始对比,遍历对应prehash值和hash值,若对应prehash值和hash值中存在至少一个字符不相同,则确定当前区块的prehash值和目标区块的hash值不相同,确定当前存在丢失区块,需要确定对应的丢失区块等。在此,我们先确定该区块更新时间的更新内容中与所述目标区块相匹配的匹配区块,从而确定该匹配区块与当前区块之间的区块为丢失区块等。
例如,根据当前区块依次往前选中该联盟链事件对应更新区块中的对应区块,确定选中区块为当前选中区块,该当前选中区块为前一次选中区块的父块,具体可以根据更新区块中的排序依次确定当前选中区块,或者根据前一次选中区块的prehash值,确定与该prehash值相同的hash值的区块为当前选中区块等,如前一次选中区块的prehash值为XXX***1,则根据该prehash值确定对应hash值为XXX***1的区块为当前选中区块,当本次匹配完成后若还未确定对应匹配区块,则根据当前选中区块的prehash值如XXX**2*等,确定下一次匹配时对应hash值为XXX**2*的区块为当前选中区块等。在此,当前选中区块的prehash值与目标区块的hash值的匹配过程与上述当前区块的prehash值与目标区块的hash值的匹配过程相同,不再赘述。
在步骤S104中,将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。例如,若确定对应匹配区块,如当前选中区块的prehash值与目标区块的hash值相同,则确定当前选中区块为匹配区块,则目标区块对应的下一个区块应与匹配区块同步,则从该目标区块至所述当前区块对应同步区块之间的区块均为丢失区块,换言之,从所述当前区块的前一个区块至所述匹配区块均为对应丢失区块等。如假设当前区块为当前链上的第N个区块,目标区块为同步链上的第K个区块,则确定从链上第M、L个区块为对应丢失区块。或者,根据遍历的prehash值,从所述当前区块至所述匹配区块的前一个区块中所有区块的prehash值确定当前区块的前一个区块至所述匹配区块的多个hash值,从而确定该多个hash值对应区块为丢失区块。
在一些实施方式中,所述方法还包括步骤S106(未示出),在步骤S106中,将所述丢失区块的hash值更新至所述区块存储数据库中。例如,确定对应丢失区块后,进行丢失区块对应业务逻辑处理,依次逐个处理完成后将对应丢失区块的hash值依次存储至区块存储数据库,如确定第M、L个区块为对应的丢失区块,则根据该对应区块顺序依次处理第L、M个区块对应的业务,当处理完第L个区块的业务后,将第L个区块的hash值同步至数据库中,再处理第M个区块对应的业务,当处理完第M个区块的业务后,将第M个区块的hash值更新至数据库中;或者,根据目标区块的hash值,确定与该hash值匹配的prehash值对应的子块,将该子块同步至数据库中,后续依次确定最新更新区块的子块,从而将丢失区块同步至数据库中。通过丢失区块的hash值更新所述区块存储数据库中存储的区块hash值等。
在一些实施方式中,所述方法还包括步骤S107(未示出),在步骤S107中,在所述当前选中区块与所述目标区块的匹配过程中,将所述当前选中区块存储至数据栈;其中,在步骤S106中,从所述数据栈中将所述丢失区块同步至所述区块存储数据库中。例如,所述数据栈在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。数据栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。在确定存在丢失区块后,在对应当前选中区块和目标区块的匹配过程中,将对应当前选中区块存储至数据栈,如每次选中对应当前选中区块后,即将该当前选中区块存储至对应数据栈。当确定对应匹配过区块后,可以确定当前存储于数据栈的区块即为丢失区块,在后续同步丢失区块时,仅需要将数据栈中存储的区块取出并同步至所述区块存储数据库即可。
在一些情形下,我们将当前选中区块存储至数据栈时,按照对应选中顺序存储,所述选中顺序包括按照当前区块从后往前依次进行选中,如根据当前选中区块的prehash确定当前选中区块的父块,从而将该当前选中区块的父块作为下一个选中区块等。在一些实施方式中,所述将所述当前选中区块存储至数据栈,包括:依次按照选中顺序将所述当前选中区块存储至数据栈;其中,在步骤S106中,从所述数据栈中按照所述选中顺序的逆顺序将所述丢失区块依次同步至所述区块存储数据库中。例如,本方案通过对应prehash值和hash值进行匹配确定对应的丢失区块,其中,各区块的hash值仅用于标识区块的唯一性,并不连续。则对应区块同步时需要按照区块更新内容中丢失区块的顺序进行更新,此时,需要进一步根据各区块的hash值确定下一个区块,该过程耗时且效率低,本方案通过设置对应数据栈,并在选中区块过程中按照选中顺序将每个当前选中区块插入/存储至数据栈,该选中顺序为正常区块排列顺序的逆顺序。则根据数据栈先进后出的特性,在后续同步过程中,取出区块的顺序与正常区块排列顺序相同,则只需要从数据栈中按照该顺序从中取出各区块并将其同步至区块存储数据中即可,无需对区块顺序进行排列或者匹配hash值等,提高了区块同步效率的同时,也使得区块回复的准确率得到保证。
在一些实施方式中,所述方法还包括步骤S108(未示出),在步骤S108中,若所述数据栈中存储的丢失区块已全部同步至所述区块存储数据库中,则根据所述当前区块更新所述区块存储数据库。例如,当所述丢失区块已经全部同步至所述区块存储数据库后,则当前区块存储数据库中的联盟链上末位区块的hash值与所述当前区块的prehash值相同,可以基于该当前区块更新至末位区块的后面,从而继续更新所述区块存储数据库中的联盟链。
在一些实施方式中,所述根据所述当前区块更新所述区块存储数据库,包括:当所述当前区块的业务被处理完成后,根据所述当前区块的hash值更新所述区块存储数据库。例如,所述当前区块的区块内容包括代写入的交易信息及对应当前区块的hash值等,根据所述当前区块的交易内容进行对应业务逻辑处理等,待当前区块的业务逻辑处理完成后,根据当前区块的hash更新区块存储数据库中最新区块的hash值等。该待更新区块同步当前区块的hash值后,可以将该hash值写入后续子块中作为子块的prehash值等,从而保证区块链数据一致性。
非限制性地,参阅图2,由于网络原因,在区块更新时监听当前区块更新事件,分别提取当前区块的prehash值,以及数据库中目标区块的hash值,并判断该prehash值与hash值是否相等。若相同,则说明当前未存在丢失区块,则直接根据当前区块更新数据库;若不同,则说明存在丢失区块,假设当前接收到的区块事件的区块的preHash值为M,区块的Hash为N。从数据库中查到目标区块hash为H,经过对比,M不等H,因此中间有区块丢失了。因此业务系统,会从M开始往前查询区块,依次查询到,M、L、K、J、I,放入到数据栈(stack)集合中,对stack遍历(遍历的顺序为I、J、K、L),每处理完一个区块,就将该区块更新到数据库,如此,直到处理完hash为M区块为止,结束,中间漏掉的区块也都被业务系统捡回处理了。最后处理本次hash为N的区块,并将N更新到数据库。
上文主要对本申请的一种联盟链的丢失区块确定方法的各实施例进行具体介绍,此外,本申请还提供了能够实施上述各实施例的装置,下面我们结合图3进行介绍。
参阅图3,根据本申请一个方面,提供了一种联盟链的丢失区块确定装置100,所述装置包括获取模块101、查询模块102、匹配模块103以及确定模块104。获取模块101,用于获取正在监听的联盟链事件中待写入的当前区块的prehash值;查询模块102,用于查询区块存储数据库中已更新的目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同;匹配模块103,用于若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;确定模块104,用于将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。在此,所述图3示出的获取模块101、查询模块102、匹配模块103以及确定模块104对应的具体实施方式与前述图1示出的步骤S101、步骤S102、步骤S103以及步骤S104的具体实施例相同或相似,因而不再赘述,以引用的方式包含于此。
如在一些实施方式中,所述装置还包括更新模块(未示出),用于若所述当前区块的prehash值与所述目标区块的hash值相同,根据所述当前区块更新所述区块存储数据库。在此,所述更新模块对应的具体实施方式与前述步骤S105的具体实施例相同或相似,因而不再赘述,以引用的方式包含于此。
在一些实施方式中,所述方法还包括第一存储模块(未示出),用于将所述丢失区块的hash值更新至所述区块存储数据库中。例如,确定对应丢失区块后,将所述丢失区块同步至所述区块存储数据库中,如确定第M、L个区块为对应的丢失区块,则根据该对应区块顺序依次将第L、M个区块同步至区块存储数据库;或者,根据目标区块的hash值,确定与该hash值匹配的prehash值对应的子块,将该子块同步至区块存储数据库,后续依次确定最新更新区块的子块,从而将丢失区块同步至区块存储数据库中。在此,所述第一存储模块对应的具体实施方式与前述步骤S106的具体实施例相同或相似,因而不再赘述,以引用的方式包含于此。
在一些实施方式中,所述装置还包括第二存储模块(未示出),用于在所述当前选中区块与所述目标区块的匹配过程中,将所述当前选中区块存储至数据栈;其中,第一存储模块,用于从所述数据栈中将所述丢失区块同步至所述区块存储数据库中。在此,所述第二存储模块对应的具体实施方式与前述步骤S107的具体实施例相同或相似,因而不再赘述,以引用的方式包含于此。
在一些实施方式中,所述将所述当前选中区块存储至数据栈,包括:依次按照选中顺序将所述当前选中区块存储至数据栈;其中,第一存储模块,用于从所述数据栈中按照所述选中顺序的逆顺序将所述丢失区块依次同步至所述区块存储数据库中。在一些实施方式中,所述装置还包括同步模块(未示出),用于若所述数据栈中存储的丢失区块已全部同步至所述区块存储数据库中,则根据所述当前区块更新所述区块存储数据库。在一些实施方式中,所述根据所述当前区块更新所述区块存储数据库,包括:当所述当前区块的业务被处理完成后,根据所述当前区块的hash值更新所述区块存储数据库。在此,所述同步模块对应的具体实施方式与前述步骤S108的具体实施例相同或相似,因而不再赘述,以引用的方式包含于此。
除上述各实施例介绍的方法和装置外,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
图4示出了可被用于实施本申请中所述的各个实施例的示例性系统;
如图4所示在一些实施例中,系统400能够作为各所述实施例中的任意一个上述设备。在一些实施例中,系统400可包括具有指令的一个或多个计算机可读介质(例如,系统存储器或非易失性存储(NonVolatile Memory)VNM/存储设备420)以及与该一个或多个计算机可读介质耦合并被配置为执行指令以实现模块从而执行本申请中所述的动作的一个或多个处理器(例如,(一个或多个)处理器405)。
对于一个实施例,系统控制模块410可包括任意适当的接口控制器,以向(一个或多个)处理器405中的至少一个和/或与系统控制模块410通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块410可包括存储器控制器模块430,以向系统存储器415提供接口。存储器控制器模块430可以是硬件模块、软件模块和/或固件模块。
系统存储器415可被用于例如为系统400加载和存储数据和/或指令。对于一个实施例,系统存储器415可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器415可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块410可包括一个或多个输入/输出(I/O)控制器,以向NVM/存储设备420及(一个或多个)通信接口425提供接口。
例如,NVM/存储设备420可被用于存储数据和/或指令。NVM/存储设备420可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(Hard Disk Drive,HDD)、一个或多个光盘(compactdisc,CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备420可包括在物理上作为系统400被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备420可通过网络经由(一个或多个)通信接口425进行访问。
(一个或多个)通信接口425可为系统400提供接口以通过一个或多个网络和/或与任意其他适当的设备通信。系统400可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信。
对于一个实施例,(一个或多个)处理器405中的至少一个可与系统控制模块410的一个或多个控制器(例如,存储器控制器模块430)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器405中的至少一个可与系统控制模块410的一个或多个控制器的逻辑封装在一起以形成系统级封装(System in a Package,SiP)。对于一个实施例,(一个或多个)处理器405中的至少一个可与系统控制模块410的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器405中的至少一个可与系统控制模块410的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(System on Chip,SoC)。
在各个实施例中,系统400可以但不限于是:服务器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统400可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统400包括一个或多个摄像机、键盘、液晶显示器(Liquid Crystal Display,LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(Application SpecificIntegrated Circuit,ASIC)和扬声器。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。
通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个系统传送到另一系统的介质。通信介质可包括有导的传输介质(诸如电缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。调制可以是模拟的、数字的或混合调制技术。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随机存储器(RAM,DRAM,SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PROM,EPROM,EEPROM)、磁性和铁磁(Magnetoresistive Random Access Memory,MRAM)/铁电存储器Ferroelectric RAM,FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机系统使用的计算机可读信息/数据。
在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。
以上对本申请实施例所提供的一种联盟链的丢失区块确定方法、装置、计算机设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种联盟链的丢失区块确定方法,其特征在于,所述方法包括:
获取正在监听的联盟链事件中待写入的当前区块的prehash值;
查询区块存储数据库中目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同,其中,所述目标区块包括待更新联盟链上的末位区块;
若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;
将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述丢失区块的hash值更新至所述区块存储数据库中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述当前选中区块与所述目标区块的匹配过程中,将所述当前选中区块存储至数据栈;
其中,所述将所述丢失区块同步至所述区块存储数据库中,包括:
从所述数据栈中将所述丢失区块同步至所述区块存储数据库中。
4.根据权利要求3所述的方法,其特征在于,所述将所述当前选中区块存储至数据栈,包括:
依次按照选中顺序将所述当前选中区块存储至数据栈;
其中,所述将所述丢失区块同步至所述区块存储数据库中,包括:
从所述数据栈中按照所述选中顺序的逆顺序将所述丢失区块依次同步至所述区块存储数据库中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述数据栈中存储的丢失区块已全部同步至所述区块存储数据库中,则根据所述当前区块更新所述区块存储数据库。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前区块的prehash值与所述目标区块的hash值相同,根据所述当前区块更新所述区块存储数据库。
7.根据权利要求5或6所述的方法,其特征在于,所述根据所述当前区块更新所述区块存储数据库,包括:
当所述当前区块的业务被处理完成后,根据所述当前区块的hash值更新所述区块存储数据库。
8.一种联盟链的丢失区块确定装置,其特征在于,所述装置包括:
获取模块,用于获取正在监听的联盟链事件中待写入的当前区块的prehash值;
查询模块,用于查询区块存储数据库中目标区块的hash值,并检测所述当前区块的prehash值与所述目标区块的hash值是否相同,其中,所述目标区块包括待更新联盟链上的末位区块;
匹配模块,用于若所述当前区块的prehash值与所述目标区块的hash值不相同,则依次从所述当前区块往前选中所述联盟链事件的区块,将对应当前选中区块的prehash值与所述目标区块的hash值匹配,直至所述当前选中区块的prehash值与所述目标区块的hash值相同为止,将prehash值与所述目标区块的hash值相同的当前选中区块确定为匹配区块;
确定模块,用于将所述当前区块的前一个区块至所述匹配区块确定为丢失区块。
9.一种联盟链的丢失区块确定设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行如权利要求1至7中任一项所述方法的操作。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行如权利要求1至7中任一项所述方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011606706.4A CN112650735B (zh) | 2020-12-28 | 2020-12-28 | 联盟链的丢失区块确定方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011606706.4A CN112650735B (zh) | 2020-12-28 | 2020-12-28 | 联盟链的丢失区块确定方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650735A CN112650735A (zh) | 2021-04-13 |
CN112650735B true CN112650735B (zh) | 2022-05-24 |
Family
ID=75364327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011606706.4A Active CN112650735B (zh) | 2020-12-28 | 2020-12-28 | 联盟链的丢失区块确定方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650735B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157522B (zh) * | 2021-04-21 | 2022-11-04 | 杭州云象网络技术有限公司 | 基于联盟链的事件防丢失方法、系统、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558411A (zh) * | 2017-09-26 | 2019-04-02 | 浙江华信区块链科技服务有限公司 | 一种基于区块链数据的下链同步方法及装置 |
CN109992624A (zh) * | 2019-03-15 | 2019-07-09 | 深圳前海微众银行股份有限公司 | 一种区块链Block chain的同步存储方法、装置及计算机设备 |
CN110633323A (zh) * | 2019-09-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质和计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392040B (zh) * | 2017-04-28 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种共识验证的方法及装置 |
-
2020
- 2020-12-28 CN CN202011606706.4A patent/CN112650735B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558411A (zh) * | 2017-09-26 | 2019-04-02 | 浙江华信区块链科技服务有限公司 | 一种基于区块链数据的下链同步方法及装置 |
CN109992624A (zh) * | 2019-03-15 | 2019-07-09 | 深圳前海微众银行股份有限公司 | 一种区块链Block chain的同步存储方法、装置及计算机设备 |
CN110633323A (zh) * | 2019-09-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质和计算机设备 |
Non-Patent Citations (1)
Title |
---|
基于区块链的物联网信息安全技术研究;于仁飞等;《中国优秀硕士学位论文》;20200115;正文第1-40页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112650735A (zh) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200293515A1 (en) | Service processing system and method based on blockchain | |
US10560446B2 (en) | Increased communication security | |
GB2565411A (en) | Improved hardware security module management | |
CN111552676A (zh) | 基于区块链的存证方法、装置、设备及介质 | |
CN110263035A (zh) | 基于区块链的数据存储、查询方法及装置和电子设备 | |
WO2018228974A1 (en) | Expendable cryptographic key access | |
US20150326667A1 (en) | Peer-to-peer sharing of cloud-based content | |
Sun et al. | Using ethereum blockchain in Internet of Things: A solution for electric vehicle battery refueling | |
WO2020199711A1 (zh) | 数据存储方法、系统、装置及设备 | |
CN110601849A (zh) | 一种可信时间戳添加方法、装置和存储介质 | |
KR101976787B1 (ko) | 블록체인에서 스마트 컨트랙트를 이용한 전자 문서 유통 방법 | |
EP4231167A1 (en) | Data storage method and apparatus based on blockchain network | |
CN110597918A (zh) | 一种账户管理方法、装置及计算机可读存储介质 | |
WO2020016480A1 (en) | Electronic device update management | |
CN112650735B (zh) | 联盟链的丢失区块确定方法、装置、设备及存储介质 | |
CN108430063B (zh) | 一种用于监测无线局域网中arp欺骗的方法与设备 | |
CN111401904B (zh) | 联盟链中的共识方法和系统 | |
CN110730081A (zh) | 基于区块链网络的证书吊销方法、相关设备及介质 | |
CN110989934B (zh) | 区块链节点数据存储方法、区块链系统及区块链节点 | |
CN111162990A (zh) | 一种呈现消息通知的方法与设备 | |
CN110417567B (zh) | 一种物联网设备的配置方法和装置 | |
CN113609231A (zh) | 一种维护区块链系统的网络架构信息的方法和装置 | |
CN113966602B (zh) | 区块链中区块的分布式存储 | |
CN116401222A (zh) | 文件同步方法、装置、系统、设备和存储介质 | |
CN114296651B (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 |