具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
为解决全节点的区块链存储数据量大的问题,本发明实施例通过分布式存储的方式,由多个节点协同进行区块链的存储处理,将整个区块链中区块分散的存储在各个节点上。
参见图1,为本发明一实施例的区块链网络的结构示意图。该区块链网络100包括:多个节点101。每个参与交易,区块存储,区块验证或转发等的P2P网络节点都可作为区块链中的节点。例如,节点101可为智能电话、平板电脑、服务器、具有嵌入式系统的电子设备、矿机(即可执行PoW(Proof Of Work,工作证明)共识竞争机制的设备)等。
区块链网络中100的所有节点根据预定规则,自组织成若干虚拟集群。区块链网络中的至少两个节点组建虚拟集群,虚拟集群中的节点,根据预设的区块分配规则,分别对区块链中的一个或多个区块进行存储,以使得至少两个节点存储的区块可组成完整的区块链。
如图1所示,虚线内部的节点组成一个虚拟集群,各个节点可完全独立参与区块链中的其它功能(例如,挖矿、钱包等)、但存储区块链采用分布式方式,即一个完整的区块链中的区块,被分别冗余存储到虚拟集群中的各个节点中。
由于,每个节点只存储区块链的部分区块,可减少存储量,提高节点同步区块链的速度;提高查询效率;且由于每个区块都被冗余存储,可保证存储的安全性。
参见图2,为本发明一实施例的区块链存储方法,应用于区块链网络中的节点,其包括以下步骤:
在步骤201中,通过接受集群组建邀请或发送集群组建邀请,加入一虚拟集群。
在步骤202中,按照预设的第一区块分配规则,对区块链中的一个或多个区块进行存储。由此,使得虚拟集群中的节点所存储的区块可组成完整的区块链。
虚拟集群的建立和加入
参见图3,为本发明实施例的区块链网络中节点加入虚拟集群的流程示意图。
区块链网络中的多个节点,在未加入到虚拟子网络(虚拟集群)中时,为孤立节点。
由于区块链网络是基于P2P网络协议的,一个节点A在区块链网络中上线且稳定一定时间后,会与多个节点产生连接。当节点A与第一预设个数的其它节点两两相连时,则节点A具备建立虚拟集群的条件,可进入节点发现状态,接受其它节点发送的集群组建邀请,也可以向相连接的其它节点发送集群组建邀请,组建虚拟集群。
在步骤301中,当节点A与第一预设个数的其它节点两两相连时,节点A向其它节点发送集群组建邀请。
在一个实施例中,当与节点A相连接的节点数超过一定阈值m时,节点A从这m个节点中,根据节点状况选择第一预设个数的节点,向其发送集群组建邀请。节点状况包括:是否产生过新区块、节点的网络状况等。由于是否产生过新区块可以衡量节点的可信性,因此,将是否产生过新区块作为考量节点的依据。一节点是否产生过新区块,可以通过查询区块链中的区块获得。节点的网络状况对节点间的交互产生影响,因此,将节点的网络状况也作为考量节点的依据。网络状况,可通过发送测试数据包(例如,空数据包或ping包)获取。
在一个实施例中,集群组建邀请可为包含特定信息的数据包,例如,包括发送邀请的节点的IP地址、产生过的新区块数量、算力等。
在步骤302中,当超过第二预设个数的节点回复确认信息时,则与回复信息的节点,组建成虚拟集群。组建成虚拟集群后,即各个节点加入到了该虚拟集群中。
在本发明的实施例中,一节点可能会接收到多个节点发送的集群组建邀请,其可根据集群组建邀请中的信息,确定要响应的节点,以及向确定的节点返回响应信息,确定加入虚拟集群。
在本发明的实施例中,由于虚拟集群中每个节点都是对等的,虚拟集群的规模也是有限的,当虚拟集群的节点个数达到第二预设个数时,将不再接受新的节点进入。这样做的原因是避免整个区块链网络会退化成一个虚拟集群。且为了保证区块存储的稳定性和安全性,虚拟集群中节点的个数满足一定的条件(即满足第二预设个数),且根据网络的状况、协议等,对第二预设个数进行调整(增加或减少)。
在本发明的一实施例中,多个节点组成了虚拟集群后,根据第一预设协商机制,确定虚拟集群的集群标号(ID)。集群标号用于对虚拟集群进行标识,在一个实施例中,集群标号可为字符串,其可包括集群中的节点数量、每个节点的IP地址、每个节点的节点状况等信息。集群标号是与时间相对应的,在预设时间后失效,且集群标识号在预设时间失效后,在虚拟集群中的节点恢复为普通节点(即孤立节点),可接受或发送集群组建邀请。
在一个实施例中,当有第二预设个数互联的节点建立虚拟集群后,虚拟集群中的各个节点标识自己进入虚拟集群状态,不再接受加入新的虚拟集群。即节点已加入到一个虚拟集群,则不再响应其它节点发送的集群组建请求。
在本发明的实施例中,根据第一预设协商机制,确定虚拟集群的集群标号(Id),可通过以下方式进行:
方式1:最先生成ID的节点,将ID广播给虚拟集群中的其它节点,各个节点对ID进行验证,验证通过,就确定该ID为虚拟集群的ID。
方式2:可将算力最强的节点产生的ID作为虚拟集群的ID,或根据IP地址,将IP地址最小的节点产生的ID作为虚拟集群的ID。
在本发明的一实施例中,为了便于实现区块的分配,虚拟集群中的节点,通过第二预设协商机制,确定每个节点的编号,由此,根据编号来确定节点需要存储的区块。
区块的存储分配
确定了每个节点的编号后,各个节点根据自己的编号和区块链中每一区块对应的哈希值,确定并存储所要存储的一个或多个区块。
参见图4,在一个实施例中,节点将每一区块对应的哈希值分别与预设个数的常数相除,并将相除所得的余数和自身的编号满足预设条件(例如,余数和自身编号相同)的哈希值对应的区块进行存储。其中,每一区块对应的哈希值至少包括以下其中之一:每一区块的区块头的哈希值、每一区块的区块头的哈希值加上固定值后的值、每一区块的区块头和区块主体的哈希值。
例如,可将一区块B的区块头的哈希值与第一常数、第二常数和第三常数相除,根据相除所得的余数m1、m2、m3,将该区块B分半存储到的编号为m1的节点、编号为m2的节点和编号为m3的节点。此外,还可将该区块B的区块头的哈希值加上一固定值后,与第四预设常数相除,然后根据余数m4,将该区块B存储到编号为m4的节点。
由此,每个区块被按照第一区块分配规则被冗余存储到多个节点上(例如,P个节点上,P<K,K为虚拟集群中的节点总数,P的取值可根据虚拟集群中的节点总数设定,例如,P为虚拟集群中节点总数K的三分之一),由此,当某个节点因为故障等原因下线时,反过来,在线的节点根据第一区块分配规则,可获知从哪些节点可获取到这个下线节点上曾存储的区块。
参见5,在本发明的一些实施例中,第一区块分配规则还可为,按照区块的数量和虚拟集群中节点的数量,进行平均分配,将区块链中的区块分配到各个节点进行存储。同时,为了确保区块存储的安全性,对区块进行冗余存储,即在一个节点上存储的区块,会在其它一个或多个节点上再进行存储。由此,当一个节点丢失区块时,可在其它节点上得到区块,而不会导致区块的缺失。如图5所示,区块1~3存储在编号为1、n+k……的节点中,区块4~6存储在编号为2、n+2k……的节点中,其中,n和k为正整数。
参见图6,在本发明的一些实施例中,第一区块分配规则还可为:根据节点所属的网段,确定其需要存储的区块。例如,每个区块都同时被存储到网段1~网段10的节点上。根据网段,确定节点需要存储的区块,是为了避免同一网段的节点同时出现网络问题时,区块链中的区块还可从其它网段的节点上获得。
此外,第一区块分配规则,还可根据节点之间的距离、算力等确定,以保证区块存储的安全性。
虚拟集群中的节点的维持
在本发明的实施例中,由于虚拟集群中的节点分别存储有区块链中的一部分区块,因此,节点是否处于正常工作状态,影响到区块存储的完整性和安全性,需要对虚拟集群中的节点的状态进行维护。
在本发明的一实施例中,虚拟集群中的节点通过维持心跳的方式,确定彼此是否在线。维持心跳可通过以下两种方式实现:
方式1:参见图7,虚拟集群中的一节点定时向其它节点发送在线确认信息;以及根据是否接收到其它节点的反馈信息,确定其它节点是否在线。
在线确认信息可为空数据包,或包括预设信息的数据包;反馈信息也可为空数据包,或包括预设信息的数据包。若预设时间内未收到反馈信息,则确定节点下线,需要重新对区块链中的区块进行分配存储和/或邀请其它的孤立节点加入到虚拟集群中。
方式2:虚拟集群中的一节点定时向与自己的编号邻近的节点(编号在前的节点和/或在后的节点)发送在线确认信息;以及根据是否接收到编号邻近的节点反馈的信息,确定编号邻近的节点是否在线。
应理解,节点间通过相互确认的方式,确定节点是否在线,这种相互确认,除了上面的“发送在线确认信息-接收反馈信息”的方式外,还可通过“接收在线确认信息”的方式进行,即虚拟集群中的节点C,定时向其它节点或编号相邻的节点发送在线确认信息,若其它节点或编号相邻的节点在定时时间到时未接收到节点C发送的在线确认信息,则确定该节点C下线。
节点下线后的区块分配及新节点补充
当虚拟集群中有节点下线时,仍在线的节点,可以根据区块的上述第一区块分配规则,获知该下线节点所存储的区块。从而,仍在线的节点可根据第一区块分配规则,从冗余存储的节点中获得下线节点所存储的区块。虚拟集群中的任一节点,可根据预设的第二区块分配规则,重新确定用于存储下线节点所存储的区块的节点,并将下线节点所存储的区块发送给确定的接收进行存储。
参见图8,当虚拟集群中有节点下线时,需要增加新的节点来“平衡网络”,保证区块的存储。在本发明的实施例中,新增节点可通过“主动邀请”或“接收加入请求”的方式。
“主动邀请”:即当虚拟集群中有节点下线时,虚拟集群中的节点主动向虚拟集群外的节点发送集群加入邀请,以邀请虚拟集群外的节点加入虚拟集群。发送的邀请中可包括虚拟集群的ID信息。
当接收到所述虚拟集群外的节点回复的确认信息时,则将该节点加入到虚拟集群中。在本发明的实施例中,虚拟集群中的节点均可发送集群加入邀请,当接收到多个节点的回复的确认信息时,可根据回复确认信息的时间先后顺序,确定可以加入到虚拟集群中的节点;或者根据回复确认信息的节点的算力、网络状况等确定可以加入到虚拟集群中的节点。
当虚拟集群中新增节点后,虚拟集群中的节点通过第三预设协商机制,重新确定每个节点的编号;以及根据自己的编号和预设的第三区块分配规则,确定要存储的区块。
此外,还可保持其它在线节点存储的区块不变,而由与新增节点的编号相邻的节点,根据区块的分配规则确定该新增节点需要存储的区块。
“接收加入请求”:即虚拟集群外的节点,主动向虚拟集群中的节点发送集群加入请求,集群加入请求中可包括:节点的地址信息、算力、网络状况等信息。虚拟集群中的任一节点若接收到集群加入请求,则向发送集群加入请求的节点发送集群加入邀请;当发送集群加入请求的节点回复确认信息时,即将该节点加入到虚拟集群中。
包含了新增节点后的虚拟集群中的节点通过第四预设协商机制,重新确定每个节点的编号;若新增节点的编号与自己的编号相邻,则根据预设的第四区块分配规则,确定新增节点需要存储的区块;以及将新增节点需要存储的区块发送给新增节点进行存储。
在一个实施例中,虚拟集群中有下线的节点后,在预设的时间内,即补充了新的节点来替代下线的节点。则在这种情况下,可不进行全部区块的重新分配,而仅将下线节点存储的区块存储到该新增节点中。可由与新增节点的编号相邻的节点从虚拟集群中其它节点中获取下线节点存储的区块,从而发送给新增节点进行存储。
应理解,也可由指定节点获取下线节点存储的区块并发送给新增节点。
在本发明的一实施例中,新增的节点数和下线的节点数相同。应理解,在一些实施例中,当对虚拟集群中可包括的节点数进行调整(例如,增大节点数)时,也可在原有虚拟集群的节点数的基础上,进行节点新增,或使得新增的节点数大于下线的节点数。
在本发明的实施例中,正因为虚拟集群节点的对等性与自修复性,无需担心区块链分布式存储的数据会因某些节点的损毁而消失。同时因为区块链自身的去中心化的特殊属性,虚拟集群的各个节点存储的区块都可以很容易的重建。
区块链中新区块的存储
参见图9,原区块链中的区块被分配到虚拟集群中的各个节点存储,当有新的区块被发现需要追加到区块链时,虚拟集群内任意一节点发现新区块,则发现新区块的节点按照预设的第五区块分配规则,确定用于存储新区块的节点。在一个实施例中,发现新区块的节点,将新区块发送给需进行存储的节点,由其进行保存。为了确保新区块的正确保存,新区块保存成功后,节点向虚拟集群中的其它节点广播成功保存区块的信息。
在一个实施例中,可由首先发现新区块的节点或指定的节点按照预设的第五区块分配规则,确定用于存储新区块的节点。
在另一些实施例中,由于虚拟集群中的节点都进行新区块发现,因此,发现新区块后,按照预设的第六区块分配规则,确定自己是否需要保存新区块,若需要存储新区块,则存储新区块,若不需要存储新区块,则不作处理。在一个实施例中,当节点成保存新区块后,向虚拟集群中的节点广播成功保存区块的信息,表明已经成功存储。若不需自己存储,则不保存新区块,并等待其它存储节点广播的成功存储的信息。
交易查询
参见图10,在本发明的一实施例中,区块分布式存储到虚拟集群中的各个节点后,当虚拟集群内任意节点收到查询端(例如,虚拟集群外的节点)发送的交易查询请求(例如,验证一个交易的hash)时,确定自己是否存储有与交易查询请求相对应的区块。若存储有与交易查询请求相对应的区块,则根据交易查询请求获取查询结果后返回给查询端。若未存储与交易查询请求相对应的区块,则将交易查询请求给虚拟集群中的其它节点;接收存储有与交易查询请求相关的区块的节点返回的交易查询结果;并将查询结果发送给查询端。
在本发明的实施例中,由于区块是冗余存储的,因此,查询到交易查询请求相对应的区块的节点至少为一个,可将最先返回查询结果的节点,返回的查询结果返回给查询端。
由此,本发明实施例可完成针对区块链的任何交易查询请求,例如,对任何交易进行验证。
执行合约
参见图11,在本发明的一实施例中,当虚拟集群中的一节点,需要执行一目标区块的合约时,确定是否存储有所述目标区块;若存储有所述目标区块,则执行所述目标区块的合约;若未存储有所述目标区块,则从存储所述目标区块的一节点中获取所述目标区块;以及根据获取的所述目标区块执行合约。
在一个实施例中,虚拟集群中的节点,删除一存储的区块后,存储目标区块,根据存储的目标区块执行合约。删除的区块可为任一未使用的区块。
应理解,本发明实施例中的上述第二预设协商机制、第三预设协商机制和第四预设协商机制可与第一预设协商机制相同,或为其它的协商机制,本发明实施例对此不作限制。第二区块分配规则、第三区块分配规则、第四区块分配规则、第五区块分配规则和第六区块分配规则可与第二区块分配规则相同,或为其它区块分配规则,本发明实施例对此不作限制。
本发明实施例的区块链存储方法,将区块链中的区块分别冗余存储到虚拟集群中的各节点中,减轻节点的存储量,且由于每个区块都被冗余存储,可保证存储的安全性;提高区块的同步速度,提高查询效率。
参见图12,为本发明一实施例提供的区块链存储装置的结构示意图,该装置120应用于区块链网络中的节点,包括:
虚拟集群加入模块1201,被配置为通过接受集群组建邀请或发送集群组建邀请,加入一虚拟集群,所述虚拟集群中包括预设个数的节点;
区块存储模块1202,被配置为按照预设的第一区块分配规则,对区块链中的一个或多个区块进行存储,以使得所述虚拟集群中的节点所存储的区块可组成完整的区块链。
在一个实施例中,所述虚拟集群加入模块1201包括:
邀请发送子模块,被配置为在所述节点与第一预设个数的其它节点两两相连时,则向其它节点发送集群组建邀请;
虚拟集群组建子模块,被配置为当超过第二预设个数的节点回复确认信息时,则与回复确认信息的节点,组建成所述虚拟集群。
在一个实施例中,所述虚拟集群加入模块1201包括:
接收及加入子模块,被配置为接收到其它节点发送的集群组建邀请时,回复确认信息,以加入到一虚拟集群中。
在一个实施例中,装置120还包括:
集群标号确定模块1203,被配置为与所述虚拟集群中的节点,通过第一预设协商机制,确定集群标号;其中,所述集群标识号在预设时间后失效,且所述集群标识号在预设时间失效后,在所述虚拟集群中的节点恢复为普通节点,可接受或发送集群组建邀请。
在一个实施例中,区块存储模块1202包括:
编号确定子模块,被配置为与所述虚拟集群中的节点,通过第二预设协商机制,确定每个节点的编号;
区块存储确定子模块,被配置为根据自己的编号和区块链中每一区块对应的哈希值,确定所要存储的所述一个或多个区块;
存储子模块,被配置为对所述一个或多个区块进行存储。
在一个实施例中,区块存储确定子模块,被配置为将每一区块对应的哈希值分别与预设个数的常数相除,并将相除所得的余数和自身的编号满足预设条件的哈希值对应的区块进行存储,其中,所述每一区块对应的哈希值至少包括以下其中之一:每一区块的区块头的哈希值、每一区块的区块头的哈希值加上固定值后的值、每一区块的区块头和区块主体的哈希值。
在一个实施例中,装置120还包括:
第一在线确认模块1204,被配置为定时向所述虚拟集群中的其它节点发送在线确认信息;以及根据是否接收到其它节点的反馈信息,确定所述虚拟集群中的其它节点是否在线。
在一个实施例中,装置120还包括:
第二在线确认模块1205,被配置为定时向与自己的编号邻近的节点发送在线确认信息;以及根据是否接收到所述编号邻近的节点反馈的信息,确定所述编号邻近的节点是否在线。
在一个实施例中,装置120还包括:
区块获取模块1206,被配置为当所述虚拟集群中有节点下线时,根据所述预设的第一区块分配规则,从相应的在线节点中获取所述下线节点所存储的区块;
第一区块存储确定模块1207,被配置为根据预设的第二区块分配规则,重新确定用于存储所述下线节点所存储的区块的节点;以及将所述下线节点所存储的区块发送给所确定的节点进行存储。
在一个实施例中,装置120还包括:
集群加入邀请发送模块1208,被配置为在所述虚拟集群中有节点下线时,向所述虚拟集群外的节点发送集群加入邀请,以邀请所述虚拟集群外的节点加入所述虚拟集群;
第一节点编号重新确定模块1209,被配置为当接收到所述虚拟集群外的节点回复的确认信息时,与加入新增节点后的虚拟集群中的节点通过第三预设协商机制,重新确定每个节点的编号;
第二区块存储确定模块1210,被配置为根据自己的编号和预设的第三区块分配规则,确定要存储的区块。
在一个实施例中,装置120还包括:
集群加入请求接收模块1211,被配置为在所述虚拟集群中有节点下线,且接收到所述虚拟集群外的节点发送的集群加入请求时,向所述发送集群加入请求的节点发送集群加入邀请;
第二节点编号重新确定模块1212,被配置为在所述发送集群加入请求的节点回复确认信息时,与加入新增节点后的虚拟集群中的节点通过第四预设协商机制,重新确定每个节点的编号;
第三区块存储确定模块1213,被配置为若所述新增节点的编号与自己的编号相邻,则根据预设的第四区块分配规则,确定所述新增节点需要存储的区块;以及将所述新增节点需要存储的区块发送给所述新增节点进行存储。
在一个实施例中,装置120还包括:
第四区块存储确定模块1214,被配置为在区块链网络中产生新区块时,根据预设的第五区块分配规则,确定用于存储所述新区块的节点;以及将所述新区块发送给确定的节点进行存储。
在一个实施例中,装置120还包括:
第五区块存储确定模块1215,被配置为在区块链网络中产生新区块时,按照预设的第六区块分配规则,确定是否需要存储所述新区块;若需要存储所述新区块,则存储所述新区块,若不需要存储所述新区块,则不作处理。
在一个实施例中,装置120还包括:
交易查询请求接收模块1216,被配置为在接收到查询端发送的交易查询请求时,确定是否存储有与所述交易查询请求相对应的区块;
查询结果获取模块1217,被配置为若存储有与所述交易查询请求相对应的区块,则根据所述交易查询请求获取查询结果;
交易查询请求发送模块1218,被配置为若未存储与所述交易查询请求相对应的区块,则将所述交易查询请求发送给虚拟集群中的其它节点;
交易查询结果接收模块1219,被配置为接收存储有与所述交易查询请求相关的区块的节点返回的交易查询结果;
查询结果发送模块1220,被配置为将查询结果发送给所述查询端。
在一个实施例中,装置120还包括:
目标区块确定模块1221,被配置为在需要执行一目标区块的合约时,确定是否存储有与所述目标区块;
第一执行模块1222,被配置为若存储有所述目标区块,则执行所述目标区块的合约;
目标区块获取模块1223,被配置为若未存储有所述目标区块,则从存储所述目标区块的一节点中获取所述目标区块;
第二执行模块1224,被配置为根据所述目标区块获取模块获取的所述目标区块执行合约。
在一个实施例中,第二执行模块1224包括:
区块删除子模块,被配置为删除一存储的区块后,存储所述目标区块;
执行子模块,被配置为根据存储的目标区块执行合约。
在一个实施例中,区块存储模块1202,被配置为根据自己所属的网段,确定需要存储的区块。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图13是根据一示例性实施例示出的一种用于区块链存储方法的装置130的框图,该装置130可以是区块链中的节点设备。如图13所示,该装置130可以包括:处理器1301,存储器1302,多媒体组件1303,输入/输出(I/O)接口1304,以及通信组件1305。
其中,处理器1301用于控制该装置130的整体操作,以完成上述的区块链存储方法中的全部或部分步骤。存储器1302用于存储操作系统,各种类型的数据以支持在该装置130的操作,这些数据的例如可以包括用于在该装置130上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器1302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
多媒体组件1303可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1302或通过通信组件1305发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1304为处理器1301和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1305用于该装置130与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件1305可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,装置130可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的区块链存储方法。
在另一示例性实施例中,还提供了一种计算机程序产品,所述计算机程序产品包含能够由可编程的装置执行的计算机程序,所述计算机程序具有当由所述可编程的装置执行时用于执行上述的区块链存储方法的代码部分。
在另一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1302,上述指令可由装置130的处理器1301执行以完成上述的区块链存储方法。示例地,该非临时性计算机可读存储介质可以是ROM、随机存取存储器(Random Access Memory,简称RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
流程图中或在本发明的实施例中以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所述技术领域的技术人员所理解。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。