CN112231105B - 基于区块链的区块写入方法及系统 - Google Patents

基于区块链的区块写入方法及系统 Download PDF

Info

Publication number
CN112231105B
CN112231105B CN202011153612.6A CN202011153612A CN112231105B CN 112231105 B CN112231105 B CN 112231105B CN 202011153612 A CN202011153612 A CN 202011153612A CN 112231105 B CN112231105 B CN 112231105B
Authority
CN
China
Prior art keywords
block
branch
file
target
transaction
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
CN202011153612.6A
Other languages
English (en)
Other versions
CN112231105A (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202011153612.6A priority Critical patent/CN112231105B/zh
Publication of CN112231105A publication Critical patent/CN112231105A/zh
Application granted granted Critical
Publication of CN112231105B publication Critical patent/CN112231105B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Abstract

本发明提供一种基于区块链的区块写入方法及系统,属于区块链技术领域。该基于区块链的区块写入方法包括:根据文件账本分支数量获取多个目标区块;根据各个目标区块的区块编号确定各个目标区块对应的分支;并行调用对应的分支处理线程对各个目标区块进行如下并行处理:根据分支中最后一个区块的描述符确定写入位置;在写入位置添加目标区块。本发明可以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。

Description

基于区块链的区块写入方法及系统
技术领域
本发明涉及区块链技术领域,具体地,涉及一种基于区块链的区块写入方法及系统。
背景技术
图1是现有技术中区块链文件账本的示意图。如图1所示,现有区块链文件账本是链式结构:文件账本由若干个区块文件按顺序组成;每个区块文件按区块编号顺序记录若干个区块;每个区块的区块数据字段记录若干笔按时间排序的交易;这些按时间排序的交易会串行登记历史数据库和索引数据库。
上述链式结构存在以下问题:
第一,在大量并发写交易场景下,区块数量和交易笔数将非常多,文件账本链式结构和串行处理方式将限制区块的写入速度。
第二,一个区块文件上存储若干区块,在大量并发读交易场景下,可能出现大量交易集中读取同一个区块文件,造成热点。
发明内容
本发明实施例的主要目的在于提供一种基于区块链的区块写入方法及系统,以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。
为了实现上述目的,本发明实施例提供一种基于区块链的区块写入方法,包括:
根据文件账本分支数量获取多个目标区块;
根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据分支中最后一个区块的描述符确定写入位置;
在写入位置添加目标区块。
本发明实施例还提供一种基于区块链的区块写入系统,包括:
目标区块获取单元,用于根据文件账本分支数量获取多个目标区块;
分支确定单元,用于根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行处理单元,用于并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据分支中最后一个区块的描述符确定写入位置;
在写入位置添加目标区块。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,处理器执行计算机程序时实现所述的基于区块链的区块写入方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现所述的基于区块链的区块写入方法的步骤。
本发明实施例的基于区块链的区块写入方法及系统先根据文件账本分支数量获取多个目标区块并确定各个目标区块对应的分支,再并行调用对应的分支处理线程并行添加各个目标区块,可以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中区块链文件账本的示意图;
图2是本发明实施例中基于区块链的区块写入方法的流程图;
图3是本发明实施例中星型账本的示意图;
图4是本发明另一实施例中基于区块链的区块写入方法的流程图;
图5是本发明具体实施例中基于区块链的区块写入方法的流程图;
图6是本发明一实施例中确定写入位置的流程图;
图7是本发明实施例中区块异常回滚的流程图;
图8是本发明另一实施例中区块异常回滚的流程图;
图9是本发明具体实施例中区块异常回滚的流程图;
图10是现有技术查询交易的示意图;
图11是本发明实施例中查询交易的示意图;
图12是本发明实施例中基于区块链的区块写入系统的结构框图;
图13是本发明实施例中计算机设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
鉴于现有技术限制区块和历史数据库写入速度,在大量并发读交易场景下会导致热点,本发明实施例提供一种基于区块链的区块写入方法,以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。以下结合附图对本发明进行详细说明。
本发明提出一种基于星型结构的文件账本组织方式。对于写交易,星型结构的各分支可并行写入区块以及记录历史数据库和索引数据库;对于读交易,星型结构可降低单个区块文件的IO数据量。
图2是本发明实施例中基于区块链的区块写入方法的流程图。图3是本发明实施例中星型账本的示意图。图4是本发明另一实施例中基于区块链的区块写入方法的流程图。图5是本发明具体实施例中基于区块链的区块写入方法的流程图。如图2-图5所示,基于区块链的区块写入方法包括:
S101:根据文件账本分支数量获取多个目标区块。
具体实施时,Peer节点主线程从缓存队列一次取N个目标区块,N=星型文件账本分支数量。
S102:根据各个目标区块的区块编号确定各个目标区块对应的分支。
具体实施时,读取每个目标区块的区块编号,然后对N取余数以确定该区块所在分支编号,将该区块投递给Peer节点对应的分支处理线程。
如图3所示的星型结构文件账本,其单个区块结构保持不变。本发明将单条链式结构的文件账本拆成多条分支,组成星型结构,每个分支的文件账本之间可并行写入区块。区块所在分支编号为区块编号对分支总数(星型文件账本分支数量)取余数。每个分支上的区块与链式结构一样,仍然保持先后关系,但每个区块的下一个区块不在同一个分支上,而是在相邻的下一个分支。不同的分支应放到不同的磁盘,以便各分支的读写相互间无资源竞争。可使用分支编号命名磁盘挂载点,相同分支的区块文件写入同一个挂载点,具体方法不再赘述。图3所示的星型文件账本共4个分支,第0个分支存放区块编号为0、4、8的区块,第1个分支存放区块编号为1、5、9的区块,以此类推。
S103:并行调用对应的分支处理线程对各个目标区块进行如下并行处理:根据分支中最后一个区块的描述符确定写入位置;在写入位置添加目标区块。
一实施例中,描述符包括分支号、区块文件编号、区块在区块文件的偏移量和区块容量。
图6是本发明一实施例中确定写入位置的流程图。如图6所示,根据分支中最后一个区块的描述符确定写入位置包括:
S201:根据分支中最后一个区块在区块文件的偏移量、分支中最后一个区块的区块容量和该区块文件的总容量确定该区块文件的剩余容量。
具体实施时,分支中最后一个区块在区块文件的偏移量和分支中最后一个区块的区块容量的和为区块文件的已存容量。区块文件的剩余容量为区块文件的总容量与区块文件的已存容量的差。
S202:根据该区块文件的剩余容量与目标区块容量的比较结果确定写入位置。
一实施例中,S202包括:
1、当该区块文件的剩余容量小于目标区块容量时,根据分支中最后一个区块的区块文件编号建立新的区块文件,确定新的区块文件的初始位置为写入位置。
例如,分支中最后一个区块的区块文件编号为A,则在该分支上建立区块文件编号为A+1的区块文件。如图3所示,在第0个分支中,放有区块编号为0、4、8的区块(第0、4、8个区块)的文件编号为0的区块文件(第0个区块文件)的剩余容量小于区块编号为12的区块(第12个区块)的区块容量,第12个区块放在第0个分支文件编号为1的区块文件(第1个区块文件)中。
2、当该区块文件剩余容量大于或等于目标区块容量时,根据分支中最后一个区块在区块文件的偏移量和分支中最后一个区块的区块容量在该区块文件中确定写入位置。
此时写入位置在该分支该区块文件中的最后一个区块的末尾。如图3所示,在第0个分支中,已放有第0个区块和第4个区块的第0个区块文件的剩余容量大于待放入的第8个区块的区块容量,将第8个区块放在第0个分支第0个区块文件中第4个区块的末尾。
一实施例中,执行S103之后还包括:
1、Peer节点主线程并行调用对应的分支处理线程对各个目标区块进行如下并行处理:在历史数据库中登记目标区块中的交易并根据目标区块更新分支对应的保存点;在索引数据库中登记目标区块的描述符。
具体实施时,Peer节点主线程并行调用对应的分支处理线程,在历史数据库中并行登记交易账本ID+交易key值(交易键值)+区块编号+交易编号,其中,一个区块包括多个交易;即写入一个目标区块,会同时写入多个交易的交易编号及对应的交易key值。分支对应的保存点为{key(键)=分支号+交易账本ID,value(值)=区块编号+该区块最大交易编号}。每个分支对应一个保存点。当在该分支中写入一个新的目标区块时,根据该目标区块的区块编号和该目标区块中的最大交易编号更新该保存点的value(值)。
具体实施时,索引数据库的value为目标区块的描述符。在索引数据库登记的key=目标区块的区块编号,value={目标区块的分支号,目标区块的区块文件编号,目标区块在区块文件偏移量,目标区块的区块容量}。
2、Peer节点主线程在各分支线程写入目标区块,并在历史数据库和索引数据库登记完毕后,按照各个目标区块的区块编号和各个目标区块中各个交易的交易时间在状态数据库中从小到大串行记录各个交易的交易结果,以保证世界状态一致性。
图2所示的基于区块链的区块写入方法的执行主体可以为peer节点的主线程,其可并行调用peer节点的分支处理线程。Peer节点是账本和链码的物理载体,是区块链网络中各类计算节点的统称。一台服务器可以充当Peer节点的作用,这台服务器既可以是私有物理机,也可以是云上的资源。Peer节点可作为排序节点,将交易按交易时间排序并打包成区块后,把区块写入本地文件账本;Peer节点也可以作为记账节点,从排序节点拉取区块后,把区块写入本地文件账本。由图2所示的流程可知,本发明实施例的基于区块链的区块写入方法先根据文件账本分支数量获取多个目标区块并确定各个目标区块对应的分支,再并行调用对应的分支处理线程并行添加各个目标区块,可以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。
如图5所示,因星型文件账本分支数为4,Peer节点主线程一次从缓存队列取4个区块,解析到第一个区块的编号是2,对4取余后为2,因此把区块2投递给分支(区块)2的处理线程。其余三个区块也按同样的逻辑投递。图5的线程0先读取上一个区块的描述符:{分支号=0,区块文件编号=0,区块在区块文件偏移量=0字节(区块编号4上一个区块为编号0,因此偏移量为0字节),区块容量=P3字节}。新区块(目标区块,即区块4)追加到分支0的最后一个区块(区块0)的末尾。然后记录新区块的描述符:{分支号=0,区块文件编号=0,区块在区块文件偏移量=M1字节=P3字节(因区块编号4前面有区块编号0,因此区块编号4不是第一个区块,偏移量不为0),区块容量=P4字节}。线程0把编号4区块(区块4)对应的交易账本ID+交易key值+区块编号4+交易编号(区块4包括的全部交易的交易编号)登记到历史数据库,并在历史数据库更新分支0的保存点:{key=分支0+交易账本ID,value=区块编号4+区块4中最大交易编号},在索引数据库登记:{key=区块编号4,value={分支号=0,区块文件编号=0,区块在区块文件偏移量=M1字节,区块容量=P4字节}}。
区块编号2是图5中线程2是第一个区块,因此线程0读取的上一个区块描述符为初始值:{分支号=2,区块文件编号=-1,区块在区块文件偏移量=-1字节,区块容量=0字节}。与线程0处理相同,新区块追加到分支2的最后一个区块的末尾。然后记录新区块的描述符:{分支号=2,区块文件编号=0,区块在区块文件偏移量=0字节(区块编号2是分支2的第一个区块,偏移量为0字节),区块容量=P1字节}。线程2把编号2区块(区块2)对应的交易账本ID+交易key值+区块编号2+交易编号(区块2包括的全部交易的交易编号)登记到历史数据库,并在历史数据库更新分支2的保存点:{key=分支2+交易账本ID,value=区块编号2+区块2中最大交易编号},在索引数据库登记:{key=区块编号2,value={分支号=2,区块文件编号=0,区块在区块文件偏移量=0字节,区块容量=P1字节}}。
Peer节点主线程等待各分支处理线程处理完毕,按区块编号2、3、4、5和区块编号2、3、4、5中各个交易的交易时间串行记录各个交易至状态数据库,以保证世界状态一致性。
图7是本发明实施例中区块异常回滚的流程图。图8是本发明另一实施例中区块异常回滚的流程图。图9是本发明具体实施例中区块异常回滚的流程图。如图7-图9所示,若区块写入星型文件账本的某一分支失败,则对应失败分支的处理线程需通知Peer节点主线程自身异常的区块编号。Peer节点主线程需调起处理该异常区块之后的分支处理线程做回滚。基于区块链的区块写入方法还包括:
S301:获取异常区块的区块编号,根据异常区块的区块编号确定至少一个待回滚区块的区块编号。
在执行S301之前,分支处理线程出现异常,分支处理线程处理自身回滚,通知Peer节点主线程自身处理异常的区块编号(异常区块的区块编号),Peer节点主线程执行S301。
具体实施时,待回滚区块的区块编号大于异常区块的区块编号,待回滚区块为区块编号大于异常区块编号的区块。
S302:根据待回滚区块的区块编号和文件账本分支数量确定待回滚区块对应的分支。
具体实施时,待回滚区块所在的分支编号为待回滚区块的区块编号对文件账本分支数量的余数。
S303:并行调用分支的分支处理线程对各个待回滚区块进行如下并行处理:获取分支中待回滚区块的上一个区块的描述符;根据上一个区块的描述符删除待回滚区块。
其中,待回滚区块的上一个区块的区块编号为待回滚区块的区块编号与文件账本分支数量的差。上一个区块的描述符包括分支号、区块文件编号、区块在区块文件的偏移量和区块容量。根据上一个区块的描述符删除待回滚区块,即根据上一个区块的描述符截断待回滚区块所在的区块文件,截断区块文件到待回滚区块的上一个区块。具体实施时,可以根据上一个区块在区块文件偏移量和上一个区块的区块容量确定上一个区块的位置,以截断待回滚区块所在的区块文件至该位置。
一实施例中,执行S303之后还包括:
1、并行调用分支的分支处理线程对各个待回滚区块进行如下并行处理:在历史数据库中删除待回滚区块中的多个交易;根据上一个区块在历史数据库中更新分支对应的保存点;在索引数据库中删除待回滚区块的描述符。
具体实施时,Peer节点主线程并行调用待回滚区块对应的分支处理线程的异常处理流程,以回滚待回滚区块、删除历史数据库和索引数据库中待回滚区块对应的记录。
2、根据异常区块确定正常区块。
其中,正常区块为区块编号小于异常区块编号的区块。
3、按照各个正常区块的区块编号和各个正常区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
具体实施时,Peer节点主线程在各分支线程异常处理完毕后,按照各个正常区块的区块编号和各个正常区块中各个交易的交易时间在状态数据库中从小到大串行记录各个交易的交易结果,以保证世界状态一致性。
如图9所示,若线程0中区块编号4写入星型文件账本分支0失败,则通知Peer节点主线程自身处理异常的区块编号4。Peer节点主线程对区块编号大于4的区块编号5,调用线程1的异常处理,获取待回滚区块(区块5)在本分支上一个区块的区块编号1。区块编号1可通过待回滚区块编号5-分支数4得到。获取区块编号1的描述符:{分支号=1,区块文件编号=0,区块在区块文件偏移量=0字节,区块容量=P5字节},截断区块文件0的大小至P5字节(区块在区块文件偏移量+区块容量=0字节+P5字节=P5字节),即去掉区块5的内容。从缓存队列再次获取区块编号5,解析出区块5的每笔交易,删除区块5的交易账本ID+交易key值+区块编号5+交易编号(区块5包括的全部交易的交易编号),且更新分支1的保存点为:{key=分支1+交易账本ID,value=区块编号1+区块1中最大交易编号},在索引数据库删除:{key=区块编号5,value={分支号=1,区块文件编号=0,区块在区块文件偏移量=M2字节,区块容量=P6字节}}。
在链式结构文件账本中,当大量交易按区块编号区间查询交易时,相邻区块存储在同一个区块文件会使该区块文件承受大量读取请求。在星型结构文件账本中,因相邻区块分布在不同的分支,查询请求会分散在不同分支以降低单个区块文件请求的数据量。具体实施时,对于一段区块编号区间,可使用索引数据库查到区块的描述符{分支号,区块文件编号,区块在区块文件偏移量,区块容量},以定位到该区块所在位置。
图10是现有技术查询交易的示意图。表1是现有技术的查询数据量表。如图10所示,对于现有的链式结构文件账本结构,若同时存在2个查询请求,查询请求0需读取区块编号1-3的区间,查询请求1需读取区块编号2-4的区间,则各区块文件承受的查询数据量如表1所示。
表1
区块文件编号 查询数据量
编号0的区块文件 5个区块
编号1的区块文件 1个区块
图11是本发明实施例中查询交易的示意图。表2是本发明的查询数据量表。如图11所示,对于星型文件账本结构,若同时存在2个查询请求,查询请求0需读取区块编号1-3的区间,查询请求1需读取区块编号2-4的区间,则各区块文件承受的查询数据量如表2所示。
表2
区块文件编号 查询数据量
分支编号0的编号0区块文件 1个区块
分支编号1的编号0区块文件 1个区块
分支编号2的编号0区块文件 2个区块
分支编号3的编号0区块文件 2个区块
可见相对于现有的链式结构文件账本,星型结构文件账本可降低并发请求场景下单个区块的请求数据量;且随着分支数增加,降低的效果将越明显。本发明可通过资源池管理区块文件资源,单个区块文件请求数据量的下降令文件资源更快得到释放,进一步提高了请求响应速度和并发度。
本发明实施例的具体流程如下:
一、区块写入:
1、Peer节点主线程根据文件账本分支数量获取多个目标区块。
2、Peer节点主线程根据各个目标区块的区块编号确定各个目标区块对应的分支。
3、Peer节点主线程并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据分支中最后一个区块在区块文件的偏移量、分支中最后一个区块的区块容量和该区块文件的总容量确定该区块文件的剩余容量;根据该区块文件的剩余容量与目标区块容量的比较结果确定写入位置;在写入位置添加目标区块;在历史数据库中登记目标区块中的交易并根据目标区块更新分支对应的保存点;在索引数据库中登记目标区块的描述符。
4、Peer节点主线程在各分支线程写入目标区块,并在历史数据库和索引数据库登记完毕后,按照各个目标区块的区块编号和各个目标区块中各个交易的交易时间在状态数据库中从小到大串行记录各个交易的交易结果。
二、异常区块回滚
1、Peer节点的分支处理线程通知Peer节点主线程自身处理异常的区块编号。
2、Peer节点主线程获取异常区块的区块编号,根据异常区块的区块编号确定至少一个待回滚区块的区块编号。
3、Peer节点主线程根据待回滚区块的区块编号和文件账本分支数量确定待回滚区块对应的分支。
4、Peer节点主线程并行调用分支的分支处理线程对各个待回滚区块进行如下并行处理:
获取分支中待回滚区块的上一个区块的描述符;根据上一个区块的描述符删除待回滚区块。在历史数据库中删除待回滚区块中的多个交易;根据上一个区块在历史数据库中更新分支对应的保存点;在索引数据库中删除待回滚区块的描述符。
5、Peer节点主线程根据异常区块确定正常区块,在各分支线程异常处理完毕后,按照各个正常区块的区块编号和各个正常区块中各个交易的交易时间在状态数据库中从小到大串行记录各个交易的交易结果。
综上,本发明使用星型结构组织文件账本,相对现的有链式结构,可实现区块并行写入并降低每个区块文件的读取数据量,提高交易并发度,降低交易响应时间。
基于同一发明构思,本发明实施例还提供了一种基于区块链的区块写入系统,由于该系统解决问题的原理与基于区块链的区块写入方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。
图12是本发明实施例中基于区块链的区块写入系统的结构框图。如图12所示,基于区块链的区块写入系统包括:
目标区块获取单元,用于根据文件账本分支数量获取多个目标区块;
分支确定单元,用于根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行处理单元,用于并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据分支中最后一个区块的描述符确定写入位置;
在写入位置添加目标区块。
在其中一种实施例中,并行处理单元还用于:
并行调用分支的分支处理线程对各个待回滚区块进行如下并行处理:在历史数据库中登记目标区块中的交易并根据目标区块更新分支对应的保存点;在索引数据库中登记目标区块的描述符;
基于区块链的区块写入系统还包括:第一串行记录单元,用于按照各个目标区块的区块编号和各个目标区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
在其中一种实施例中,描述符包括区块在区块文件的偏移量和区块容量;
并行处理单元具体用于:
根据分支中最后一个区块在区块文件的偏移量、分支中最后一个区块的区块容量和该区块文件的总容量确定该区块文件的剩余容量;
根据该区块文件的剩余容量与目标区块容量的比较结果确定写入位置。
在其中一种实施例中,描述符还包括区块文件编号;
并行处理单元具体用于:
当该区块文件的剩余容量小于目标区块容量时,根据分支中最后一个区块的区块文件编号建立新的区块文件,确定新的区块文件的初始位置为写入位置;
当该区块文件剩余容量大于或等于目标区块容量时,根据分支中最后一个区块在区块文件的偏移量和分支中最后一个区块的区块容量在该区块文件中确定写入位置。
在其中一种实施例中,还包括:
异常区块获取单元,用于获取异常区块的区块编号,根据异常区块的区块编号确定至少一个待回滚区块的区块编号;
分支确定单元还用于:根据待回滚区块的区块编号和文件账本分支数量确定待回滚区块对应的分支;
并行处理单元还用于:并行调用分支的分支处理线程对各个待回滚区块进行如下并行处理:
获取分支中待回滚区块的上一个区块的描述符;
根据上一个区块的描述符删除待回滚区块。
在其中一种实施例中,并行处理单元还用于:
并行调用分支的分支处理线程对各个待回滚区块进行如下并行处理:在历史数据库中删除待回滚区块中的多个交易;根据上一个区块在历史数据库中更新分支对应的保存点;在索引数据库中删除待回滚区块的描述符;
基于区块链的区块写入系统还包括:
正常区块确定单元,用于根据异常区块确定正常区块;
第二串行记录单元,用于按照各个正常区块的区块编号和各个正常区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
综上,本发明实施例的基于区块链的区块写入系统先根据文件账本分支数量获取多个目标区块并确定各个目标区块对应的分支,再并行调用对应的分支处理线程并行添加各个目标区块,可以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。
本发明实施例还提供能够实现上述实施例中的基于区块链的区块写入方法中全部步骤的一种计算机设备的具体实施方式。图13是本发明实施例中计算机设备的结构框图,参见图13,所述计算机设备具体包括如下内容:
处理器(processor)1301和存储器(memory)1302。
所述处理器1301用于调用所述存储器1302中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的基于区块链的区块写入方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
根据文件账本分支数量获取多个目标区块;
根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据分支中最后一个区块的描述符确定写入位置;
在写入位置添加目标区块。
综上,本发明实施例的计算机设备先根据文件账本分支数量获取多个目标区块并确定各个目标区块对应的分支,再并行调用对应的分支处理线程并行添加各个目标区块,可以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。
本发明实施例还提供能够实现上述实施例中的基于区块链的区块写入方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于区块链的区块写入方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
根据文件账本分支数量获取多个目标区块;
根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据分支中最后一个区块的描述符确定写入位置;
在写入位置添加目标区块。
综上,本发明实施例的计算机可读存储介质先根据文件账本分支数量获取多个目标区块并确定各个目标区块对应的分支,再并行调用对应的分支处理线程并行添加各个目标区块,可以并行写入区块,进而降低单个区块文件的读取数据量,提高交易并发度并降低交易响应时间。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元,或装置都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。

Claims (14)

1.一种基于区块链的区块写入方法,其特征在于,包括:
根据文件账本分支数量获取多个目标区块;
根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据所述分支中最后一个区块的描述符确定写入位置;
在所述写入位置添加所述目标区块;
所述基于区块链的区块写入方法还包括:
将单条链式结构的文件账本拆成多条分支组成星型结构,每个分支的文件账本之间并行写入区块,区块所在分支编号为区块编号对星型文件账本分支数量取余数,每个分支上的区块保持先后关系,每个区块的下一个区块在相邻的下一个分支。
2.根据权利要求1所述的基于区块链的区块写入方法,其特征在于,还包括:
并行调用对应的分支处理线程对各个目标区块进行如下并行处理:在历史数据库中登记所述目标区块中的交易并根据所述目标区块更新所述分支对应的保存点;在索引数据库中登记所述目标区块的描述符;
按照各个目标区块的区块编号和各个目标区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
3.根据权利要求1所述的基于区块链的区块写入方法,其特征在于,所述描述符包括区块在区块文件的偏移量和区块容量;
根据所述分支中最后一个区块的描述符确定写入位置包括:
根据所述分支中最后一个区块在区块文件的偏移量、所述分支中最后一个区块的区块容量和该区块文件的总容量确定该区块文件的剩余容量;
根据该区块文件的剩余容量与目标区块容量的比较结果确定写入位置。
4.根据权利要求3所述的基于区块链的区块写入方法,其特征在于,所述描述符还包括区块文件编号;
根据该区块文件的剩余容量与目标区块容量的比较结果确定写入位置包括:
当该区块文件的剩余容量小于所述目标区块容量时,根据所述分支中最后一个区块的区块文件编号建立新的区块文件,确定所述新的区块文件的初始位置为写入位置;
当该区块文件剩余容量大于或等于所述目标区块容量时,根据所述分支中最后一个区块在区块文件的偏移量和所述分支中最后一个区块的区块容量在该区块文件中确定写入位置。
5.根据权利要求1所述的基于区块链的区块写入方法,其特征在于,还包括:
获取异常区块的区块编号,根据所述异常区块的区块编号确定至少一个待回滚区块的区块编号;
根据所述待回滚区块的区块编号和所述文件账本分支数量确定所述待回滚区块对应的分支;
并行调用所述分支的分支处理线程对各个待回滚区块进行如下并行处理:
获取所述分支中待回滚区块的上一个区块的描述符;
根据所述上一个区块的描述符删除所述待回滚区块。
6.根据权利要求5所述的基于区块链的区块写入方法,其特征在于,还包括:
并行调用所述分支的分支处理线程对各个待回滚区块进行如下并行处理:在历史数据库中删除所述待回滚区块中的多个交易;根据所述上一个区块在历史数据库中更新所述分支对应的保存点;在索引数据库中删除所述待回滚区块的描述符;
根据所述异常区块确定正常区块;
按照各个正常区块的区块编号和各个正常区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
7.一种基于区块链的区块写入系统,其特征在于,包括:
目标区块获取单元,用于根据文件账本分支数量获取多个目标区块;
分支确定单元,用于根据各个目标区块的区块编号确定各个目标区块对应的分支;
并行处理单元,用于并行调用对应的分支处理线程对各个目标区块进行如下并行处理:
根据所述分支中最后一个区块的描述符确定写入位置;
在所述写入位置添加所述目标区块;
所述分支确定单元具体用于:
将单条链式结构的文件账本拆成多条分支组成星型结构,每个分支的文件账本之间并行写入区块,区块所在分支编号为区块编号对星型文件账本分支数量取余数,每个分支上的区块保持先后关系,每个区块的下一个区块在相邻的下一个分支。
8.根据权利要求7所述的基于区块链的区块写入系统,其特征在于,所述并行处理单元还用于:
并行调用所述分支的分支处理线程对各个待回滚区块进行如下并行处理:在历史数据库中登记所述目标区块中的交易并根据所述目标区块更新所述分支对应的保存点;在索引数据库中登记所述目标区块的描述符;
所述基于区块链的区块写入系统还包括:第一串行记录单元,用于按照各个目标区块的区块编号和各个目标区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
9.根据权利要求7所述的基于区块链的区块写入系统,其特征在于,所述描述符包括区块在区块文件的偏移量和区块容量;
所述并行处理单元具体用于:
根据所述分支中最后一个区块在区块文件的偏移量、所述分支中最后一个区块的区块容量和该区块文件的总容量确定该区块文件的剩余容量;
根据该区块文件的剩余容量与目标区块容量的比较结果确定写入位置。
10.根据权利要求9所述的基于区块链的区块写入系统,其特征在于,所述描述符还包括区块文件编号;
所述并行处理单元具体用于:
当该区块文件的剩余容量小于所述目标区块容量时,根据所述分支中最后一个区块的区块文件编号建立新的区块文件,确定所述新的区块文件的初始位置为写入位置;
当该区块文件剩余容量大于或等于所述目标区块容量时,根据所述分支中最后一个区块在区块文件的偏移量和所述分支中最后一个区块的区块容量在该区块文件中确定写入位置。
11.根据权利要求7所述的基于区块链的区块写入系统,其特征在于,还包括:
异常区块获取单元,用于获取异常区块的区块编号,根据所述异常区块的区块编号确定至少一个待回滚区块的区块编号;
所述分支确定单元还用于:根据所述待回滚区块的区块编号和所述文件账本分支数量确定所述待回滚区块对应的分支;
所述并行处理单元还用于:并行调用所述分支的分支处理线程对各个待回滚区块进行如下并行处理:
获取所述分支中待回滚区块的上一个区块的描述符;
根据所述上一个区块的描述符删除所述待回滚区块。
12.根据权利要求11所述的基于区块链的区块写入系统,其特征在于,所述并行处理单元还用于:
并行调用所述分支的分支处理线程对各个待回滚区块进行如下并行处理:在历史数据库中删除所述待回滚区块中的多个交易;根据所述上一个区块在历史数据库中更新所述分支对应的保存点;在索引数据库中删除所述待回滚区块的描述符;
所述基于区块链的区块写入系统还包括:
正常区块确定单元,用于根据所述异常区块确定正常区块;
第二串行记录单元,用于按照各个正常区块的区块编号和各个正常区块中各个交易的交易时间在状态数据库中串行记录各个交易的交易结果。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述的基于区块链的区块写入方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的基于区块链的区块写入方法的步骤。
CN202011153612.6A 2020-10-26 2020-10-26 基于区块链的区块写入方法及系统 Active CN112231105B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011153612.6A CN112231105B (zh) 2020-10-26 2020-10-26 基于区块链的区块写入方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011153612.6A CN112231105B (zh) 2020-10-26 2020-10-26 基于区块链的区块写入方法及系统

Publications (2)

Publication Number Publication Date
CN112231105A CN112231105A (zh) 2021-01-15
CN112231105B true CN112231105B (zh) 2023-10-27

Family

ID=74109988

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011153612.6A Active CN112231105B (zh) 2020-10-26 2020-10-26 基于区块链的区块写入方法及系统

Country Status (1)

Country Link
CN (1) CN112231105B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157710B (zh) * 2021-02-01 2022-08-09 苏宁金融科技(南京)有限公司 区块链数据并行写入方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829772A (zh) * 2018-05-29 2018-11-16 杭州趣链科技有限公司 一种基于文件的区块链区块存储和读取方法
CN109285006A (zh) * 2018-09-20 2019-01-29 中链科技有限公司 一种区块链数据的并行验证处理方法及装置
WO2019242508A1 (zh) * 2018-06-20 2019-12-26 深圳市红砖坊技术有限公司 区块链系统和应用于区块链系统的路由节点的路由方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10565192B2 (en) * 2017-08-01 2020-02-18 International Business Machines Corporation Optimizing queries and other retrieve operations in a blockchain

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829772A (zh) * 2018-05-29 2018-11-16 杭州趣链科技有限公司 一种基于文件的区块链区块存储和读取方法
WO2019242508A1 (zh) * 2018-06-20 2019-12-26 深圳市红砖坊技术有限公司 区块链系统和应用于区块链系统的路由节点的路由方法
CN109285006A (zh) * 2018-09-20 2019-01-29 中链科技有限公司 一种区块链数据的并行验证处理方法及装置

Also Published As

Publication number Publication date
CN112231105A (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
US9811577B2 (en) Asynchronous data replication using an external buffer table
EP1808779A1 (en) Bundling database
CN107197359B (zh) 视频文件缓存方法及装置
WO2016169237A1 (zh) 数据处理方法及装置
CN110196759B (zh) 分布式事务处理方法和装置、存储介质及电子装置
CN113672627B (zh) Elasticsearch搜索引擎索引构建方法及装置
WO2021114025A1 (zh) 增量数据确定方法、确定装置、服务器及终端设备
WO2022048358A1 (zh) 数据处理方法、装置及存储介质
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
WO2024041022A1 (zh) 数据库表变更方法、装置、设备和存储介质
CN112231105B (zh) 基于区块链的区块写入方法及系统
CN111930305A (zh) 数据的存储方法和装置、存储介质、电子装置
CN111309805A (zh) 数据库的数据读写方法及装置
CN109614411B (zh) 数据存储方法、设备和存储介质
US20130332465A1 (en) Database management device and database management method
US11853229B2 (en) Method and apparatus for updating cached information, device, and medium
US10747438B1 (en) Reporting using archived data
CN109977074B (zh) 一种基于hdfs的lob数据处理方法及装置
CN110928923A (zh) 一种基于区块链的数据存储方法及系统
CN113032349A (zh) 数据存储方法、装置、电子设备及计算机可读介质
CN114003203B (zh) 一种活动计数变量的维护方法、装置、设备及可读介质
US10942912B1 (en) Chain logging using key-value data storage
CN114385657A (zh) 数据存储方法、装置及存储介质
US10747461B1 (en) Updating objects for archived objects
CN113950145B (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