CN110531924A - 用于扩展区块链存储容量的方法和设备、存储介质及*** - Google Patents
用于扩展区块链存储容量的方法和设备、存储介质及*** Download PDFInfo
- Publication number
- CN110531924A CN110531924A CN201910470232.6A CN201910470232A CN110531924A CN 110531924 A CN110531924 A CN 110531924A CN 201910470232 A CN201910470232 A CN 201910470232A CN 110531924 A CN110531924 A CN 110531924A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- block
- data memory
- memory node
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000013500 data storage Methods 0.000 claims abstract description 23
- 230000003862 health status Effects 0.000 claims description 44
- 238000004321 preservation Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 230000006854 communication Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001771 impaired effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于扩展区块链存储容量的方法和设备、存储介质及***,属于区块链技术领域。用于扩展区块链存储容量的方法,包括至少一个区块链节点与至少一个数据存储节点相关联,区块链节点向所述数据存储节点写入区块数据,区块链节点接收所述数据存储节点发来的存储状态;其中,所述数据存储节点至少用于区块数据存储,以及向区块链节点发送存储状态。针对现有技术中区块链扩容实施不便的技术问题,采用本发明的技术方案,区块链的存储容量扩展便捷,不需要停止区块链节点,也无需进行大量的数据再同步或拷贝,可以实现区块数据存储的高可扩展。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及用于扩展区块链存储容量的方法和设备、存储介质及***。
背景技术
现有技术中的区块链随着存储数据体量越来越大,如果每一次身份认证都要经过所有认证节点的核实,明显会导致延迟和吞吐量较低;而将所有身份认证数据汇总起来使得账本的数据量几何级增长,如果由单个认证节点维护,显然也会导致整个区块链***的存储成本较高。
现有的去中心化的区块链应用***中,所有的计算和存储都是在区块链的节点上执行,所需投入的硬件成本较高,尤其是大型应用,将需要耗费大量的硬件成本,另,现有的去中心化应用***中由于每个节点需要存储完整的区块,并执行计算任务,导致数据吞吐量较小,无法满足应用需求。
区块数据作为区块链最核心的模块之一,是整个区块链正常运作必不可少的一个模块;现有的实现方案,区块数据都是存储在区块链节点本地;因此,可存储数据的大小依赖本地磁盘的大小,一旦本地磁盘用完,那么需要构建新的节点并重新同步数据,或者把现有的数据拷贝到新的磁盘,不管采用以上哪个方案,都对单个硬盘的大小要求很高,而且不方便实施;区块链运行的越久,累积的数据越多,就更难以实施。
中国发明专利申请,公布号:CN107832139A,公布日:2018年3月23日;公开了用于管理区块链节点的计算资源的方法、设备及***。该专利提出为区块链节点配置附加存储设备的概念,也就是相当于把现有区块链节点的存储容量变大而已,还是属于传统的扩展概念,也并没有进一步公开如何利用附加的存储设备进行存储和读取,扩展的内容较为笼统。
发明内容
1.发明要解决的技术问题
为了克服上述技术问题,本发明提供了用于扩展区块链存储容量的方法和设备、存储介质及***。采用本发明的技术方案,区块链的存储容量扩展便捷,不需要停止区块链节点,也无需进行大量的数据再同步或拷贝,可以实现区块数据存储的高可扩展。
2.技术方案
为解决上述问题,本发明提供的技术方案为:
第一方面,本发明提出用于扩展区块链存储容量的方法,适用于区块链节点,包括与至少一个数据存储节点相关联,以向所述数据存储节点写入区块数据,以接收所述数据存储节点发来的存储状态;
其中,所述数据存储节点至少用于区块数据存储,以及向区块链节点发送存储状态。
第二方面,本发明提出用于扩展区块链存储容量的方法,适用于数据存储节点,包括与至少一个区块链节点相关联,以保存所述区块链节点发送的区块数据,以向所述区块链节点发送存储状态。
第三方面,本发明另提出一种存储方法,适用于区块链节点,包括连续向第一数据存储节点写入区块数据,直到第一数据存储节点可用存储空间已满,从存储空间可用的数据存储节点中选择第二数据存储节点,重复以上步骤。
第四方面,本发明提出一种查询方法,包括根据待查询数据所在的区块高度,查询区块链节点上记录的数据存储节点的信息,查找到所述区块高度对应的数据节点,读取所述数据节点上所述区块高度的区块数据,以查找到待查询数据。
第五方面,本发明提出用于扩展区块链存储容量的***,包括用于向数据存储节点写入区块数据,接收所述数据存储节点发来的存储状态的区块链节点;用于保存所述区块链节点发送的区块数据,向所述区块链节点发送存储状态的数据存储节点;所述区块链节点与至少一个区块链节点相关联。
第六方面,本发明提出一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行第一至五方面所述的方法。
第七方面,本发明提出一种存储有计算机程序的存储介质,该程序被处理器执行时实现如第一至五方面任一项所述的方法。
3.有益效果
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
当现有区块链数据存储空间不足时,只需简单增加一个普通的机器作为新的数据存储节点,不需要停止区块链节点,也无需进行大量的数据再同步或拷贝,实现区块数据存储的高可扩展,区块链节点不用承担区块数据存储的功能,在执行计算任务时,可以增大数据吞吐量,满足多数应用需求。
附图说明
图1为本发明适用于区块链节点的方法流程图。
图2为图1优选实施方式的方法流程图。
图3为本发明适用于数据存储节点的扩容方法流程图。
图4为图3优选实施方式的方法流程图。
图5为本发明存储方法流程图。
图6为本发明查询方法流程图。
图7为本发明***结构示意图。
图8为图7的优选实施例之一。
图9为图7的优选实施例之二。
图10为本发明高可用技术方案的方法流程图。
图11为采用本发明技术方案的公链BTY存储方法流程图。
图12为实施例7中扩容后的公链BTY查询方法流程图。
图13为公链BTY扩容后的高可用技术方案的方法流程图。
图14为实施例8的优选实施例之一。
图15为实施例8的优选实施例之二。
图16为采用本发明技术方案的原链YCC存储方法流程图。
图17为实施例8中扩容后的原链YCC查询方法流程图。
图18为原链YCC扩容后的高可用技术方案的方法流程图。
图19为本发明的一种设备结构示意图。
具体实施方式
为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。
上述说明仅仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
本发明中所述的第一、第二等词语,是为了描述本发明的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本发明的技术方案不构成限定作用。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本申请所述的区块链节点,除了包含本申请所公开的技术特征外,还具有现有区块链节点所具有的功能,包括路由、区块链数据库、挖矿或钱包服务。采用本专利申请的技术方案在区块数据被存储的过程中,仍然可以为区块链节点配置新的数据存储节点,两者并行进行,极大提高了区块链的存储空间和可扩展性。
本申请所述的每个数据存储节点,并不是唯一与一个实体的存储设备相对应,客观上,可以由多个实体的存储设备构成,实际上可以与一个或多个区块链节点关联。
实施例1
用于扩展区块链存储容量的方法,如图1所示,包括:
S101、区块链节点与至少一个数据存储节点相关联;
S103、以向所述数据存储节点写入区块数据,以接收所述数据存储节点发来的存储状态;
其中,所述数据存储节点至少用于区块数据存储,以及向区块链节点发送存储状态。
在区块链节点上对交易数据进行验证,广播,然后放入区块链节点的临时交易池,等待矿工进行打包,交易数据被打包进区块中后,区块被验证,广播,经过共识,通过区块链节点传输给数据存储节点,区块数据存储在数据存储节点上。一个区块链节点可以和多个数据存储节点相关联,当一个数据存储节点的存储容量用完时,接下来使用另一个数据存储节点继续存储区块数据,仅需配置多个数据存储节点即可满足要求,区块链***的存储容量扩展便捷。
传统的区块链容量扩展方式中,一旦区块链节点的本地存储容量用完,要么构建新的区块链节点并重新同步区块数据,要么把现有的区块数据拷贝到新的磁盘;随着区块链***运行的时长,均存在耗时长,实施困难且成本较高的技术问题。
而本申请创造性的提出将多个数据存储节点与区块链节点相关联的方式,将原来的区块链节点的区块数据的存储功能转移给了数据存储节点,区块链节点不需要存储占用空间较大的区块数据,就可以在执行计算任务时,提高数据吞吐量,满足应用需求;而数据存储节点本身也不须具备区块链节点那种高性能的要求。一方面可以方便、快捷的扩大区块链节点的区块数据存储容量,另一方面可以提高区块链节点的数据吞吐量。
当现有数据存储空间不足时,只需简单增加一个普通的机器作为新的数据存储节点,不需要停止区块链节点,也无需进行大量的数据再同步或拷贝,实现区块数据存储的高可扩展。
所述数据存储节点发来的存储状态包括:所述数据存储节点的当前存储容量,以及所述数据存储节点当前保存的区块数据的区块开始高度与结束高度。那么,进一步地,本实施例所述的用于扩展区块链存储容量的方法,可以改进为,如图2所示,包括:
S101、区块链节点与至少一个数据存储节点相关联;
S102、以向所述数据存储节点写入区块数据;
S104、以接收所述数据存储节点发来的当前存储容量,以及当前保存的区块数据的区块开始高度与结束高度;
其中,所述数据存储节点至少用于区块数据存储,以及向区块链节点发送存储状态。
区块链节点接收数据存储节点发送的自身存储容量,通过监控数据存储节点的存储容量,判断数据存储节点的可用存储容量,方便区块链节点将可容下的区块数据存储在所述数据存储节点上。
区块链节点接收数据存储节点发来的保存的区块数据的区块开始高度与结束高度,通过监控所述数据存储节点保存的区块开始高度与结束高度,判断存储在所述数据存储节点上的区块数据内容,以便后期查询或读取对应的区块数据内容。
为了区块链节点更为有效管理数据存储节点,所述的区块链节点记录所述数据存储节点的信息。
所述的区块链节点管理所有数据存储节点,以便对数据存储节点进行控制,按照区块链节点的指令进行动作,实现区块数据的存储。
进一步地,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
所述的区块链节点使用元数据描述数据存储节点的信息,区块链节点通过记录所述数据存储节点保存的区块数据的区块开始高度与结束高度,起到区块数据的分类标识作用,便于判断和识别存储在所述数据存储节点上的区块数据内容,以便后期查询或读取对应的区块数据内容。
所述的区块链节点记录当前区块数据写入的数据存储节点,方便区块链对当前区块数据写入的数据存储节点进行管理和监控。
进一步地,所述区块链节点定期接收数据存储节点发来的健康状态。区块链节点需要与数据存储节点约定好,比如发个hello到区块链节点,如果区块链节点很长时间没收到数据存储节点发送的信息,那么区块链节点就可以认为数据存储节点有问题了,定期一般建议1S或2S;以监控数据存储节点的健康状态。
当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点同步数据存储节点上存储的区块数据。
当数据存储节点的健康状态不佳时,也就是所述区块链节点定期接收不到数据存储节点发来的健康状态,影响区块链的健康状态,导致区块链上存储的区块数据无法正常使用;那么为了解决所述方法的高可用问题,所述区块链节点指定另一个数据存储节点同步数据存储节点上存储的区块数据。具体方式为:
当个别数据存储节点坏掉时,重新安排其他已关联的尚未存储区块数据的数据存储节点,只需要同步该坏掉数据存储节点上存储的区块数据即可,这部分通过区块链节点中存储的数据存储节点的信息记录,查询该数据存储节点对应存储的区块高度信息数据,从其他或就近区块链节点进行下载请求,恢复到选定的数据存储节点上,具有高可用性。
实施例2
本实施例提出用于扩展区块链存储容量的方法,与实施例1的技术方案相对应,适用于数据存储节点,如图3所示,包括:
S201、数据存储节点与至少一个区块链节点相关联;
S203、以保存所述区块链节点发送的区块数据,以向所述区块链节点发送存储状态。
数据存储节点用于扩展区块链存储容量,准入条件不高,与传统方式中扩展区块链存储容量的技术方案相比,性价比高,且扩展便捷,具有高可扩展性。
所述存储状态包括:所述数据存储节点的当前存储容量,以及所述数据存储节点当前保存的区块数据的区块开始高度与结束高度。
进一步地,本实施例所述的用于扩展区块链存储容量的方法,可以改进为,如图4所示,包括:
S201、数据存储节点与至少一个区块链节点相关联;
S202、以保存所述区块链节点发送的区块数据;
S204、以向所述区块链节点发送数据存储节点的当前存储容量,以及当前保存的区块数据的区块开始高度与结束高度。
区块链节点接收数据存储节点发送的当前自身存储容量,通过监控数据存储节点的存储容量,判断数据存储节点的可用存储容量,方便区块链节点将可容下的区块数据存储在所述数据存储节点上。
区块链节点接收数据存储节点发来的保存的区块数据的区块开始高度与结束高度,通过监控所述数据存储节点保存的区块开始高度与结束高度,判断存储在所述数据存储节点上的区块数据内容,以便后期查询或读取对应的区块数据内容。
为了区块链节点更为有效管理数据存储节点,所述的区块链节点记录所述数据所述的区块链节点管理所有数据存储节点,以便对数据存储节点进行控制,按照区块链节点的指令进行动作,实现区块数据的存储。
进一步地,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
表1数据存储节点信息
key | 1 | 2 | 3 |
name | Data1 | Data2 | Data3 |
ip | 192.168.0.1 | 192.168.0.2 | 192.168.0.3 |
port | 12000 | 12000 | 12000 |
is_current_using | N | Y | N |
usable | N | Y | Y |
block_start_height | 0 | 10001 | - |
block_end_height | 10000 | 15000 | - |
storagespace | 2T | 8T | 1T |
所述的区块链节点使用元数据描述数据存储节点的信息,区块链节点通过记录所述数据存储节点保存的区块数据的区块开始高度与结束高度,起到区块数据的分类标识作用,便于判断和识别存储在所述数据存储节点上的区块数据内容,以便后期查询或读取对应的区块数据内容。
所述的区块链节点记录当前区块数据写入的数据存储节点,方便区块链对当前区块数据写入的数据存储节点进行管理和监控。
表2更新后的数据存储节点信息
例如,现在有3个数据存储节点Data1-3,Data1的存储空间已经写满区块数据,正在向Data2写数据,Data3还未用到,那么此时的Master meta的内容如表1所示。如果在此时,区块链节点又配置了一个数据存储节点Data4,那么Master meta的内容如表2所示。
上述方案不涉及高可用,所以,一旦某个数据存储节点坏掉了,那么对于一个区块链节点而言,需要从头开始同步所有区块数据到配置的各个数据存储节点上,相应地,Master meta也会更新。
为了实现高可用,本发明做出了进一步地改进,当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点同步数据存储节点上存储的区块数据。
当数据存储节点的健康状态不佳时,也就是所述区块链节点定期接收不到数据存储节点发来的健康状态,影响区块链的健康状态,导致区块链上存储的区块数据无法正常使用;那么为了解决所述方法存在的高可用问题,所述区块链节点指定另一个数据存储节点同步数据存储节点上存储的区块数据。具体方式为:
当所述区块链节点定期接收不到数据存储节点发来的健康状态,对应数据存储节点坏掉时;重新安排新的数据存储节点,只需要同步该坏掉数据存储节点上存储的区块数据即可,通过区块链节点中存储的数据存储节点的信息记录,查询该数据存储节点对应存储的区块高度信息数据,从其他或就近区块链节点进行下载请求,恢复到新的数据存储节点上,具有高可用性。
如图10所示,当所述区块链节点Master-node3定期接收不到数据存储节点Data2发来的健康状态时,说明与其关联的数据存储节点Data2坏掉,如图10中的步骤①;区块链节点Master-node3重新安排其他已关联的尚未存储区块数据的数据存储节点Data4代替Data2,只需要同步该坏掉数据存储节点Data2上存储的区块高度范围10001-15000的区块数据即可;如图10中的步骤②,通过区块链节点中Master-node3存储的数据存储节点的信息记录Master meta,查询该数据存储节点Data2对应存储的区块高度信息数据,向其他或就近区块链节点Master-node发出请求,下载区块高度范围10001-15000的区块数据,恢复到数据存储节点Data4上,如图10中的步骤③④所示,具有高可用性。
进一步地,所述数据存储节点定期向区块链节点发送健康状态。区块链节点需要与数据存储节点约定好,比如发个hello到区块链节点,如果区块链节点很长时间没收到数据存储节点发送的信息,那么区块链节点就可以认为数据存储节点有问题了,定期一般建议1S或2S;以监控数据存储节点的健康状态。
实施例3
本实施例在实施例1和2任一技术方案的基础上,提出了一种存储方法,适用于区块链节点,如图5所示,包括:
S301、区块链节点连续向第一数据存储节点写入区块数据,直到第一数据存储节点可用存储空间已满;
S303、从存储空间可用的数据存储节点中选择第二数据存储节点;其中,第二数据存储节点是与所述区块链节点已关联的、尚未保存区块数据的数据存储节点;
S305、重复步骤S301和S303。
步骤S301中区块链节点获知第一数据存储节点可用存储空间已满的方式有很多种,第一种实现方式是:第一数据存储节点主动向区块链节点发送自身存储空间剩余容量,可以是定期发送,也可以是在每次区块数据保存结束之后。第二种实现方式是:区块链节点与第一数据存储节点通信,查询其所剩存储容量大小,可以是定期发送,也可以是在每次区块数据保存结束之后。第三种实现方式是:当第一数据存储节点存储容量满时,向区块链节点发送存满的通知信息。本实施例仅列举以上三种方式,本发明不作限定,基于实际应用需求,还可以是其他能够让区块链节点获知数据存储节点存储空间大小的方式。
为确保存储方法的可用性,区块链节点定期接收数据存储节点发来的健康状态。区块链节点需要与数据存储节点约定好,比如发个hello到区块链节点,如果区块链节点很长时间没收到数据存储节点发送的信息,那么区块链节点就可以认为数据存储节点有问题了,定期一般建议1S或2S;以监控数据存储节点的健康状态。
当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点根据所述数据存储节点的信息同步数据存储节点上存储的区块数据。
当数据存储节点的健康状态不佳时,也就是所述区块链节点定期接收不到数据存储节点发来的健康状态;那么为了解决所述方法的高可用问题,所述区块链节点指定另一个数据存储节点同步数据存储节点上存储的区块数据。具体方式为:
当个别数据存储节点坏掉时,重新安排新的数据存储节点,只需要同步该坏掉数据存储节点上存储的区块数据即可,这部分通过区块链节点中存储的数据存储节点的信息记录,查询该数据存储节点对应存储的区块高度信息数据,从其他或就近区块链节点进行下载请求,恢复到新的数据存储节点上,具有高可用性。
所述的区块链节点记录所述数据所述的区块链节点管理所有数据存储节点,以便对数据存储节点进行控制,按照区块链节点的指令进行动作,实现区块数据的存储。
进一步地,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
所述的区块链节点使用元数据描述数据存储节点的信息,区块链节点通过记录所述数据存储节点保存的区块数据的区块开始高度与结束高度,起到区块数据的分类标识作用,便于判断和识别存储在所述数据存储节点上的区块数据内容,以便后期查询或读取对应的区块数据内容。
所述的区块链节点记录当前区块数据写入的数据存储节点,方便区块链对当前区块数据写入的数据存储节点进行管理和监控。
针对已与区块链节点匹配的数据存储节点而言,分为以下三种状态:第一种,对于一个正在保存区块链节点发送的区块数据的数据存储节点而言,不断接收区块链节点发送来的区块数据,直到数据存储节点的存储容量用尽。第二种,对于一个已经保存满区块数据的数据存储节点而言,定期向区块链节点发送健康状态,以监控存储的区块数据的可用性,区块链节点上记录该数据存储节点存储的区块数据的开始区块高度和结束区块高度,以便后期被查询和读取。第三种,对于一个没有被使用的数据存储节点而言,等待区块链节点使用其进行区块数据的存储,或者用于恢复被损坏的数据存储节点上存储的区块数据。
实施例4
本实施例在实施例1和2任一技术方案的基础上,结合实施例3的一种存储方法,相应地,本实施例提出一种查询方法,如图6所示,包括:
S401、根据待查询数据所在的区块高度,查询区块链节点上记录的数据存储节点的信息,查找到所述区块高度对应的数据节点;
S403、读取所述数据节点上所述区块高度的区块数据,以查找到待查询数据。
所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
实施例5
本实施例用于扩展区块链存储容量的***,包括:
用于向数据存储节点写入区块数据,接收所述数据存储节点发来的存储状态的区块链节点;
用于保存所述区块链节点发送的区块数据,向所述区块链节点发送存储状态的数据存储节点;
所述区块链节点与至少一个区块链节点相关联。
如图7所示,Master node为区块链节点,具备P2P、共识、挖矿和钱包服务功能,存储默克尔树(Block metaData),具有数据读写端口(Block IO),与多个数据存储节点(Datanode 1、Data node 2、、、Data node n)相关联,建立网络连接。数据存储节点具有数据读写端口(Block IO),存储区块数据(Block Data)。
Data-node:
在配置中指定为数据存储节点,且需配置区块链节点,把自身的访问方式发送给区块链节点,定期发送健康状态给区块链节点,通过Block IO与Master node节点互传数据,并根据Master node的指令进行动作。其中,访问方式是指Data-node的IP与端口。
Master-node:
在配置中指定为区块链节点,管理所有Data-node节点,并记录当前区块数据写入的Data-node节点;连续向某个Data-node节点写入区块数据,直到Data-node返回可用空间已满的应答,再重新从可用Data-node列表里选择一个数据存储节点继续重复以上步骤,完成对区块数据的存储。
记录每个data-node保存的区块开始高度与结束高度,以便后期对区块数据进行查询读取。
使用元数据描述数据存储节点的信息,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
区块链节点定期接收数据存储节点发来的健康状态,当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点根据所述数据存储节点的信息同步数据存储节点上存储的区块数据。
实施例6
以矿工挖的虚拟币——比特币所在的区块链为例,随着时间的推移,在该区块链上存储的区块数据越来越多,越来越多,比特币的节点一方面要负责验证、共识、挖矿等功能,另一方面又要存储区块数据,已经不堪重负,比特币迫于各方面压力,亟待扩容,现提出了以下几种方案:
1、直接给每个节点增加附加存储设备,无疑需要投入巨大的成本购买存储设备,把现有的区块数据拷贝到存储设备中,对单个硬盘的存储容量要求较高。
2、增加新的节点,仍然需要投入巨大的成本购买硬件设备,且需要同步完整的区块数据,实施起来较为繁琐。
为进一步扩展比特币的存储容量,鉴于现有技术方案中存在的种种弊端,本专利申请的发明人创造性地提出了一种区块***扩容的方案,即:用于扩展区块链存储容量的方法,其可以快速扩展比特币的存储容量,属于分布式存储。假设Master-node1、Master-node2、Master-node3为比特币上的任意3个区块链节点,这三个节点的本地存储容量可以是接近满额的状态,也可以是空余较多的状态,以上3个节点可以部分或全是具有钱包、矿工、网络路由和完整区块链的全节点,或包含完整区块链、网路路由的节点,或包含完整区块链、挖矿功能、以及P2P网络路由的节点。其他类型的节点,如简易支付验证(SPV)来完成交易验证的SPV节点(包含不具有区块链的钱包以及比特币P2P网络节点),或运行其他协议的节点(如矿池挖矿节点(Pool服务器)、Stratum节点),或挖矿节点(包含不具有区块链、但具备Stratum协议节点或其他矿池挖矿协议节点的挖矿功能),或轻量(SPV)Stratum钱包(包含不具有区块链的钱包、运行Stratum协议的网络节点);由于这些节点自身不存储完整区块链,此处可假设主要占用存储空间较大的为区块数据,所以不存在扩容的需求,不予考虑,若随着区块链技术的发展,这些节点自身的存储空间不足,需要扩展存储空间时,也可以采用本申请的技术方案解决存储容量不足的技术问题,可以实现易于扩展的效果。
Data-node1、Data-node2、、、Data-node20均为数据存储节点,分别具有一定的存储容量,且可被区块链节点支配和控制。本申请的用于扩展区块链存储容量的方法及***在具体实施时有以下几种情况:
第一种,区块链节点与数据存储节点为一对多的关系,即一个区块链节点配置若干个数据存储节点,且这若干个数据存储节点之间互相不交叉。名称为Data-node1、Data-node2和Data-node3被配置作为区块链节点Master-node1的数据存储节点;名称为Data-node4、Data-node5、Data-node6和Data-node7被配置作为区块链节点Master-node2的数据存储节点;名称为Data-node8、Data-node9、Data-node10、Data-node11和Data-node12被配置作为区块链节点Master-node3的数据存储节点,如图8所示。此处需要特别说明的是,每个区块链节点配置的数据存储节点的个数不受限,可根据实际需要进行选择,此处的个数限制仅仅为了举例说明清楚本申请的技术方案内容,实际上本申请的技术方案的保护范围不做限定。
Master-node(区块链节点):负责除了存储区块数据外的所有功能,并增加区块数据元数据管理功能,用于管理Data-node。
Data-node(数据存储节点):负责区块数据的存储,并与Master-node通信,以使Master-node获知自身存储容量的大小。
Master-node(区块链节点)接收其他区块链节点发送来的交易,进行验证,验证通过后,被广播,放入区块链节点上的临时交易池,等待被打包进行区块中,打包进区块中后,广播,进行区块验证,共识,区块数据被保存到Data-node上,连续向同一Data-node存入区块数据,直到Data-node存储满,更换另一个继续存储区块数据。
第二种,区块链节点与数据存储节点为多对多的关系,即一个数据存储节点被若干个区块链节点配置以供存储各自的区块数据,如,名称为Data-node1、Data-node2和Data-node3被配置作为区块链节点Master-node1的数据存储节点;名称为Data-node4、Data-node5、Data-node6被配置作为区块链节点Master-node2的数据存储节点;名称为Data-node8、Data-node9和Data-node10被配置作为区块链节点Master-node3的数据存储节点,Data-node7和Data-node11种的存储空间被划分成若干份,分别服务于Master-node1、Master-node2和Master-node3,被划分的各部分各自独立,分别受Master-node1、Master-node2和Master-node3支配,如图9所示。数据存储节点Data-node7的存储空间被划分成了3个部分,分别标记为701、702和703,为区分,给这三部分分配虚拟IP地址,这三部分存储空间分别用于存储Master-node1、Master-node2和Master-node3发来的区块数据,当Master-node1、Master-node2和Master-node3中任一个节点当前存储区块数据的数据存储节点存储满时,可以从对应的数据存储节点中挑选一个进行区块数据保存,其用法与独立数据存储节点相同。数据存储节点Data-node11的存储空间被划分成了3个部分,分别标记为1101、1102和1103,为区分,给这三部分分配虚拟IP地址,这三部分存储空间分别用于存储Master-node1、Master-node2和Master-node3发来的区块数据。本实施例仅列举了一种情况,即同一存储设备被分为三部分,并分别与三个区块链节点匹配;本实施例列举的特定情况仅用于为了说明清楚本专利申请的技术方案内容,对本申请实际要保护的范围不构成限定,在实际应用中,可根据实际需要进行选择。
实施例7
以杭州复杂美33的公链比特元(简称BTY)为例,采用本实施例的技术方案对BTY的部分节点BTY-node001、BTY-node002和BTY-node003进行扩容,其中,BTY-node001配置了数据存储节点DataBTY-node101、DataBTY-node102和DataBTY-node103;BTY-node002配置了数据存储节点DataBTY-node201、DataBTY-node202和DataBTY-node203;BTY-node003配置了数据存储节点DataBTY-node301、DataBTY-node302和DataBTY-node303。BTY-node001、BTY-node002和BTY-node003上分别记载了各自配置的数据存储节点的存储信息BTY-meta001、BTY-meta002、BTY-meta003。
如图11,数据存储的方法为:
S1101、区块链节点BTY-node001向数据存储节点DataBTY-node101写入区块数据;
S1103、接收数据存储节点DataBTY-node101发来的剩余存储容量大小;
S1105、根据BTY-meta001上记载的内容判断DataBTY-node101是否存满,如果没有存满,重复步骤S1101和S1103;如果存满,执行步骤S1107;
S1107、从存储空间可用的节点DataBTY-node102或DataBTY-node103中选择一个,重复步骤S1101和S1103。
其他两个节点BTY-node002和BTY-node003上的区块数据存储过程与BTY-node001类似。
假设待查询的BTY上的数据内容BTY-Value所在的区块高度为BTY-H258,那么对应的数据查询的方法为,根据待查询数据所在的区块高度BTY-H258,查询区块链节点BTY-node001、BTY-node002和BTY-node003任一节点上记录的数据存储节点的信息BTY-meta001、BTY-meta002、BTY-meta003,此处以查询节点BTY-node002的区块数据为例说明本申请的查询过程,如图12所示:
S1201、查询节点BTY-node002上记录的BTY-meta002,找到区块高度为BTY-H258的区块数据所在的数据存储节点,假设在节点DataBTY-node203上;
S1203、读取DataBTY-node203上区块高度为BTY-H258的区块数据,以查找到待查询数据内容BTY-Value。
所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
为提高扩容后BTY的高可用性,本实施例的技术方案进一步被改进,在BTY上的节点BTY-node001、BTY-node002和BTY-node003,与它们各自配置的数据存储节点之间,尤其是那些已经存满区块数据的节点之间,约定好由数据存储节点定期(1或2秒,可根据具体情况需要而定,不受本申请实施例列举的特定数值的限制)向BTY区块链节点发送健康状态,一旦部分数据存储节点受损或故障时,BTY区块链节点将接收不到该健康状态通知,由此判定对应的数据存储节点状态不佳,或故障,以便监控***的健康状况,确保BTY区块链健康有序运行。故障发生后的解决方案有两种,其一是BTY区块链节点向存有完整BTY区块链的节点发送同步区块数据的请求,请求通过后,BTY区块链节点将所有区块数据按照上述存储方法重新存储在与之配对的数据存储节点上。
第二种解决方案正是本专利申请重点进行论述的,在本实施例中,假设节点BTY-node003配置的数据存储节点DataBTY-node301、DataBTY-node302和DataBTY-node303均已存满,而在此之前节点BTY-node003已配置了新的节点DataBTY-node304、DataBTY-node305、DataBTY-node306和DataBTY-node307;此时,节点BTY-node003正在连续向DataBTY-node305存储区块数据,节点DataBTY-node304、DataBTY-node306和DataBTY-node307存储空间均为空置状态。假设节点BTY-node003与它的数据存储节点约定:每隔4秒存满区块数据的数据存储节点向节点BTY-node003发送健康状态,比如一串字符“Hell0!Chain33!”,假如节点BTY-node003超时没有收到DataBTY-node302发来的健康状态反馈字符串“Hell0!Chain33!”,由此判定对应的数据存储节点状态不佳,或故障。节点BTY-node003立即启用高可用技术方案,如图13所示,具体方法为:
S1301、节点BTY-node003接收数据存储节点发来的健康状态反馈字符串“Hell0!Chain33!”;
S1303、是否存在超时接收不到的数据存储节点,如果否,BTY区块链扩容后运行良好,本方法执行结束;如果是,判定该节点故障,此处假设超时接收不到DataBTY-node302发来的健康状态反馈字符串“Hell0!Chain33!”,即节点DataBTY-node302故障;
S1305、查询节点BTY-node003上记录的BTY-meta003,查询该故障节点对应存储的区块高度范围,假设区块高度范围为:20000-35000;
S1307、向存有完整BTY区块链的其他或就近节点发出下载该区块高度范围的区块数据的请求,即请求下载区块高度为20000-35000的区块数据;
S1309、请求通过后,将该区块高度范围的区块数据保存到任一个配置给BTY-node003的存储空间空置的数据存储节点上,比如保存到节点DataBTY-node304上。
实施例8
IPFS是一个互联网的底层协议,类似HTTP协议,IPFS目标是打造一个更加开放、快速、安全的互联网,利用分布式哈希表解决数据的传输和定位问题,把点对点的单点传输改变成P2P(多点对多点)的传输,其中存储数据的结构是哈希链。每一个IPFS节点上都会存一个地图,每个地图之间互相连接,所有IPFS节点地图加起来变成一个分布式哈希表。当向这个网络请求数据的时候,会根据数据本身的ID哈希值,采用一种数学计算的方式,来查找对应的资源在哪台机子上,然后建立起一种连接,下载所需要的数据。
IPFS可以永久保存数据,但不能防窜改,只要一改,哈希值就变了;并且,节点本身存储的数据,有绝对权限,节点的控制者可以对文件进行删、存、添加的操作。IPFS不是区块链项目,没有使用任何区块链技术。
原链YCC作为一种区块链项目,汲取了比特币、瑞波币、比特股、以太坊、超级账本各***的优点,融入多项创新技术,形成一种全新的区块链网络架构,一方面公链的性能可以超过万笔/秒,另一方面公链和许可链可以实现信息互联,价值互通。既具有公链的去中心化特征,又能兼顾许可链对性能和隐私的要求。
原链的创新方面主要包括,热替换智能合约、智能合约异构、跨链信息互联价值互通、持币产生免费流量额度,移动端私钥硬件管理方案、加密检索方案、数据对比及共识方法、登陆验证及隐私保护、公链许可链跨链身份认证及管理、近10项区块链抗攻击安全措施。
对于区块链项目——原链YCC而言,随着时间推进,会存在因数据存储体量大影响运行速度的技术问题,在利用本实施例提出的一种区块链扩容的方案进行扩容时,可利用IPFS节点作为数据存储节点解决该技术问题。
假设YCC-node1、YCC-node2、YCC-node3为原链YCC上的任意3个区块链节点,这三个节点的本地存储容量可以是接近满额的状态,也可以是空余较多的状态,以上3个节点存在扩容的需求,若随着区块链技术的发展,这些节点自身的存储空间不足,需要扩展存储空间时,也可以采用本申请的技术方案解决存储容量不足的技术问题,可以实现易于扩展的效果。
IPFS-node1、IPFS-node2、、、IPFS-node20均为IPFS节点,分别具有一定的存储容量,且允许被原链YCC上的区块链节点支配和控制。本申请的用于扩展区块链存储容量的方法及***在具体实施时有以下几种情况:
第一种,原链YCC节点与IPFS节点为一对多的关系,即一个原链YCC节点配置若干个IPFS节点,且这若干个IPFS节点之间互相不交叉。名称为IPFS-node1、IPFS-node2和IPFS-node3被配置作为原链YCC节点YCC-node1的数据存储节点;名称为IPFS-node4、IPFS-node5、IPFS-node6和IPFS-node7被配置作为区块链节点YCC-node2的数据存储节点;名称为IPFS-node8、IPFS-node9、IPFS-node10、IPFS-node11和IPFS-node12被配置作为原链YCC节点YCC-node3的数据存储节点,如图14所示。此处需要特别说明的是,每个原链YCC配置的IPFS节点的个数不受限,可根据实际需要进行选择,此处的个数限制仅仅为了举例说明清楚本申请的技术方案内容,实际上本申请的技术方案的保护范围不做限定。
YCC-node(原链YCC节点):负责除了存储区块数据外的所有功能,并增加区块数据元数据管理功能,用于管理IPFS-node。
IPFS-node(数据存储节点):负责区块数据的存储,并与YCC-node通信,以使YCC-node获知自身存储容量的大小。
YCC-node(原链YCC节点)接收其他原链YCC节点发送来的交易,进行验证,验证通过后,被广播,放入原链YCC节点上的临时交易池,等待被打包进行区块中,打包进区块中后,广播,进行区块验证,共识,区块数据被保存到IPFS-node上,连续向同一IPFS-node存入区块数据,直到IPFS-node存储满,更换另一个继续存储区块数据。
第二种,原链YCC节点与IPFS节点为多对多的关系,即一个IPFS节点被若干个原链YCC节点配置以供存储各自的区块数据,如,名称为IPFS-node1、IPFS-node2和IPFS-node3被配置作为原链YCC节点YCC-node1的数据存储节点;名称为IPFS-node4、IPFS-node5、IPFS-node6被配置作为原链YCC节点YCC-node2的数据存储节点;名称为IPFS-node8、IPFS-node9和IPFS-node10被配置作为原链YCC节点YCC-node3的数据存储节点,IPFS-node7和IPFS-node11种的存储空间被划分成若干份,分别服务于YCC-node1、YCC-node2和YCC-node3,被划分的各部分各自独立,分别受YCC-node1、YCC-node2和YCC-node3支配,如图15所示。数据存储节点IPFS-node7的存储空间被划分成了3个部分,分别标记为7001、7002和7003,为区分,给这三部分分配虚拟IP地址,这三部分存储空间分别用于存储YCC-node1、YCC-node2和YCC-node3发来的区块数据,当YCC-node1、YCC-node2和YCC-node3中任一个节点当前存储区块数据的数据存储节点存储满时,可以从对应的数据存储节点中挑选一个进行区块数据保存,其用法与独立数据存储节点相同。数据存储节点IPFS-node11的存储空间被划分成了3个部分,分别标记为1111、1112和1113,为区分,给这三部分分配虚拟IP地址,这三部分存储空间分别用于存储YCC-node1、YCC-node2和YCC-node3发来的区块数据。本实施例仅列举了一种情况,即同一存储设备被分为三部分,并分别与三个原链YCC节点匹配;本实施例列举的特定情况仅用于为了说明清楚本专利申请的技术方案内容,对本申请实际要保护的范围不构成限定,在实际应用中,可根据实际需要进行选择。
如图16,根据以上所述的第一种情况来说明本实施例提出的数据存储的方法为:
S1401、原链YCC节点YCC-node1向IPFS节点IPFS-node1写入区块数据;
S1403、接收IPFS节点IPFS-node1发来的剩余存储容量大小;
S1405、根据YCC-meta001上记载的内容判断IPFS-node1是否存满,如果没有存满,重复步骤S1401和S1403;如果存满,执行步骤S1407;
S1407、从存储空间可用的节点IPFS-node2或IPFS-node3中选择一个,重复步骤S1401和S1403。
其他两个节点YCC-node2和YCC-node3上的区块数据存储过程与YCC-node1类似。
假设待查询的原链YCC上的数据内容YCC-Value所在的区块高度为YCC-H258,那么对应的数据查询的方法为,根据待查询数据所在的区块高度YCC-H258,查询原链YCC节点YCC-node1、YCC-node2和YCC-node3任一节点上记录的数据存储节点的信息YCC-meta001、YCC-meta002、YCC-meta003,此处以查询节点YCC-node2的区块数据为例说明本申请的查询过程,如图17所示:
S1501、查询节点YCC-node2上记录的YCC-meta002,找到区块高度为YCC-H258的区块数据所在的数据存储节点,假设在节点IPFS-node5上;
S1503、读取IPFS-node5上区块高度为YCC-H258的区块数据,以查找到待查询数据内容YCC-Value。
所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
为提高扩容后原链YCC的高可用性,本实施例的技术方案进一步被改进,在原链YCC上的节点YCC-node1、YCC-node2、YCC-node3,与它们各自配置的数据存储节点之间,尤其是那些已经存满区块数据的节点之间,约定好由数据存储节点定期(1或2秒,可根据具体情况需要而定,不受本申请实施例列举的特定数值的限制)向原链YCC节点发送健康状态,一旦部分数据存储节点受损或故障时,原链YCC节点将接收不到该健康状态通知,由此判定对应的数据存储节点状态不佳,或故障,以便监控***的健康状况,确保原链YCC健康有序运行。故障发生后的解决方案有两种,其一是原链YCC节点向存有完整原链YCC节点发送同步区块数据的请求,请求通过后,原链YCC节点将所有区块数据按照上述存储方法重新存储在与之配对的数据存储节点上。
第二种解决方案正是本专利申请重点进行论述的,在本实施例中,假设节点YCC-node3配置的数据存储节点IPFS-node8、IPFS-node9、IPFS-node10、IPFS-node11和IPFS-node12均已存满,而在此之前节点YCC-node3已配置了新的节点IPFS-node17、IPFS-node16、IPFS-node15、IPFS-node14和IPFS-node13;此时,节点YCC-node3正在连续向IPFS-node15存储区块数据,节点IPFS-node17、IPFS-node16、IPFS-node14和IPFS-node13存储空间均为空置状态。假设节点YCC-node3与它的数据存储节点约定:每隔4秒存满区块数据的数据存储节点向节点YCC-node3发送健康状态,比如一串字符“Hell0!YCC!”,假如节点YCC-node3超时没有收到IPFS-node12发来的健康状态反馈字符串“Hell0!YCC!”,由此判定对应的数据存储节点状态不佳,或故障。节点YCC-node3立即启用高可用技术方案,如图18所示,具体方法为:
S1601、节点YCC-node3接收数据存储节点发来的健康状态反馈字符串“Hell0!YCC!”;
S1603、是否存在超时接收不到的数据存储节点,如果否,原链YCC扩容后运行良好,本方法执行结束;如果是,判定该节点故障,此处假设超时接收不到IPFS-node12发来的健康状态反馈字符串“Hell0!YCC!”,即节点IPFS-node12故障;
S1605、查询节点YCC-node3上记录的YCC-meta003,查询该故障节点对应存储的区块高度范围,假设区块高度范围为:20000-35000;
S1607、向存有原链YCC的其他或就近节点发出下载该区块高度范围的区块数据的请求,即请求下载区块高度为20000-35000的区块数据;
S1609、请求通过后,将该区块高度范围的区块数据保存到任一个配置给YCC-node3的存储空间空置的数据存储节点上,比如保存到节点IPFS-node16上。
实施例9
一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1-8任一项所述的方法。
图19为本发明一实施例提供的一种设备的结构示意图。
如图19所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本申请公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的***来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (25)
1.用于扩展区块链存储容量的方法,适用于区块链节点,其特征在于,包括与至少一个数据存储节点相关联,以向所述数据存储节点写入区块数据,以接收所述数据存储节点发来的存储状态;
其中,所述数据存储节点至少用于区块数据存储,以及向区块链节点发送存储状态。
2.根据权利要求1所述的方法,其特征在于,所述数据存储节点发来的存储状态,包括:所述数据存储节点的当前存储容量,以及所述数据存储节点当前保存的区块数据的区块开始高度与结束高度。
3.根据权利要求1所述的方法,其特征在于,所述的区块链节点记录所述数据存储节点的信息。
4.根据权利要求3所述的方法,其特征在于,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
5.根据权利要求1所述的方法,其特征在于,所述区块链节点定期接收数据存储节点发来的健康状态。
6.根据权利要求4所述的的方法,其特征在于,当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点同步数据存储节点上存储的区块数据。
7.用于扩展区块链存储容量的方法,适用于数据存储节点,其特征在于,包括与至少一个区块链节点相关联,以保存所述区块链节点发送的区块数据,以向所述区块链节点发送存储状态。
8.根据权利要求7所述的的方法,其特征在于,所述存储状态,包括:所述数据存储节点的当前存储容量,以及所述数据存储节点当前保存的区块数据的区块开始高度与结束高度。
9.根据权利要求7所述的方法,其特征在于,所述的区块链节点记录所述数据存储节点的信息。
10.根据权利要求9所述的方法,其特征在于,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
11.根据权利要求7所述的方法,其特征在于,所述区块链节点定期接收数据存储节点发来的健康状态。
12.根据权利要求11所述的的方法,其特征在于,当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点根据所述数据存储节点的信息同步数据存储节点上存储的区块数据。
13.一种存储方法,适用于区块链节点,其特征在于,包括连续向第一数据存储节点写入区块数据,直到第一数据存储节点可用存储空间已满,从存储空间可用的数据存储节点中选择第二数据存储节点,重复以上步骤。
14.根据权利要求13所述的方法,其特征在于,定期接收数据存储节点发来的健康状态。
15.根据权利要求14所述的方法,其特征在于,当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点根据所述数据存储节点的信息同步数据存储节点上存储的区块数据。
16.根据权利要求15所述的方法,其特征在于,记录数据存储节点的存储信息。
17.根据权利要求15或16所述的方法,其特征在于,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
18.一种查询方法,其特征在于,包括根据待查询数据所在的区块高度,查询区块链节点上记录的数据存储节点的信息,查找到所述区块高度对应的数据节点,读取所述数据节点上所述区块高度的区块数据,以查找到待查询数据。
19.根据权利要求18所述的方法,其特征在于,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
20.用于扩展区块链存储容量的***,其特征在于,包括用于向数据存储节点写入区块数据,接收所述数据存储节点发来的存储状态的区块链节点;
用于保存所述区块链节点发送的区块数据,向所述区块链节点发送存储状态的数据存储节点;
所述区块链节点与至少一个区块链节点相关联。
21.根据权利要求20所述的***,其特征在于,所述数据存储节点的信息,包括数据存储节点的空存储空间大小、名称、IP、端口、是否是当前区块数据保存使用的数据存储节点,保存的区块数据的开始区块高度和结束区块高度。
22.根据权利要求20所述的***,其特征在于,区块链节点定期接收数据存储节点发来的健康状态。
23.根据权利要求21所述的***,其特征在于,当所述区块链节点定期接收不到数据存储节点发来的健康状态时,指定另一个数据存储节点根据所述数据存储节点的信息同步数据存储节点上存储的区块数据。
24.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-19中任一项所述的方法。
25.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-19中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470232.6A CN110531924A (zh) | 2019-05-31 | 2019-05-31 | 用于扩展区块链存储容量的方法和设备、存储介质及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470232.6A CN110531924A (zh) | 2019-05-31 | 2019-05-31 | 用于扩展区块链存储容量的方法和设备、存储介质及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110531924A true CN110531924A (zh) | 2019-12-03 |
Family
ID=68659488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910470232.6A Pending CN110531924A (zh) | 2019-05-31 | 2019-05-31 | 用于扩展区块链存储容量的方法和设备、存储介质及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110531924A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989934A (zh) * | 2019-12-05 | 2020-04-10 | 达闼科技成都有限公司 | 区块链节点数据存储方法、区块链***及区块链节点 |
CN111242778A (zh) * | 2019-12-31 | 2020-06-05 | 布比(北京)网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111625196A (zh) * | 2020-05-26 | 2020-09-04 | 北京海益同展信息科技有限公司 | 区块链节点扩容方法、装置、计算机设备及存储介质 |
CN111769946A (zh) * | 2020-05-08 | 2020-10-13 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 一种面向联盟链的大规模节点扩容方法 |
CN112968923A (zh) * | 2021-01-21 | 2021-06-15 | 河北蜂之巢互联网技术有限公司 | 一种区块链任务调度的方法及miner节点 |
CN113965572A (zh) * | 2021-11-02 | 2022-01-21 | 上海佰贝网络工程技术有限公司 | 一种区块链的区块分发方法、***、计算机设备及计算机可读存储介质 |
CN114338714A (zh) * | 2021-12-31 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114553896A (zh) * | 2020-11-25 | 2022-05-27 | 富士通株式会社 | 信息处理***、信息处理方法及计算机可读存储介质 |
WO2022213697A1 (zh) * | 2021-04-07 | 2022-10-13 | 暗链科技(深圳)有限公司 | 区块分布式区块链的生成方法、存储介质及电子设备 |
CN117422542A (zh) * | 2023-10-31 | 2024-01-19 | 苏银凯基消费金融有限公司 | 基于区块链技术的消费金融业务存证***及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和*** |
CN108920514A (zh) * | 2018-05-31 | 2018-11-30 | 百度在线网络技术(北京)有限公司 | 一种基于区块链的信息存储方法、装置、设备和存储介质 |
CN109684337A (zh) * | 2018-12-29 | 2019-04-26 | 杭州趣链科技有限公司 | 一种基于多级缓存的区块链状态数据存储和读取方法 |
-
2019
- 2019-05-31 CN CN201910470232.6A patent/CN110531924A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和*** |
CN108920514A (zh) * | 2018-05-31 | 2018-11-30 | 百度在线网络技术(北京)有限公司 | 一种基于区块链的信息存储方法、装置、设备和存储介质 |
CN109684337A (zh) * | 2018-12-29 | 2019-04-26 | 杭州趣链科技有限公司 | 一种基于多级缓存的区块链状态数据存储和读取方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989934A (zh) * | 2019-12-05 | 2020-04-10 | 达闼科技成都有限公司 | 区块链节点数据存储方法、区块链***及区块链节点 |
CN110989934B (zh) * | 2019-12-05 | 2023-08-25 | 达闼机器人股份有限公司 | 区块链节点数据存储方法、区块链***及区块链节点 |
CN111242778A (zh) * | 2019-12-31 | 2020-06-05 | 布比(北京)网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111242778B (zh) * | 2019-12-31 | 2023-07-28 | 布比(北京)网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111769946A (zh) * | 2020-05-08 | 2020-10-13 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 一种面向联盟链的大规模节点扩容方法 |
CN111769946B (zh) * | 2020-05-08 | 2022-08-19 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 一种面向联盟链的大规模节点扩容方法 |
CN111625196A (zh) * | 2020-05-26 | 2020-09-04 | 北京海益同展信息科技有限公司 | 区块链节点扩容方法、装置、计算机设备及存储介质 |
WO2021238513A1 (zh) * | 2020-05-26 | 2021-12-02 | 京东数科海益信息科技有限公司 | 区块链节点扩容方法、装置、计算机设备及存储介质 |
CN114553896A (zh) * | 2020-11-25 | 2022-05-27 | 富士通株式会社 | 信息处理***、信息处理方法及计算机可读存储介质 |
CN112968923B (zh) * | 2021-01-21 | 2023-05-05 | 深圳广璞互联网技术有限公司 | 一种区块链任务调度的方法及miner节点 |
CN112968923A (zh) * | 2021-01-21 | 2021-06-15 | 河北蜂之巢互联网技术有限公司 | 一种区块链任务调度的方法及miner节点 |
WO2022213697A1 (zh) * | 2021-04-07 | 2022-10-13 | 暗链科技(深圳)有限公司 | 区块分布式区块链的生成方法、存储介质及电子设备 |
CN113965572A (zh) * | 2021-11-02 | 2022-01-21 | 上海佰贝网络工程技术有限公司 | 一种区块链的区块分发方法、***、计算机设备及计算机可读存储介质 |
CN113965572B (zh) * | 2021-11-02 | 2024-05-14 | 上海佰贝网络工程技术有限公司 | 一种区块链的区块分发方法、***、计算机设备及计算机可读存储介质 |
CN114338714A (zh) * | 2021-12-31 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114338714B (zh) * | 2021-12-31 | 2024-04-02 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN117422542A (zh) * | 2023-10-31 | 2024-01-19 | 苏银凯基消费金融有限公司 | 基于区块链技术的消费金融业务存证***及方法 |
CN117422542B (zh) * | 2023-10-31 | 2024-05-28 | 苏银凯基消费金融有限公司 | 基于区块链技术的消费金融业务存证***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110531924A (zh) | 用于扩展区块链存储容量的方法和设备、存储介质及*** | |
JP7362654B2 (ja) | 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理 | |
KR102319172B1 (ko) | 클라우드 컴퓨팅 기반의 플랫폼 제공 시스템 및 이를 이용한 플랫폼 제공 방법 | |
US9338218B1 (en) | Distributed platform as a service | |
CN104113597B (zh) | 一种多数据中心的hdfs数据读写方法 | |
US9280381B1 (en) | Execution framework for a distributed file system | |
US9442671B1 (en) | Distributed consumer cloud storage system | |
CN109274752A (zh) | 区块链数据的访问方法及装置、电子设备、存储介质 | |
JP2018166000A (ja) | 階層型ネットワークシステム、これに用いられるノード及びプログラム | |
US20130218934A1 (en) | Method for directory entries split and merge in distributed file system | |
CN110399338A (zh) | 基于区块链的分布式文件索引***及方法、云存储服务器 | |
CN107787490A (zh) | 分布式数据库网格中的直接连接功能 | |
CN102571916A (zh) | 一种云存储空间的租赁软件的架构与操作方法 | |
CN103503414A (zh) | 一种计算存储融合的集群*** | |
CN102196049B (zh) | 适用于存储云内数据安全迁移的方法 | |
CN103403683A (zh) | 虚拟数据中心服务请求的基于能力的路由 | |
CN104424013A (zh) | 在计算环境中部署虚拟机的方法和设备 | |
CN103226518A (zh) | 一种在存储管理***中进行卷扩展的方法和装置 | |
CN105357322B (zh) | 一种基于拓扑划分的虚拟机分配方法 | |
CN109547530A (zh) | 区域共识方法、***及设备 | |
CN101741907A (zh) | 一种均衡服务器负载的方法、***和主服务器 | |
CN105981033B (zh) | 将放置策略分配给片段集合 | |
CN109471861A (zh) | 一种基于MySql的数据分布式储存*** | |
CN109542861A (zh) | 一种文件管理方法、装置和*** | |
CN106155566A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191203 |
|
WD01 | Invention patent application deemed withdrawn after publication |