CN112445792B - 区块链区块数据存储方法、装置、电子设备及存储介质 - Google Patents
区块链区块数据存储方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112445792B CN112445792B CN201910831819.5A CN201910831819A CN112445792B CN 112445792 B CN112445792 B CN 112445792B CN 201910831819 A CN201910831819 A CN 201910831819A CN 112445792 B CN112445792 B CN 112445792B
- Authority
- CN
- China
- Prior art keywords
- container
- storage sub
- storage
- block
- pointer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013500 data storage Methods 0.000 title claims abstract description 30
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种区块链区块数据存储方法、装置、电子设备及计算机可读存储介质。该方法包括:获取新生成的区块数据;将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。本发明实施例能够提高分布式节点的资源利用率。
Description
技术领域
本发明实施例涉及区块链技术领域,尤其涉及一种区块链区块数据存储方法、装置、电子设备以及计算机可读存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
传统区块链的结构示意图如图1所示,后继区块的区块头记录着前导区块的哈希值,使得区块链维护这一条不断增长的链时,该链只可以添加记录,而发生过的记录不可篡改。
由于区块链运行时需要不断添加记录,使得链长度总在变化,因此,分布式节点一直要为新生区块动态分配存储空间,资源利用率低。
发明内容
本发明实施例提供一种区块链区块数据存储方法、装置、电子设备以及计算机可读存储介质,以解决现有技术中分布式节点一直要为新生区块动态分配存储空间,从而导致资源利用率低的问题。
第一方面,本发明实施例提供一种区块链区块数据存储方法,所述方法包括:
获取新生成的区块数据;
将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。
第二方面,本发明实施例提供一种区块链区块数据存储装置,所述装置包括:
获取模块,用于获取新生成的区块数据;
写入模块,用于将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。
第三方面,本发明实施例提供一种电子设备,包括处理器,存储器,存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述区块链区块数据存储方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链区块数据存储方法的步骤。
本发明实施例中,首先,获取新生成的区块数据;然后,将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。
由于存储区块链的存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,可知,存储容器由N个存储子容器构成了有向环形链结构,且N为固定的正整数。这样,其存储容量的结构使区块链的最大长度受到限制,因此,固定存储容量的分布式节点即可维持区块链的运行,从而能够降低分布式节点的成本。同时,区块链运行时,可以直接将新生成的区块数据写入至存储子容器中,无需再为其动态分配存储空间,因此,能够提高分布式节点的资源利用率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获取其他的附图。
图1是传统区块链的结构示意图;
图2是本发明实施例提供的区块链区块数据存储方法的流程示意图;
图3是本发明实施例中存储容器的结构示意图;
图4是本发明实施例中区块链的存储结构示意图之一;
图5是本发明实施例提供的区块链区块数据存储方法中步骤202的具体实现流程示意图之一;
图6是本发明实施例提供的区块链区块数据存储方法中步骤202的具体实现流程示意图之二;
图7是本发明实施例中区块链的存储结构示意图之二;
图8是本发明实施例提供的区块链区块数据存储装置的结构示意图;
图9是本发明实施例提供的电子设备的结构示意图。
具体实施方式
从背景技术可以看出,分布式节点在区块链区块存储时存在资源利用率低的问题。同时,由于区块链长度的不断增长,分布式节点的存储空间也不断增加,使得对分布式节点的存储容量要求较高。
因此,针对传统的区块链,有方案提出对区块链进行截断。
比如,相关技术中,周期性地根据自身存储的区块链,判断是否需要将所述区块链截断,从而保证区块链长度不超过某个数值。
具体而言,仍然认为区块链是一条一维空间上不断增长的链,链上所有已被生成且被视为处于当前交易范围的区块都是不可被更改的;按周期计算一个区块链的截断位置,这个位置需要本节点计算和联合所有分布式节点计算及共识后才能确定。截断位置设置的区块或新建一个区块为伪创世区块,伪创世区块之前的区块链及数据将被存储到设定的存储器,而后其存储空间将被动态释放。
然而,相关技术中存在如下缺陷:
第一,区块链截断方法复杂:相关技术中仍然认为区块链是一条一维空间上不断增长的链,链上所有已被生成且被视为处于当前交易范围的区块都是不可被更改的,也就是说,区块链长度是总是动态变化的。因此,周期性截取区块链就要求对区块链上每个区块进行标注次序号或时间戳,用以实时的计算区块链长度或生成时间长度;同时,每个分布式节点都必须维护一套较为复杂的算法以实施区块链截断动作。
第二,资源利用率低:相关技术中截断方法决定了每个留作生成新区块时使用的区块链(即截断后的生成时间较晚的区块链,维护当前交易而非历史交易记录的区块链等概念)占用分布式节点存储空间总长度由N逐渐增加到M、又突然下减到N的过程。假设初始被截断状态下,留作生成新区块时使用的区块链长度为N,随着新生区块的产生和链接区块的区块链长度逐渐增长,当增长到M时区块链再次发生截断,截断后留下的留作生成新区块时使用的区块链长度再次为N。这就使得一个存储容量本身大于或等于M的分布式节点设备,在区块链系统运行中维持的区块链平均长度为(N+M)/2,因此,资源利用率仍有较大上升空间。同时,截断之后仍然要为新生区块动态分配存储空间,并链接到截断之后生成时间较晚的区块链后面。
第三,分布式节点成本较高:相关技术中,分布式节点做区块链截断操作时将生成时间较早的区块链即历史区块数据仍独立存储于分布式节点自身硬件或自身硬件以外的独立存储器中,使得对分布式节点的存储容量要求较高。
基于此,本发明实施例提出一种新的区块链区块数据存储方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
下面首先对本发明实施例提供的区块链区块数据存储方法进行说明。
需要说明的是,本发明实施例提供的区块链区块数据存储方法可以应用于电子设备。这里,该电子设备可以为如手机、电脑、个人数字助理等嵌入式设备,该嵌入式设备作为区块链系统的分布式节点,用于对区块链的区块数据进行存储。
参见图2,图中示出了本发明实施例提供的区块链区块数据存储方法的流程示意图。如图2所示,该方法可以包括如下步骤:
步骤201,获取新生成的区块数据。
这里,所述区块数据可以由区块链系统的服务器生成,生成之后广播给区块链系统的所有分布式节点,供分布式节点共识验证。
作为分布式节点的电子设备实时接收新生成的区块数据之后,对接收的区块数据进行一系列的共识验证,若共识验证通过,获取新生成的区块数据。
应当说明的是,所述新生成的区块数据为基于时间戳而最新生成的区块数据。
步骤202,将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。
这里,作为分布式节点的电子设备在创建区块链之初,需要为区块链系统分配可配置的固定存储空间作为存储容器,将该存储容器配置成有向环形链结构。
具体的,参见图3,图中示出了本发明实施例中存储容器的结构示意图,如图3所示,所述存储容器被配置成N个存储子容器,分别为存储子容器1、存储子容器2···存储子容器N,所述N为大于或等于2的正整数值,且在配置完成之后,N将被固定。
所述N个存储子容器沿同一环绕方向顺序链接成一个环形链,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,比如,存储子容器1中包含有存储子容器2的地址,存储子容器N中包含有存储子容器1的地址。这些存储子容器被用来存储区块链的区块数据。
作为分布式节点的电子设备采用该存储容器存储区块链时,可以按照存储子容器的环绕方向和环绕次序依次将新生成的区块数据链接在区块链上。参见图4,图中示出了本发明实施例中区块链的存储结构示意图之一,如图4所示,存储子容器1存储创世区块,存储子容器2存储区块1···存储子容器N存储区块N-1等。
当然,其区块链的起始存储位置不一定是存储子容器1,可以是任意存储子容器;比如,也可以将存储子容器N作为区块链的起始存储位置,在区块链创建之初,用来存储区块链的创世区块,相应的,区块1则存储在存储子容器1中。
应当说明的是,上述区块链的存储结构只是作为一种示例,一存储子容器中可以不止存储一个区块数据。为了在有限的存储子容器中提高区块的存储率,可以按照存储子容器的大小和区块的大小,智能的在存储子容器中存储区块;比如,若存储子容器1的大小为20Kb,区块的大小为6Kb,则可以在存储子容器1中存储三个区块,若存储子容器2的大小为13Kb,则可以在存储子容器2中存储两个区块。
为了方便管理,可以在设置存储容器中,将N个存储子容器的大小设置成相等,且将N个存储子容器中存储的区块个数设置成相同;比如,在每一存储子容器中都设置成只存储一个区块,或者在每一存储子容器中都设置成存储两个区块等。
本发明实施例中,由于存储区块链的存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,可知,存储容器由N个存储子容器构成了有向环形链结构,且N为固定的正整数。这样,其存储容量的结构使区块链的最大长度受到限制,因此,固定存储容量的分布式节点即可维持区块链的运行,从而能够降低分布式节点的成本。同时,区块链运行时,可以直接将新生成的区块数据写入至存储子容器中,无需再为其动态分配存储空间,因此,能够提高分布式节点的资源利用率。
下面基于有向环形链结构的存储容器对区块链的存储进行详细说明。
进一步的,基于实施例一,参照图5,图中示出了本发明实施例提供的区块链区块数据存储方法中步骤202的具体实现流程示意图之一。如图5所示,所述步骤202具体包括:
步骤501,将新生成的区块数据写入至第一指针指向的存储子容器中。
在区块链创建之初,存储子容器中存储的区块数据为空,为控制区块数据的写入可以设置第一指针,该第一指针可以称之为新生区块游标,用于指示新生成的区块数据的写入地址。
所述第一指针的初始位置可以指向存储子容器1的起始地址,即在区块链的创世区块生成之时,基于第一指针指向的地址,将创世区块数据存储至存储子容器1中。
在第一指针控制区块数据写入完成之后,移动第一指针的位置,以控制下一个新生成的区块数据的写入。
所述第一指针可以根据具体情况进行移动,比如,若按照存储子容器的大小和区块的大小,智能的在存储子容器中存储区块,可以基于区块的大小,移动所述第一指针的位置,如在区块数据写入完成之后,可以控制第一指针向环绕方向在存储子容器中移动至少一个区块大小的地址间距,以控制下一个新生成的区块数据在该存储子容器的写入。
又比如,若存储子容器固定存储M个区块,可以将存储子容器等间距分割成M个位置,相应的,控制第一指针向环绕方向在存储子容器中基于相应的地址间距移动,以控制下一个新生成的区块数据在该存储子容器的写入。
应当说明的是,若存储子容器中可以存储多个区块,在第一指针指向的存储子容器未被填充完成之时,所述第一指针是在存储子容器的内部移动,比如,假设存储子容器可以存储两个区块,其相应的存储地址分别为存储子容器中的地址1和地址2,区块数据在地址1写入完成之后,将第一指针移动至指向地址2的位置。
又比如,若存储子容器固定只存储一个区块,在新生成的区块数据被写入完成之后,可以基于第一指针指向的存储子容器中存储的起始地址,将第一指针移动至指向沿环绕方向的下一存储子容器,以控制下一个新生成的区块数据在下一个存储子容器的写入。
步骤502,在第一指针指向的存储子容器填充完成的情况下,基于第一指针指向的存储子容器中存储的起始地址,将所述第一指针进行移动并指向沿所述环绕方向的下一存储子容器。
在第一指针指向的存储子容器填充完成的情况下,将控制第一指针在存储子容器之间移动。具体的,将所述第一指针移动至指向存储子容器中存储的起始地址,以将所述第一指针移动至指向沿所述环绕方向的下一存储子容器。
本发明实施例中,基于新生区块游标,可以控制新生成的区块数据链接至存储容器存储的区块链上。
进一步的,在N个存储子容器被完全填充完成时,所述区块链的长度将保持最大长度;这时,新生成的区块数据如果继续写入至存储子容器中,将会覆盖原有生成的区块数据。因此,为防止原有生成的区块数据的丢失,参照图6,图中示出了本发明实施例提供的区块链区块数据存储方法中步骤202的具体实现流程示意图之二。如图6所示,所述步骤202具体包括:
步骤601,判断所述第一指针指向的存储子容器的第一地址是否与第二指针指向的存储子容器的第二地址重合;所述第二地址为存储区块链的创世区块数据的地址。
在区块链创建之初,存储子容器中存储的区块数据为空,为控制存储容器中区块链的创世区块的存储,可以设置第二指针,该第二指针可以称之为创世区块游标,用于指示创世区块的位置。
所述第二指针的初始位置可以指向存储子容器1的起始地址。
在区块链创建之初,第一指针和第二指针指向的地址相同,随着新生成的区块数据的写入,第一指针随着存储子容器的环绕方向移动,直至又重新移动至指向存储子容器1的起始地址的位置。此时,存储容器被区块链的区块数据完全填充如图4所示,第一指针指向的存储子容器的第一地址与第二指针指向的存储子容器的第二地址将重合。
步骤602,若重合,将第二地址存储的创世区块从所述区块链截断。
若重合,由于新生成的区块数据将写入至第一地址,而第一地址又存储有区块链的创世区块,此时,为防止区块数据的丢失,将第二地址存储的创世区块从所述区块链截断。被截断的创世区块可以存储至另一区块链中,该另一区块链可以是传统的区块链,随着区块的增加而不断增长的链,并且,该另一区块链可以存储于自身硬件或自身硬件以外的独立存储器中。为了降低作为分布式节点的电子设备的存储成本,可以将被截断的创世区块上传至服务器。
步骤603,在第二指针指向的存储子容器不存在创世区块的情况下,基于第二指针指向的存储子容器中存储的起始地址,将所述第二指针进行移动并指向沿所述环绕方向的下一存储子容器。
在第二指针指示的创世区块被截断之后,被截断的创世区块的后继区块成为新的创世区块,移动第二指针的位置,以指示下一个创世区块。
所述第二指针可以根据具体情况进行移动,比如,若按照存储子容器的大小和区块的大小,智能的在存储子容器中存储区块,可以基于区块的大小,移动所述第二指针的位置,如在区块数据写入完成之后,可以控制第二指针向环绕方向在存储子容器中移动至少一个区块大小的地址间距,以指示下一个创世区块。
又比如,若存储子容器固定存储M个区块,可以将存储子容器等间距分割成M个位置,相应的,控制第二指针向环绕方向在存储子容器中基于相应的地址间距移动,以指示下一个创世区块。
应当说明的是,若存储子容器中可以存储多个区块,在第二指针指向的存储子容器还存在创世区块之时,所述第二指针是在存储子容器的内部移动,比如,假设存储子容器可以存储两个区块,其相应的存储地址分别为存储子容器中的地址1和地址2,地址1中存储的创世区块被截断之后,将第二指针移动至指向地址2的位置。
又比如,若存储子容器固定只存储一个区块,在创世区块被截断之后,可以基于第二指针指向的存储子容器中存储的起始地址,将第二指针移动至指向沿环绕方向的下一存储子容器,以指示下一个创世区块。
步骤604,将新生成的区块数据写入至被截断的创世区块数据存储的位置。
此时,参见图7,图中示出了本发明实施例中区块链的存储结构示意图之二,对比图4和图7可知,新生成的区块数据将覆盖被截断的创世区块数据,而被截断的创世区块的后继区块成为区块链新的创世区块。
步骤605,在第一指针指向的存储子容器填充完成的情况下,基于第一指针指向的存储子容器中存储的起始地址,将所述第一指针进行移动并指向沿所述环绕方向的下一存储子容器。
本发明实施例通过第一指针和第二指针,控制新生成的区块数据在存储容器中存储的同时,还能防止原有生成的区块数据的丢失。同时,将原有生成的区块数据上传至服务器,能够降低作为分布式节点的电子设备的存储成本。
下面在有向环形链结构的存储容器中对区块链的存储进行举例详细说明。
应用场景为作为分布式节点的电子设备,该电子设备为区块链系统分配可配置的固定存储空间作为存储容器,以存储区块链。同时,将该存储容器配置成有向环形链结构,所述存储容器被配置成N个存储子容器,分别为存储子容器1、存储子容器2···存储子容器N,所述N个存储子容器沿同一环绕方向顺序链接成一个环形链,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址。
基于被配置成有向环形链结构的存储容器,对区块链的区块数据进行存储,且每一存储子容器仅仅存储一个区块,其流程如下:
首先,区块链创建之初,存储子容器中存储的区块数据为空,设置创世区块游标和新生区块游标,且同时指向存储子容器1;
然后,创世区块生成,占据新生区块游标指向的存储子容器1,新生区块游标向存储子容器的环绕方向移动至指向存储子容器2;
接着,新生成的区块数据占据新生区块游标指向的存储子容器2;
接着,新生区块游标向存储子容器的环绕方向移动至指向存储子容器3;
接着,重复上述过程,直至每一存储子容器被填充完成;
接着,新生区块游标又重新指向存储子容器1,与创世区块游标重合,将创世区块游标指向的存储子容器的创世区块截断并历史封存,可以存储于另一区块链,该另一区块链可以是传统的区块链,也可以上传至可信服务器;
接着,创世区块游标向存储子容器的环绕方向移动至指向存储子容器2;
接着,新生成的区块数据覆盖被截断的创世区块的位置;
接着,新生区块游标向存储子容器的环绕方向移动至指向存储子容器2;
最后,重复上述过程。
下面对本发明实施例提供的区块链区块数据存储装置进行说明。
参见图8,图中示出了本发明实施例提供的区块链区块数据存储装置的结构示意图。如图8所示,区块链区块数据存储装置800包括:
获取模块801,用于获取新生成的区块数据;
写入模块802,用于将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。
可选的,所述写入模块802包括:
写入单元,用于将新生成的区块数据写入至第一指针指向的存储子容器中;
第一移动单元,用于在第一指针指向的存储子容器填充完成的情况下,基于第一指针指向的存储子容器中存储的起始地址,将所述第一指针进行移动并指向沿所述环绕方向的下一存储子容器。
可选的,所述写入模块802还包括:
判断单元,用于判断所述第一指针指向的存储子容器的第一地址是否与第二指针指向的存储子容器的第二地址重合;所述第二地址为存储区块链的创世区块数据的地址;
截断单元,用于若重合,将第二地址存储的创世区块从所述区块链截断;
第二移动单元,用于在第二指针指向的存储子容器不存在创世区块的情况下,基于第二指针指向的存储子容器中存储的起始地址,将所述第二指针进行移动并指向沿所述环绕方向的下一存储子容器;
第一写入单元,具体用于将新生成的区块数据写入至被截断的创世区块数据存储的位置。
可选的,所述写入模块802还包括:
上传单元,用于将被截断的创世区块上传至服务器。
本发明实施例提供的装置能够实现上述方法实施例中实现的各个过程,为避免重复,这里不再赘述。
本发明实施例中,由于存储区块链的存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,可知,存储容器由N个存储子容器构成了有向环形链结构,且N为固定的正整数。这样,其存储容量的结构使区块链的最大长度受到限制,因此,固定存储容量的分布式节点即可维持区块链的运行,从而能够降低分布式节点的成本。同时,区块链运行时,可以直接将新生成的区块数据写入至存储子容器中,无需再为其动态分配存储空间,因此,能够提高分布式节点的资源利用率。
下面对本发明实施例提供的电子设备进行说明。
参见图9,图中示出了本发明实施例提供的电子设备的结构示意图。如图9所示,电子设备900包括:处理器901、存储器902、用户接口903和总线接口904。
处理器901,用于读取存储器902中的程序,执行下列过程:
获取新生成的区块数据;
将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的正整数。
在图9中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器901代表的一个或多个处理器和存储器902代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口904提供接口。针对不同的用户设备,用户接口903还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器901负责管理总线架构和通常的处理,存储器902可以存储处理器901在执行操作时所使用的数据。
可选的,处理器901,具体用于:
将新生成的区块数据写入至第一指针指向的存储子容器中;
在第一指针指向的存储子容器填充完成的情况下,基于第一指针指向的存储子容器中存储的起始地址,将所述第一指针进行移动并指向沿所述环绕方向的下一存储子容器。
可选的,处理器901,具体用于:
判断所述第一指针指向的存储子容器的第一地址是否与第二指针指向的存储子容器的第二地址重合;所述第二地址为存储区块链的创世区块数据的地址;
若重合,将第二地址存储的创世区块从所述区块链截断;
在第二指针指向的存储子容器不存在创世区块的情况下,基于第二指针指向的存储子容器中存储的起始地址,将所述第二指针进行移动并指向沿所述环绕方向的下一存储子容器;
处理器901,具体还用于将新生成的区块数据写入至被截断的创世区块数据存储的位置。
可选的,处理器901,具体用于将被截断的创世区块上传至服务器。
本发明实施例中,由于存储区块链的存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,可知,存储容器由N个存储子容器构成了有向环形链结构,且N为固定的正整数。这样,其存储容量的结构使区块链的最大长度受到限制,因此,固定存储容量的分布式节点即可维持区块链的运行,从而能够降低分布式节点的成本。同时,区块链运行时,可以直接将新生成的区块数据写入至存储子容器中,无需再为其动态分配存储空间,因此,能够提高分布式节点的资源利用率。
优选的,本发明实施例还提供一种电子设备,包括处理器901,存储器902,存储在存储器902上并可在所述处理器901上运行的计算机程序,该计算机程序被处理器901执行时实现上述区块链区块数据存储方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述区块链区块数据存储方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁碟或者光盘等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种区块链区块数据存储方法,其特征在于,所述方法包括:
获取新生成的区块数据;
将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的固定正整数;
其中,所述N个存储子容器包括存储子容器1至N,存储子容器i中包含有存储子容器i+1的地址,存储子容器N中包含有存储子容器1的地址,1≤i<N;
所述将新生成的区块数据写入至存储容器存储的区块链中的步骤包括:
将新生成的区块数据写入至第一指针指向的存储子容器中;
在第一指针指向的存储子容器填充完成的情况下,基于第一指针指向的存储子容器中存储的起始地址,将所述第一指针进行移动并指向沿所述环绕方向的下一存储子容器;
所述将新生成的区块数据写入至第一指针指向的存储子容器中之前,所述方法还包括:
判断所述第一指针指向的存储子容器的第一地址是否与第二指针指向的存储子容器的第二地址重合;所述第二地址为存储区块链的创世区块数据的地址;
若重合,将第二地址存储的创世区块从所述区块链截断,将被截断的创世区块存储于另一区块链或者上传至可信服务器;
在第二指针指向的存储子容器不存在创世区块的情况下,基于第二指针指向的存储子容器中存储的起始地址,将所述第二指针进行移动并指向沿所述环绕方向的下一存储子容器,被截断的创世区块的后继区块成为新的创世区块;
所述将新生成的区块数据写入至第一指针指向的存储子容器中的步骤包括:
将新生成的区块数据写入至被截断的创世区块数据存储的位置。
2.根据权利要求1所述的方法,其特征在于,所述将第二地址存储的创世区块从所述区块链截断之后,所述方法还包括:
将被截断的创世区块上传至服务器。
3.一种区块链区块数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取新生成的区块数据;
写入模块,用于将新生成的区块数据写入至存储容器存储的区块链中;其中,所述存储容器由N个存储子容器沿同一环绕方向顺序链接后而成,在所述环绕方向上,上一存储子容器存储有下一存储子容器的起始地址,所述存储子容器用于存储区块链的区块数据;N为大于或等于2的固定正整数;
其中,所述N个存储子容器包括存储子容器1至N,存储子容器i中包含有存储子容器i+1的地址,存储子容器N中包含有存储子容器1的地址,1≤i<N;
所述写入模块包括:
写入单元,用于将新生成的区块数据写入至第一指针指向的存储子容器中;
第一移动单元,用于在第一指针指向的存储子容器填充完成的情况下,基于第一指针指向的存储子容器中存储的起始地址,将所述第一指针进行移动并指向沿所述环绕方向的下一存储子容器;
所述写入模块还包括:
判断单元,用于判断所述第一指针指向的存储子容器的第一地址是否与第二指针指向的存储子容器的第二地址重合;所述第二地址为存储区块链的创世区块数据的地址;
截断单元,用于若重合,将第二地址存储的创世区块从所述区块链截断,将被截断的创世区块存储于另一区块链或者上传至可信服务器;
第二移动单元,用于在第二指针指向的存储子容器不存在创世区块的情况下,基于第二指针指向的存储子容器中存储的起始地址,将所述第二指针进行移动并指向沿所述环绕方向的下一存储子容器,被截断的创世区块的后继区块成为新的创世区块;
第一写入单元,具体用于将新生成的区块数据写入至被截断的创世区块数据存储的位置。
4.根据权利要求3所述的装置,其特征在于,所述写入模块还包括:
上传单元,用于将被截断的创世区块上传至服务器。
5.一种电子设备,其特征在于,包括处理器,存储器,存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至2中任一项所述的区块链区块数据存储方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至2中任一项所述的区块链区块数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910831819.5A CN112445792B (zh) | 2019-09-04 | 2019-09-04 | 区块链区块数据存储方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910831819.5A CN112445792B (zh) | 2019-09-04 | 2019-09-04 | 区块链区块数据存储方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445792A CN112445792A (zh) | 2021-03-05 |
CN112445792B true CN112445792B (zh) | 2024-05-24 |
Family
ID=74735487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910831819.5A Active CN112445792B (zh) | 2019-09-04 | 2019-09-04 | 区块链区块数据存储方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445792B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111068A (zh) * | 2021-04-30 | 2021-07-13 | 永旗(北京)科技有限公司 | 一种基于区块链的数据存储方法 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855327A (zh) * | 2012-09-18 | 2013-01-02 | 中国石油天然气股份有限公司 | 一种小型嵌入式文件存储管理系统 |
CN106686087A (zh) * | 2016-12-30 | 2017-05-17 | 先锋支付有限公司 | 一种区块链截断方法及分布式节点 |
CN106897228A (zh) * | 2017-02-20 | 2017-06-27 | 山东威尔数据股份有限公司 | 一种NOR‑Flash哈希表存储方法及装置 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN108491335A (zh) * | 2018-03-30 | 2018-09-04 | 北京联想核芯科技有限公司 | 处理映射表项的方法、装置、设备及介质 |
CN108510268A (zh) * | 2018-02-09 | 2018-09-07 | 北京欧链科技有限公司 | 环形区块链结构、数据处理方法和装置 |
TW201837805A (zh) * | 2017-04-10 | 2018-10-16 | 安地卡及巴布達商區塊鏈控股有限公司 | 基於未判定資料保證區塊鏈交易的安全 |
CN109299957A (zh) * | 2018-10-25 | 2019-02-01 | 聂贞云 | 一种基于区块链的危化产品盛装容器溯源监管系统 |
CN109314642A (zh) * | 2016-02-23 | 2019-02-05 | 区块链控股有限公司 | 用区块链实施的用于安全投票和分配的计数系统和方法 |
CN109428892A (zh) * | 2017-09-01 | 2019-03-05 | 埃森哲环球解决方案有限公司 | 多阶段可重写区块链 |
CN109523261A (zh) * | 2018-11-29 | 2019-03-26 | 北京元心科技有限公司 | 区块链终端的交易验证方法、相关装置及可读存储介质 |
CN109543455A (zh) * | 2018-11-06 | 2019-03-29 | 联动优势科技有限公司 | 一种区块链的数据归档方法及装置 |
CN109583885A (zh) * | 2017-09-01 | 2019-04-05 | 埃森哲环球解决方案有限公司 | 回合控制可重写区块链 |
CN109814905A (zh) * | 2019-01-17 | 2019-05-28 | 上海边界智能科技有限公司 | 一种基于区块链的软件升级方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190080402A1 (en) * | 2017-09-11 | 2019-03-14 | Templum, Llc | System and method for providing a regulatory-compliant token |
-
2019
- 2019-09-04 CN CN201910831819.5A patent/CN112445792B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855327A (zh) * | 2012-09-18 | 2013-01-02 | 中国石油天然气股份有限公司 | 一种小型嵌入式文件存储管理系统 |
CN109314642A (zh) * | 2016-02-23 | 2019-02-05 | 区块链控股有限公司 | 用区块链实施的用于安全投票和分配的计数系统和方法 |
CN106686087A (zh) * | 2016-12-30 | 2017-05-17 | 先锋支付有限公司 | 一种区块链截断方法及分布式节点 |
CN106897228A (zh) * | 2017-02-20 | 2017-06-27 | 山东威尔数据股份有限公司 | 一种NOR‑Flash哈希表存储方法及装置 |
TW201837805A (zh) * | 2017-04-10 | 2018-10-16 | 安地卡及巴布達商區塊鏈控股有限公司 | 基於未判定資料保證區塊鏈交易的安全 |
CN109428892A (zh) * | 2017-09-01 | 2019-03-05 | 埃森哲环球解决方案有限公司 | 多阶段可重写区块链 |
CN109583885A (zh) * | 2017-09-01 | 2019-04-05 | 埃森哲环球解决方案有限公司 | 回合控制可重写区块链 |
CN108510268A (zh) * | 2018-02-09 | 2018-09-07 | 北京欧链科技有限公司 | 环形区块链结构、数据处理方法和装置 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN108491335A (zh) * | 2018-03-30 | 2018-09-04 | 北京联想核芯科技有限公司 | 处理映射表项的方法、装置、设备及介质 |
CN109299957A (zh) * | 2018-10-25 | 2019-02-01 | 聂贞云 | 一种基于区块链的危化产品盛装容器溯源监管系统 |
CN109543455A (zh) * | 2018-11-06 | 2019-03-29 | 联动优势科技有限公司 | 一种区块链的数据归档方法及装置 |
CN109523261A (zh) * | 2018-11-29 | 2019-03-26 | 北京元心科技有限公司 | 区块链终端的交易验证方法、相关装置及可读存储介质 |
CN109814905A (zh) * | 2019-01-17 | 2019-05-28 | 上海边界智能科技有限公司 | 一种基于区块链的软件升级方法及装置 |
Non-Patent Citations (3)
Title |
---|
Chain Veri: Blockchain-Based Firmware Verification System for IoT Environment;Jea-Min Lim et al.;《2018 IEEE International Conference on Internet of Things and IEEE Green Computing and Communications and IEEE Cyber, Physical and Social Computing and IEEE Smart Data》;1-7 * |
基于区块链技术的物联网信息记录安全存储;方诗虹 等;《西南民族大学学报(自然科学版)》;第45卷(第3期);284-289 * |
基于区块链的军事数据安全研究;孙岩 等;《指挥与控制学报》;第4卷(第3期);189-194 * |
Also Published As
Publication number | Publication date |
---|---|
CN112445792A (zh) | 2021-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3454519B1 (en) | Block generation method and device, and blockchain network | |
CN110457319B (zh) | 区块链状态数据存储方法及装置、电子设备 | |
CN107844268B (zh) | 一种数据分发方法、数据存储方法、相关装置以及系统 | |
CN102801784B (zh) | 一种分布式数据存储方法及设备 | |
CN101535958B (zh) | 用于跨越保护域边界的对象调用的方法、系统和设备 | |
CN109543455B (zh) | 一种区块链的数据归档方法及装置 | |
CN105593828A (zh) | 管理文件的方法、分布式存储系统和管理节点 | |
CN106933536B (zh) | 一种智能卡的应用加载运行方法及智能卡 | |
CN111625181B (zh) | 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 | |
CN102023843B (zh) | 函数的调用方法、装置及智能卡 | |
CN109918382A (zh) | 数据处理方法、装置、终端及存储介质 | |
JP6636647B2 (ja) | ランダム文字列を生成する方法および装置 | |
CN109447820A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN105468302A (zh) | 一种处理数据的方法、装置及系统 | |
CN112445792B (zh) | 区块链区块数据存储方法、装置、电子设备及存储介质 | |
CN109656836A (zh) | 一种数据处理方法及装置 | |
CN110719345A (zh) | 虚拟机mac地址生成方法、系统、设备及计算机介质 | |
CN105204782B (zh) | 一种实现数据存储的方法及装置 | |
CN110442601A (zh) | 一种Openstack镜像数据并行加速的方法和装置 | |
CN105893279B (zh) | 一种基于循环队列的数据传输方法及系统 | |
CN109558082B (zh) | 分布式文件系统 | |
US20130282782A1 (en) | Distribution apparatus, restoration apparatus, distribution method, restoration method, and distribution and restoration system | |
US20210382872A1 (en) | Blockchain-based Data Storage Method, Related Device and Storage Medium | |
CN103942149A (zh) | 用户态程序与内核交互报文的方法及系统 | |
CN109951275A (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 |