CN113157710B - 区块链数据并行写入方法、装置、计算机设备及存储介质 - Google Patents

区块链数据并行写入方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113157710B
CN113157710B CN202110140335.3A CN202110140335A CN113157710B CN 113157710 B CN113157710 B CN 113157710B CN 202110140335 A CN202110140335 A CN 202110140335A CN 113157710 B CN113157710 B CN 113157710B
Authority
CN
China
Prior art keywords
thread
current block
block
block chain
writing
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
Application number
CN202110140335.3A
Other languages
English (en)
Other versions
CN113157710A (zh
Inventor
陶竞虹
盛伟
王万瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Sushang Bank Co ltd
Nanjing Xingyun Digital Technology Co Ltd
Original Assignee
Suning Financial Technology Nanjing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suning Financial Technology Nanjing Co Ltd filed Critical Suning Financial Technology Nanjing Co Ltd
Priority to CN202110140335.3A priority Critical patent/CN113157710B/zh
Publication of CN113157710A publication Critical patent/CN113157710A/zh
Priority to CA3147339A priority patent/CA3147339C/en
Application granted granted Critical
Publication of CN113157710B publication Critical patent/CN113157710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种区块链数据并行写入方法、装置、计算机设备,包括:利用第一线程将接收到的当前区块写入区块链的结构文件,同时利用第二线程验证当前区块的交易背书,获取验证结果;若交易背书验证通过,则利用第二线程将验证结果写入结构文件,同时利用第三线程根据当前区块更新区块链的状态数据库;若第一线程、第二线程以及第三线程的执行结果均为执行成功,则利用第三线程根据当前区块更新区块链的历史数据库。本发明通过多个线程的协同工作,在所有线程均成功执行的情况下才算一次正确的账本写入,在保障各节点账本一致的同时,实现区块链网络整体交易性能的提升、交易延迟的降低,弹性分配区块链运算任务,避免服务器运算资源的浪费。

Description

区块链数据并行写入方法、装置、计算机设备及存储介质
技术领域
本发明涉及数据处理技术领域,特别涉及一种区块链数据并行写入方法、装置、计算机设备及存储介质。
背景技术
区块链是一种基于链状数据结构、去中心化的分布式账本技术体系。区块链账本由一串使用密码学方法相关联的区块构成,每个区块中包含一定的信息数据以及其数据指纹,数据指纹可用于验证当前区块的有效性和链接下一个区块。通过共识算法,区块链***中的每个节点上的账本数据能够与其他节点保持一致性。在现有技术中,各个区块链节点将接收到的新区块写入账本时的主要存在以下问题:
1、主流区块链底层框架的交易吞吐量较低、出块延迟高。区块链节点串行执行账本写入过程中的交易验证、文件写入、数据库更新等操作,导致区块链网络的整体交易性能存在严重瓶颈,大量区块数据堆积在节点缓存区,迟迟不能及时写入账本,用户需要花费很长时间来确认某一交易是否执行成功,甚至造成严重的超时、重复发送请求等问题;
2、区块链技术的应用领域与使用范围具有一定局限性。由于未能达到与现有数据库管理***相匹配的交易性能,区块链***往往无法与企业已有的实时数据管理***直接对接,因此现有的区块链应用大多局限在非实时交易领域中;
3、服务器的计算资源利用率较低。当前的区块链账本写入节点账本的全流程基本采用全串行执行的方式,无法充分利用多核CPU或GPU服务器的计算资源,用户无法通过服务器升级来获得交易性能的显著提升。
针对上述问题,目前虽然已有方法试图采用并行的方式来优化区块链底层框架的交易性能,比如,采用多线程来执行区块链操作,然而,这些方法多专注于区块链账本写入过程中区块链状态数据库更新的单个环节,并未对账本写入的所有环节进行整体优化,因此交易性能提升程度有限。
综上所述,如何对区块链账本写入环节的执行效率进一步优化是一个亟需解决的技术难题。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种区块链数据并行写入方法、装置、计算机设备以及存储介质,以克服现有技术中存在的区块链账本的写入流程过于复杂,区块链结构文件写入、验证交易以及更新数据状态的耗费时间过长,区块链网络整体交易性能存在瓶颈等问题。
为解决上述一个或多个技术问题,本发明采用的技术方案是:
第一方面,提供了一种区块链数据并行写入,该方法包括如下步骤:
接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;
若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;
获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
进一步的,所述获取所述第一线程、第二线程以及第三线程的执行结果包括:
利用预设监测线程对所述第一线程、第二线程以及第三线程进行监测,获取所述第一线程、第二线程以及第三线程的执行结果。
进一步的,所述方法还包括:
若所述预设监测线程监测到所述第一线程、第二线程以及第三线程中任一线程执行失败,则通知其他执行成功的线程进行数据回滚。
进一步的,在利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果时,所述方法还包括:
利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库。
进一步的,所述利用第三线程根据所述当前区块更新所述区块链的状态数据库包括:
判断所述根据所述当前区块的上一个区块更新所述区块链的历史数据库的操作是否执行完成,若完成,则利用第三线程根据所述当前区块更新所述区块链的状态数据库。
进一步的,所述利用第二线程验证所述当前区块的交易背书包括:
验证所述当前区块中所有交易的读写集中的所有键值的版本号与所述当前区块的版本号是否一致。
进一步的,所述利用所述第二线程将所述验证结果写入所述结构文件包括:
利用所述第二线程将通过验证的交易编入预设数组中,并将所述预设数组写入所述结构文件。
第二方面,提供了一种区块链数据并行写入装置,所述装置包括:
区块接收模块,用于接收待处理的当前区块;
第一处理模块,用于利用第一线程将所述当前区块写入区块链的结构文件;
第二处理模块,用于同时利用第二线程验证所述当前区块的交易背书,获取验证结果;以及若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件;
第三处理模块,用于利用第三线程根据所述当前区块更新所述区块链的状态数据库;
线程监测模块,用于获取所述第一线程、第二线程以及第三线程的执行结果;
所述第三处理模块还用于若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;
若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;
获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如下步骤:
接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;
若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;
获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的区块链数据并行写入方法、装置、计算机设备及存储介质,通过接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库,通过多个线程的协同工作,在所有线程均成功执行的情况下才算一次正确的账本写入,在保障各节点账本一致的同时,实现区块链网络整体交易性能的提升、交易延迟的降低,弹性分配区块链运算任务,允许多个CPU同时处理接收到的多个交易数据,避免服务器运算资源的浪费;
进一步的,本发明实施例提供的区块链数据并行写入方法、装置、计算机设备及存储介质,通过在利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果时,利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库,使得相邻两个区块的写入操作也可以有部分并发执行,提升区块链节点的交易处理速度,使得区块链技术可以应用于传统零售支付等高并发、准实时交易领域中,拓宽区块链技术的应用场景。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的现有区块链网络的交易流程的示意图;
图2根据一示例性实施例示出的现有区块链网络的交易流程中账本写入环节的流程图;
图3是根据一示例性实施例示出的区块链数据并行写入方法中线程交互的流程图;
图4是根据一示例性实施例示出的区块链数据并行写入方法的流程图;
图5是根据另一示例性实施例示出的区块链数据并行写入方法的流程图;
图6是根据一示例性实施例示出的区块链数据并行写入装置的结构示意图;
图7是根据一示例性实施例示出的计算机设备的内部结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据一示例性实施例示出的现有区块链网络的交易流程的示意图,参照图1所示,目前区块链网络主要包括客户端、背书节点、排序节点和记账节点四种角色。其中,客户端包括应用程序与SDK,用户可通过客户端发起交易、提交交易提案;背书节点主要负责验证和背书交易提案,计算交易执行的模拟结果并返回交易提案的响应结果给客户端;排序节点主要负责接收来自客户端的交易提案并排序整理为区块后广播给记账节点进行处理;记账节点负责在接受区块后再次检查交易合法性,并写入区块链结构。
图2根据一示例性实施例示出的现有区块链网络的交易流程中账本写入环节的流程图,参照图2所示,通常区块链账本写入的过程主要包括交易背书的验证、将验证结果更新至本地的区块链结构文件、将区块写入本地的区块链结构文件、更新区块链状态数据库以及更新区块链历史数据库这五个步骤。进一步参照图2所示,现有的区块链账本写入方式为串行写入,一方面,只有当上一个区块的所有步骤全部执行完毕,才能进行下一个区块的写入操作,另一方面,账本写入过程中的五个步骤也必须顺序执行,这导致区块链网络交易性能存在严重瓶颈,区块数据迟迟不能及时写入账本,大量客户端等待记账节点的反馈,甚至造成严重的超时,导致重新发送的问题。
为解决上述问题,本发明实施例中创造性的提出了一种区块链数据并行写入方法,该方法主要聚焦于上述区块链记账节点在从排序节点处接收到区块并完成初步的区块格式验证后,检测交易合法性,并将合法交易写入区块链结构文件中的过程,将接收到的区块写入本地的区块链结构文件,写入结构文件的同时,并行执行交易背书的验证,交易背书验证结束后,将验证结果写入本地的区块链结构文件,并且交易背书验证结束后,更新区块链状态数据库,上述四个步骤均完成后,更新区块链历史数据库。
图3是根据一示例性实施例示出的区块链数据并行写入方法中线程交互的流程图,参照图3所示,假设待处理的当前区块为区块X,具体实施时,通过第一线程执行本地区块链结构文件的写入操作,通过第二线程执行交易背书的验证操作与验证结果的写入操作,并通过第三线程执行区块链状态数据库与历史数据库的更新操作,只有在三个线程均成功执行的情况下才算成功将新区块写入区块链账本,否则执行数据回滚,在保障各节点账本一致的同时,降低区块链网络的交易延迟,提升区块链***的交易吞吐量。其中,第一线程、第二线程、第三线程均为并行执行,这三个线程既可以是之前已存在的线程,也可以是新建的线程,并可通过线程池的方式实现管理。
图4是根据一示例性实施例示出的区块链数据并行写入方法的流程图,参照图4所示,该数据并行写入过程包括如下步骤:
步骤一、将接收到的区块写入本地的区块链结构文件
具体的,通过第一线程将接收到的当前区块写入本地的区块链的结构文件中,其中,结构文件包括但不限于Chunk文件等。具体实施时,第一线程将当前区块添加至预先配置的索引数据库,导入当前区块的区块编号、哈希值、文件指针、交易偏移等区块数据。
由于本发明实施例中,区块链账本写入过程中的区块链结构文件更新、交易背书验证、状态数据库更新、历史数据库更新等操作是由不同线程分别执行的,而上述操作必须全部完成才算一次正确的账本写入,因而,本发明实施例中还设置有监测线程,用于监测第一线程、第二线程以及第三线程的执行情况。第一线程在执行将当前区块写入本地的区块链的结构文件的操作后,将执行结果反馈至监测线程,并等待其分配下一个任务。如果第一线程成功将接收到的区块写入本地的区块链结构文件中,监测线程将等待并汇总其他线程的执行结果后再通知第一线程,如果执行失败,监测线程将立即通知第一线程对本地的区块链结构文件与索引数据库执行回滚操作,返回上一区块的状态,等待再次执行当前区块的写入操作。
步骤二、在写入结构文件的同时,并行执行交易背书的验证
具体的,在第一线程将接收到的当前区块写入本地的区块链的结构文件的同时,第二线程将逐个验证接收到的当前区块中的交易背书,其中交易读写集的主要验证项有两项:读写集中读取的所有键值的版本号是否跟当前版本号一致、范围查询的结果是否跟当前执行结果一致。其中,范围查询的结果指的是接收到的当前区块中所有交易中包含的范围查询结果(如果交易中有执行范围查询就检查这一项,如果交易中没有执行范围查询就不需要检查),具体来说是当前区块的生成节点执行范围查询操作后获得的模拟结果。当前执行结果指的是执行账本写入操作的节点再模拟执行一遍范围查询操作后得到的模拟执行结果。在当前区块中的所有交易验证完成后,第二线程将验证结果写入本地的区块链结构文件,同时将验证结果传递至第三线程,并通知其更新区块链状态数据库。
具体的,这里需要说明的是,本发明实施例中,区块中每个交易都包含一个读写数据集,读集包括该交易执行时需读取账本的键值对(Key-Value Pair)数组,写集包括该交易执行时需写入账本的键值对数组。步骤三、交易背书验证结束后,将验证结果写入本地的区块链结构文件
具体的,根据当前区块的交易背书验证结果,第二线程将其中通过验证的交易编入交易有效标记数组中,随后将该数组写入本地区块链结构文件。最后,第二线程将执行结果反馈至监测线程,并等待其分配下一个任务。
具体的,如果第二线程成功将验证结果写入本地的区块链结构文件中,监测线程将等待并汇总其他线程的执行结果后再通知第二线程。如果执行失败,监测线程将立即通知第二线程对本地区块文件执行回滚操作,返回上一区块的状态,等待再次执行当前区块的写入操作。
步骤四、交易背书验证结束后,更新区块链状态数据库
具体的,本发明实施例中,第三线程需要等待上一区块的区块链历史数据库更新操作执行完成后,根据步骤二中第二线程提供的验证结果,执行当前区块中的所有有效交易的读写集,更新区块链状态数据库。执行完成后,第三线程将执行结果反馈至监测线程,并等待其分配下一个任务。
如果第三线程成功更新区块链状态数据库,监测线程将等待并汇总其他线程的执行结果后再通知第三线程。如果执行失败,监测线程将立即通知第三线程对状态数据库执行回滚操作,返回上一区块的状态,等待再次执行当前区块的写入操作。
步骤五、上述步骤一至步骤四均完成后,更新区块链历史数据库
具体的,监测线程待第一线程、第二线程、第三线程完成上述步骤一至步骤四后,汇总各线程的执行结果。如果所有线程均成功执行操作,则通知第三线程继续根据当前区块来更新区块链历史数据库,并启动下一区块的账本写入流程,若任一线程执行任务失败,则通知其他执行成功的线程进行数据回滚。
图5是根据另一示例性实施例示出的区块链数据并行写入方法的流程图,参照图5所示,该方法包括如下步骤:
S1:接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果。
具体的,本发明实施例中,可以根据实际需求预先配置多个线程,如第一线程、第二线程、第三线程等,配置每个线程执行账本写入过程中不同的操作。作为一种较优的示例,本发明实施例中,第一线程执行本地区块链结构文件的写入操作,第二线程执行交易背书的验证操作与验证结果的写入操作,第三线程执行区块链状态数据库与历史数据库的更新操作。
S2:若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库。
具体的,第二线程验证当前区块的交易背书通过后,一方面继续利用第二线程将验证结果写入结构文件,另一方面,通知第三线程根据当前区块更新区块链的状态数据库。这里需要说明的是,由于第一线程和第二线程都涉及本地区块链结构文件的写入,为防止同时写入同一文件而引发***错误,本发明实施例设置将区块本身与交易背书验证结果分别存储,即通过不同的区块链结构文件来写入,提升区块链结构的整体写入效率。这里需要说明的是,本发明实施例中,状态数据库存储的数据包括但不限于执行完当前账本所包含的所有交易后,所有键(Key)的最新值(Value)。例如,某键在当前时间点的最新值,执行交易时只执行变动本身,不记录改变的动作。
S3:获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
具体的,为防止区块链账本写入区块的顺序错误导致区块链网络无法达成共识,记账节点只有在将当前区块的结构文件写入、交易背书验证、验证结果写入、状态数据库更新这四个操作执行完毕后,再对下一个区块进行账本写入操作。其中,本发明实施例中,只有历史数据库的更新操作可以在下一个区块的执行周期内进行执行,这是由于历史数据库仅供用户查询,不允许用户写入,不会因为写入顺序错误而导致***崩溃。此外,区块链历史数据库的更新操作也可以根据实际业务需求设置一个第四线程来执行,以进一步提升区块链网络的整体交易性能。这里需要说明的是,本发明实施例中,历史数据库中存储的数据包括但不限于键值(Key)的版本变化等,例如,某键在某区块的某条交易中被改变,只记录改变的动作,不执行变动本身。
作为一种较优的实施方式,本发明实施例中,所述获取所述第一线程、第二线程以及第三线程的执行结果包括:
利用预设监测线程对所述第一线程、第二线程以及第三线程进行监测,获取所述第一线程、第二线程以及第三线程的执行结果。
具体的,通过预设监测线程来监测第一线程是否完成本地区块链结构文件的写入操作,第二线程是否完成交易背书的验证操作与验证结果的写入操作,第三线程是否完成区块链状态数据库的更新操作等。在该监测线程检测到当前区块的上述4个任务均执行成功后,再由第一线程开始执行下一个区块的结构文件写入操作,由第二线程开始执行下一个区块的交易背书的验证操作等。这里需要说明的是,本发明实施例中,预设监测线程可以是一个单独线程来执行监测操作,也可以是由第一线程兼顾监测操作,用户可以根据实际需求进行选择,这里不做限制。
作为一种较优的实施方式,本发明实施例中,所述方法还包括:
若所述预设监测线程监测到所述第一线程、第二线程以及第三线程中任一线程执行失败,则通知其他执行成功的线程进行数据回滚。
具体的,监测线程待第一线程、第二线程、第三线程完成各自的执行操作后,汇总各线程的执行结果。为保证区块的正确写入,本发明实施例中,设置所有线程均成功执行的情况下才算一次正确的区块写入,当监测线程监测到第一线程、第二线程以及第三线程中任一线程执行任务失败时,则通知其他执行成功的线程进行数据回滚。
作为一种较优的实施方式,本发明实施例中,所述在利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果时,所述方法还包括:
利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库。
具体的,为了进一步提升区块链网络的整体交易性能,本发明实施例中,在利用第一线程将当前区块写入区块链的结构文件,同时利用第二线程验证当前区块的交易背书,获取验证结果时,还利用第三线程根据当前区块的上一个区块更新所述区块链的历史数据库。即在当前区块的写入过程中,第三线程的区块链历史数据库更新操作使用的是当前区块的上一个区块中的有效交易读写集,将该读写集导入历史数据库中。
作为一种较优的实施方式,本发明实施例中,所述利用第三线程根据所述当前区块更新所述区块链的状态数据库包括:
判断所述根据所述当前区块的上一个区块更新所述区块链的历史数据库的操作是否执行完成,若完成,则利用第三线程根据所述当前区块更新所述区块链的状态数据库。
具体的,第三线程需要等待当前区块的上一个区块的区块链历史数据库更新操作执行完成后,再执行当前区块的区块链的状态数据库更新操作,从而防止区块链账本写入区块的顺序错误导致区块链网络无法达成共识。
具体的,另一种实施方案中,设置区块链历史数据库的更新操作由第四线程执行,以进一步提升区块链网络的整体交易性能。由于区块链状态数据库与区块链历史数据库的更新操作分别由两个不同线程执行,第三线程可以在接到当前区块的下一个区块的状态数据库更新任务后立即执行,无需等待当前区块的历史数据库更新完毕。
作为一种较优的实施方式,本发明实施例中,所述利用第二线程验证所述当前区块的交易背书包括:
验证所述当前区块中所有交易的读写集中的所有键值的版本号与所述当前区块的版本号是否一致。
作为一种较优的实施方式,本发明实施例中,所述利用所述第二线程将所述验证结果写入所述结构文件包括:
利用所述第二线程将通过验证的交易编入预设数组中,并将所述预设数组写入所述结构文件。
图6是根据一示例性实施例示出的区块链数据并行写入装置的结构示意图,该装置包括:
区块接收模块,用于接收待处理的当前区块;
第一处理模块,用于利用第一线程将所述当前区块写入区块链的结构文件;
第二处理模块,用于同时利用第二线程验证所述当前区块的交易背书,获取验证结果;以及若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件;
第三处理模块,用于利用第三线程根据所述当前区块更新所述区块链的状态数据库;
线程监测模块,用于获取所述第一线程、第二线程以及第三线程的执行结果;
所述第三处理模块还用于若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
作为一种较优的实施方式,本发明实施例中,所述线程监测模块具体用于:
利用预设监测线程对所述第一线程、第二线程以及第三线程进行监测,获取所述第一线程、第二线程以及第三线程的执行结果。
作为一种较优的实施方式,本发明实施例中,所述线程监测模块还用于:
若所述预设监测线程监测到所述第一线程、第二线程以及第三线程中任一线程执行失败,则通知其他执行成功的线程进行数据回滚。
作为一种较优的实施方式,本发明实施例中,所述第三处理模块还用于:
利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库。
作为一种较优的实施方式,本发明实施例中,所述第三处理模块具体用于:
判断所述根据所述当前区块的上一个区块更新所述区块链的历史数据库的操作是否执行完成,若完成,则利用第三线程根据所述当前区块更新所述区块链的状态数据库。
作为一种较优的实施方式,本发明实施例中,所述第二处理模块具体用于:
验证所述当前区块中所有交易的读写集中的所有键值的版本号与所述当前区块的版本号是否一致。
作为一种较优的实施方式,本发明实施例中,所述第二处理模块具体用于:
利用所述第二线程将通过验证的交易编入预设数组中,并将所述预设数组写入所述结构文件。
图7是根据一示例性实施例示出的计算机设备的内部结构示意图,参照图7所示,该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种执行计划的优化方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
作为一种较优的实施方式,本发明实施例中,计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;
若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;
获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
作为一种较优的实施方式,本发明实施例中,处理器执行计算机程序时还实现以下步骤:
利用预设监测线程对所述第一线程、第二线程以及第三线程进行监测,获取所述第一线程、第二线程以及第三线程的执行结果。
作为一种较优的实施方式,本发明实施例中,处理器执行计算机程序时还实现以下步骤:
若所述预设监测线程监测到所述第一线程、第二线程以及第三线程中任一线程执行失败,则通知其他执行成功的线程进行数据回滚。
作为一种较优的实施方式,本发明实施例中,处理器执行计算机程序时还实现以下步骤:
利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库。
作为一种较优的实施方式,本发明实施例中,处理器执行计算机程序时还实现以下步骤:
判断所述根据所述当前区块的上一个区块更新所述区块链的历史数据库的操作是否执行完成,若完成,则利用第三线程根据所述当前区块更新所述区块链的状态数据库。
作为一种较优的实施方式,本发明实施例中,处理器执行计算机程序时还实现以下步骤:
验证所述当前区块中所有交易的读写集中的所有键值的版本号与所述当前区块的版本号是否一致。
作为一种较优的实施方式,本发明实施例中,处理器执行计算机程序时还实现以下步骤:
利用所述第二线程将通过验证的交易编入预设数组中,并将所述预设数组写入所述结构文件。
本发明实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如下步骤:
接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;
若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;
获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
作为一种较优的实施方式,本发明实施例中,所述计算机程序被处理器执行时,还实现如下步骤:
利用预设监测线程对所述第一线程、第二线程以及第三线程进行监测,获取所述第一线程、第二线程以及第三线程的执行结果。
作为一种较优的实施方式,本发明实施例中,所述计算机程序被处理器执行时,还实现如下步骤:
若所述预设监测线程监测到所述第一线程、第二线程以及第三线程中任一线程执行失败,则通知其他执行成功的线程进行数据回滚。
作为一种较优的实施方式,本发明实施例中,所述计算机程序被处理器执行时,还实现如下步骤:
利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库。
作为一种较优的实施方式,本发明实施例中,所述计算机程序被处理器执行时,还实现如下步骤:
判断所述根据所述当前区块的上一个区块更新所述区块链的历史数据库的操作是否执行完成,若完成,则利用第三线程根据所述当前区块更新所述区块链的状态数据库。
作为一种较优的实施方式,本发明实施例中,所述计算机程序被处理器执行时,还实现如下步骤:
验证所述当前区块中所有交易的读写集中的所有键值的版本号与所述当前区块的版本号是否一致。
作为一种较优的实施方式,本发明实施例中,所述计算机程序被处理器执行时,还实现如下步骤:
利用所述第二线程将通过验证的交易编入预设数组中,并将所述预设数组写入所述结构文件。
综上所述,本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的区块链数据并行写入方法、装置、计算机设备及存储介质,通过接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库,通过多个线程的协同工作,在所有线程均成功执行的情况下才算一次正确的账本写入,在保障各节点账本一致的同时,实现区块链网络整体交易性能的提升、交易延迟的降低,弹性分配区块链运算任务,允许多个CPU同时处理接收到的多个交易数据,避免服务器运算资源的浪费;
进一步的,本发明实施例提供的区块链数据并行写入方法、装置、计算机设备及存储介质,通过在利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果时,利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库,使得相邻两个区块的写入操作也可以有部分并发执行,提升区块链节点的交易处理速度,使得区块链技术可以应用于传统零售支付等高并发、准实时交易领域中,拓宽区块链技术的应用场景。
需要说明的是:上述实施例提供的区块链数据并行写入装置在触发写入业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的区块链数据并行写入装置与区块链数据并行写入方法实施例属于同一构思,即该装置是基于该区块链数据并行写入方法的,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种区块链数据并行写入方法,其特征在于,所述方法包括如下步骤:
接收待处理的当前区块,利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果;
若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件,同时利用第三线程根据所述当前区块更新所述区块链的状态数据库;
获取所述第一线程、第二线程以及第三线程的执行结果,若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
2.根据权利要求1所述的区块链数据并行写入方法,其特征在于,所述获取所述第一线程、第二线程以及第三线程的执行结果包括:
利用预设监测线程对所述第一线程、第二线程以及第三线程进行监测,获取所述第一线程、第二线程以及第三线程的执行结果。
3.根据权利要求2所述的区块链数据并行写入方法,其特征在于,所述方法还包括:
若所述预设监测线程监测到所述第一线程、第二线程以及第三线程中任一线程执行失败,则通知其他执行成功的线程进行数据回滚。
4.根据权利要求1至3任一所述的区块链数据并行写入方法,其特征在于,在利用第一线程将所述当前区块写入区块链的结构文件,同时利用第二线程验证所述当前区块的交易背书,获取验证结果时,所述方法还包括:
利用所述第三线程根据所述当前区块的上一个区块更新所述区块链的历史数据库。
5.根据权利要求4所述的区块链数据并行写入方法,其特征在于,所述利用第三线程根据所述当前区块更新所述区块链的状态数据库包括:
判断所述根据所述当前区块的上一个区块更新所述区块链的历史数据库的操作是否执行完成,若完成,则利用第三线程根据所述当前区块更新所述区块链的状态数据库。
6.根据权利要求1至3任一所述的区块链数据并行写入方法,其特征在于,所述利用第二线程验证所述当前区块的交易背书包括:
验证所述当前区块中所有交易的读写集中的所有键值的版本号与所述当前区块的版本号是否一致。
7.根据权利要求1至3任一所述的区块链数据并行写入方法,其特征在于,所述利用所述第二线程将所述验证结果写入所述结构文件包括:
利用所述第二线程将通过验证的交易编入预设数组中,并将所述预设数组写入所述结构文件。
8.一种区块链数据并行写入装置,其特征在于,所述装置包括:
区块接收模块,用于接收待处理的当前区块;
第一处理模块,用于利用第一线程将所述当前区块写入区块链的结构文件;
第二处理模块,用于同时利用第二线程验证所述当前区块的交易背书,获取验证结果;以及若所述交易背书验证通过,则利用所述第二线程将所述验证结果写入所述结构文件;
第三处理模块,用于利用第三线程根据所述当前区块更新所述区块链的状态数据库;
线程监测模块,用于获取所述第一线程、第二线程以及第三线程的执行结果;
所述第三处理模块还用于若所述执行结果均为执行成功,则利用所述第三线程根据所述当前区块更新所述区块链的历史数据库。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202110140335.3A 2021-02-01 2021-02-01 区块链数据并行写入方法、装置、计算机设备及存储介质 Active CN113157710B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110140335.3A CN113157710B (zh) 2021-02-01 2021-02-01 区块链数据并行写入方法、装置、计算机设备及存储介质
CA3147339A CA3147339C (en) 2021-02-01 2022-02-01 Method and device for writing blockchain data in parallel, computer equipment and storage medium thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110140335.3A CN113157710B (zh) 2021-02-01 2021-02-01 区块链数据并行写入方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN113157710A CN113157710A (zh) 2021-07-23
CN113157710B true CN113157710B (zh) 2022-08-09

Family

ID=76879176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110140335.3A Active CN113157710B (zh) 2021-02-01 2021-02-01 区块链数据并行写入方法、装置、计算机设备及存储介质

Country Status (2)

Country Link
CN (1) CN113157710B (zh)
CA (1) CA3147339C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113505000B (zh) * 2021-09-08 2021-12-21 广东卓启云链科技有限公司 区块链中的多线程处理方法、装置、***和存储介质
CN116662276B (zh) * 2023-06-06 2024-03-05 中科三清科技有限公司 数据处理方法、装置、电子设备及存储介质
CN117294757B (zh) * 2023-11-27 2024-02-20 山东省计算中心(国家超级计算济南中心) 基于区块链的复杂业务拆分执行方法、***、设备及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271245B (zh) * 2018-09-13 2021-04-27 腾讯科技(深圳)有限公司 一种区块处理任务的控制方法和装置
CN109285006A (zh) * 2018-09-20 2019-01-29 中链科技有限公司 一种区块链数据的并行验证处理方法及装置
CN110765193B (zh) * 2019-10-22 2024-03-15 深圳前海微众银行股份有限公司 一种区块链数据导出的方法及装置
CN112231105B (zh) * 2020-10-26 2023-10-27 中国工商银行股份有限公司 基于区块链的区块写入方法及***

Also Published As

Publication number Publication date
CA3147339C (en) 2023-03-14
CN113157710A (zh) 2021-07-23
CA3147339A1 (en) 2022-08-01

Similar Documents

Publication Publication Date Title
CN113157710B (zh) 区块链数据并行写入方法、装置、计算机设备及存储介质
EP2913768B1 (en) Method and database engine for recording transaction log
Yi et al. Monetary cost-aware checkpointing and migration on amazon cloud spot instances
CN107958010B (zh) 用于在线数据迁移的方法及***
CN104021043B (zh) 批量应用程序的中断重入方法及***
CN111932257B (zh) 一种区块链并行化处理方法及装置
CN111930489B (zh) 一种任务调度方法、装置、设备及存储介质
CN111400011B (zh) 一种实时任务调度方法、***、设备及可读存储介质
WO2019109854A1 (zh) 分布式数据库数据处理方法、装置、存储介质及电子装置
CN113419823A (zh) 一种适用于高并发事务的联盟链***及其设计方法
CN113377798A (zh) 一种区块链一致性处理方法、区块链节点和区块链***
US20230351145A1 (en) Pipelining and parallelizing graph execution method for neural network model computation and apparatus thereof
CN115994053A (zh) 数据库备机的并行回放方法、装置、电子设备及介质
CN114691658A (zh) 一种数据回溯方法、装置、电子设备及存储介质
CN110381150B (zh) 区块链上的数据处理方法、装置、电子设备及存储介质
CN110532069A (zh) 一种分布式事务提交方法及装置
CN111741080B (zh) 网络文件分发方法及装置
CN112905676A (zh) 一种数据文件的导入方法及装置
CN110827001A (zh) 一种会计事件记账方法、***、设备和存储介质
US11698914B1 (en) Serverless managed bulk import on a global NoSQL database with selective back pressure
CN113364806A (zh) 一种服务接口迁移的校验方法及装置
CN110765148A (zh) 一种业务数据处理方法及装置
CN117851011B (zh) 任务队列管理方法、装置、计算机设备及存储介质
Wang et al. Mapcheckreduce: an improved mapreduce computing model for imprecise applications
CN115952239B (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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 834, Yingying building, No.99, Tuanjie Road, yanchuangyuan, Jiangbei new district, Nanjing, Jiangsu Province

Patentee after: Nanjing Xingyun Digital Technology Co.,Ltd.

Country or region after: China

Address before: Room 834, Yingying building, No.99, Tuanjie Road, yanchuangyuan, Jiangbei new district, Nanjing, Jiangsu Province

Patentee before: Suning financial technology (Nanjing) Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240626

Address after: The 7th, 8th, 9th, 27th, 28th, and 29th floors of Building 4, No. 248 Lushan Road, Jianye District, Nanjing City, Jiangsu Province, 210000, and the 1st and 2nd floors of the podium of Building 4

Patentee after: Jiangsu Sushang Bank Co.,Ltd.

Country or region after: China

Address before: Room 834, Yingying building, No.99, Tuanjie Road, yanchuangyuan, Jiangbei new district, Nanjing, Jiangsu Province

Patentee before: Nanjing Xingyun Digital Technology Co.,Ltd.

Country or region before: China