状态数据库的写入方法、数据处理装置及存储介质制造方法及图纸

技术编号:24409659 阅读:33 留言:0更新日期:2020-06-06 08:37
本发明专利技术涉及区块链技术,揭露了一种状态数据库的写入方法,该方法包括:接收排序节点发送的若干个区块的模拟结果后,获取所述若干个区块的区块信息;依序读取目标区块的读写集,基于所述缓存及状态数据库中的数据判断所述目标区块的读写集中的交易数据是否有效,将所述目标区块的有效交易数据对应的读写集写入所述缓存中;以后台执行的方式从所述缓存中读取所述目标区块对应的数据并写入所述状态数据库中。本发明专利技术还揭露了一种数据处理装置及计算机可读存储介质。利用本发明专利技术,可提高写状态数据库的效率及准确性。

Writing method, data processing device and storage medium of state database

【技术实现步骤摘要】
状态数据库的写入方法、数据处理装置及存储介质
本专利技术涉及区块链
,尤其涉及一种状态数据库的写入方法、服务器及计算机可读存储介质。
技术介绍
区块链完成交易打包,即完成共识出块后,产生了新的区块。随后需要将区块中的事务预执行得到预执行结果,以完成事务并更新数据库,即落账。区块链属于链式数据结构,每个区块指向上一个区块,因此,验证数据的有效性就需要顺序地对每个区块进行校验。为了保证交易中资产落账一致,区块中的事务要按照排序依次预执行,即同账户相关的交易需要保证顺序性。也就是说,对于一个新加入区块链网络的节点来说,需要先同步所有的历史区块数据并且进行逐个的有效性校验,才能开始同步最新的区块。而历史区块数据往往很大,因此,该同步过程需耗费很长时间,导致时间和机器性能的浪费。
技术实现思路
鉴于以上内容,本专利技术提供一种状态数据库的写入方法、数据处理装置及计算机可读存储介质,其主要目的在于,提高写状态数据库的效率。为实现上述目的,本专利技术提供一种状态数据库的写入方法,所述方法包括:接收步骤,接收排序节点发送的若干个区块的模拟结果后,获取所述若干个区块的区块信息;第一写步骤,依序从所述若干个区块的区块信息中读取目标区块的读写集,基于预设缓存及状态数据库中的数据判断所述目标区块的读写集中的交易数据是否有效,并将所述目标区块的有效交易数据对应的读写集写入所述缓存中,其中,所述缓存用于缓存所述区块链网络中各区块中有效交易的读写集;及第二写步骤,以后台执行的方式从所述缓存中读取所述目标区块对应的数据,并将所述目标区块对应的数据写入所述状态数据库中。优选地,所述基于所述缓存及状态数据库中的数据判断所述目标区块的读写集中的交易数据是否有效,包括:确定所述目标区块对应的参考区块,从所述缓存中获取所述参考区块对应的数据,将所述目标区块的读写集与所述缓存中的所述参考区块对应的数据进行比对;若存在与所述目标区块的读写集对应的数据,则确定所述目标区块的读写集中的交易数据有效;及若不存在与所述目标区块的读写集对应的数据,则从状态数据库中获取所述参考区块对应的数据,将所述目标区块的读写集与状态数据库中的所述参考区块对应的数据进行比对,若存在与所述目标区块的读写集对应的数据,则确定所述目标区块的读写集中的交易数据有效。优选地,所述第二写步骤还包括:当将所述目标区块对应的数据写入所述状态数据库后,从所述缓存中释放所述目标区块对应的数据。优选地,所述状态数据库的写入方法还包括:第三写步骤,当将所述目标区块对应的数据写入状态数据库后,向检查点协程发送写检查点请求,所述请求中包括目标区块对应的区块编号,并控制所述检查点协程基于所述区块编号及预设分析规则为所述目标区块写检查点。优选地,所述检查点协程基于所述区块编号及预设分析规则为所述目标区块写检查点,包括:a1.所述检查点协程接收到请求后,获取所述目标区块的区块编号,判断该编号是否为期望编号;a2.若是,则为所述目标区块写检查点,并更新期望编号;a3.若否,则将该请求按照编号的顺序写入等待队列中,并判断等待队列中是否存在期望编号;若是,则执行步骤a2,为期望编号对应的区块写检查点,若否,执行步骤a1。此外,本专利技术还提供一种数据处理装置,该装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的状态数据库的写入程序,所述状态数据库的写入程序被所述处理器执行时,可实现如上所述状态数据库的写入方法中的任意步骤。此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质中包括状态数据库的写入程序,所述状态数据库的写入程序被处理器执行时,可实现如上所述状态数据库的写入方法中的任意步骤。本专利技术提出的状态数据库的写入方法、数据处理装置及计算机可读存储介质,通过新增一个缓存,将校验有效的区块的读写集写入缓存中,后续区块在校验数据过程中可从缓存中获取相关数据进行校验,无需等上一个区块完成写状态数据库即可处理下一个区块,鉴于写缓存的速度远远大于写状态数据库的速度,因此可提高后续区块数据校验的效率;同时,通过将写缓存与写状态数据库分离,并后台执行写状态数据库的过程,充分利用计算机性能,加快了写状态数据库的处理进度;在写完状态数据库后,按照区块编号顺序依次为期望编号对应的区块写检查点,避免peer宕机后无法正确恢复数据的情况,提高写状态数据库的效率及准确性。附图说明图1为本专利技术状态数据库的写入方法较佳实施例的流程图;图2为本专利技术数据处理装置较佳实施例的示意图;图3为图2中状态数据库的写入程序的程序模块示意图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术提供一种状态数据库的写入方法。参照图1所示,为本专利技术状态数据库的写入方法较佳实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。在本实施例中,所述状态数据库的写入方法仅包括步骤S10-S30。一种状态数据库的写入方法,应用于区块链网络中的交易节点,该方法包括:步骤S10,接收排序节点发送的若干个区块的模拟结果后,获取所述若干个区块的区块信息。在以下实施例中,以交易节点对应的数据处理装置为执行主体对本专利技术各实施例进行说明。所述区块链网络包括交易节点、提交节点、共识节点。基于区块链网络的交易过程大致如下:1.客户端创建交易提案并发送到交易节点(智能合约(chaindode)对应的背书节点,即智能合约指定的可以验证该交易的peer节点);2.交易节点执行智能合约,基于读取和写入的key生成读写操作集(fabric读写集);3.交易节点向客户端返回提案结果(交易节点执行智能合约的时候产生的模拟结果);4.客户端将交易数据提交到共识节点(Orderer),交易数据包括来自提案的读写集;5.共识节点将排序完的交易打包进区块中;6.区块将提案结果发送到提交节点(若提案结果为成功,将提案结果发给排序节点,排序节点会将这个交易广播给其他的交易节点);7.提交节点进行如下操作:1)MVCC多版本控制(Multi-VersionConcurrencyControl多版本并发控制),读取状态数据库(statedb)中最新的值,验证交易的有效性;2)在文件系统上将新的区块写入区块链中(交易的数据打包成区块,区块写进区块链),将区块中有效的交易写入状态数据库中,写入数据库检查点。在第7步骤中,每个区块依次执行1、2步骤,性能比较低。例如,现在账本里面A=100元,交易P消费90元,模拟结果为A=10,该结果还未提交至排序节点时,交易Q消费20元,模拟结果为A=80,此时,将两个交易的模拟结果都提交至排序节点,执行MVCC时会发现交易P、Q都是基于A=本文档来自技高网...

【技术保护点】
1.一种状态数据库的写入方法,应用于区块链网络中交易节点的数据处理装置,所述区块链网络还包括排序节点,其特征在于,所述方法包括:/n接收步骤,接收排序节点发送的若干个区块的模拟结果后,获取所述若干个区块的区块信息;/n第一写步骤,依序从所述若干个区块的区块信息中读取目标区块的读写集,基于预设缓存及状态数据库中的数据判断所述目标区块的读写集中的交易数据是否有效,并将所述目标区块的有效交易数据对应的读写集写入所述缓存中,其中,所述缓存用于缓存所述区块链网络中各区块中有效交易的读写集;及/n第二写步骤,以后台执行的方式从所述缓存中读取所述目标区块对应的数据,并将所述目标区块对应的数据写入所述状态数据库中。/n

【技术特征摘要】
1.一种状态数据库的写入方法,应用于区块链网络中交易节点的数据处理装置,所述区块链网络还包括排序节点,其特征在于,所述方法包括:
接收步骤,接收排序节点发送的若干个区块的模拟结果后,获取所述若干个区块的区块信息;
第一写步骤,依序从所述若干个区块的区块信息中读取目标区块的读写集,基于预设缓存及状态数据库中的数据判断所述目标区块的读写集中的交易数据是否有效,并将所述目标区块的有效交易数据对应的读写集写入所述缓存中,其中,所述缓存用于缓存所述区块链网络中各区块中有效交易的读写集;及
第二写步骤,以后台执行的方式从所述缓存中读取所述目标区块对应的数据,并将所述目标区块对应的数据写入所述状态数据库中。


2.根据权利要求1所述的状态数据库的写入方法,其特征在于,所述基于所述缓存及状态数据库中的数据判断所述目标区块的读写集中的交易数据是否有效,包括:
确定所述目标区块对应的参考区块,从所述缓存中获取所述参考区块对应的数据,将所述目标区块的读写集与所述缓存中的所述参考区块对应的数据进行比对;
若存在与所述目标区块的读写集对应的数据,则确定所述目标区块的读写集中的交易数据有效;及
若不存在与所述目标区块的读写集对应的数据,则从状态数据库中获取所述参考区块对应的数据,将所述目标区块的读写集与状态数据库中的所述参考区块对应的数据进行比对,若存在与所述目标区块的读写集对应的数据,则确定所述目标区块的读写集中的交易数据有效。


3.根据权利要求1所述的状态数据库的写入方法,其特征在于,所述第二写步骤还包括:
当将所述目标区块对应的数据写入所述状态数据库后,从所述缓存中释放所述目标区块对应的数据。


4.根据权利要求1至3中任意一项所述的状态数据库的写入方法,其特征在于,所述状态数据库的写入方法还包括:
第三写步骤,当将所述目标区块对应的数据写入状态数据库后,向检查点协程发送写检查点请求,所述请求中包括目标区块对应的区块编号,并控制所述检查点协程基于所述区块编号及预设分析规则为所述目标区块写检查点。


5.根据权利要求4中所述的状态数据库的写入方法,其特征在于,所述检查点协程基于所述区块编号及预设分析规则为所述目标区块写检查点,包括:
a1.所述检查点协程接收到请求后,获取所述目标区块的区块编号,判断该编号是否为期望编号;
a2.若是,则为所述目标区块写检查点,并更新期望编号;
a3.若否,则将该请求按照编号的顺序写入等待队列中,并判断等待队列中是否存在期望编号;若是,则执行步骤a2,为期望编号对应的区块写检查点,若否,执行步骤a1。
<...

【专利技术属性】
技术研发人员:陈沐豪褚镇飞
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1