CN113610529A - 联盟链的区块存储、获取方法、装置、节点和存储介质 - Google Patents
联盟链的区块存储、获取方法、装置、节点和存储介质 Download PDFInfo
- Publication number
- CN113610529A CN113610529A CN202110976841.6A CN202110976841A CN113610529A CN 113610529 A CN113610529 A CN 113610529A CN 202110976841 A CN202110976841 A CN 202110976841A CN 113610529 A CN113610529 A CN 113610529A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- transaction node
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
Abstract
本申请实施例涉及一种联盟链的区块存储、获取方法、装置、节点和存储介质。该方法包括:在同步到当前区块后,根据当前区块的区块哈希值,确定当前区块在一致性哈希空间中的第一分布位置;根据第一分布位置和组织内当前节点列表中的各交易节点在一致性哈希空间中的第二分布位置,从组织内的所有交易节点中确定第一目标交易节点;其中,第一目标交易节点为用于对当前区块进行完整存储的节点;当确定第一本交易节点是第一目标交易节点时,将当前区块的完整内容存储在第一本交易节点中;当确定第一本交易节点不是第一目标交易节点时,将当前区块的区块头存储在第一本交易节点中。该方法能够节约各交易节点的存储空间。
Description
技术领域
本申请涉及互联网技术领域,特别是涉及一种联盟链的区块存储、获取方法、装置、节点和存储介质。
背景技术
基于区块链技术有公有链、联盟链和私有链三种形式,联盟链本质上仍然是一种私有链,只不过它比单个组织开发的私有链更大,却没有公有链那么大的规模,可以理解为它是介于私有链和公有链之间的一种区块链。
在联盟链中,一个组织内部可能有多个区块链节点,每个节点都会存储产生的每一个区块,进而构成完整的一条区块链。但是,随着业务的发展,数据量急剧增加,区块数量将急剧增多,单个节点上的数据容量将变得很大,这对各节点的存储空间要求很高。
发明内容
基于此,有必要针对传统方式对联盟链中各节点的存储空间要求很高的技术问题,提供一种联盟链的区块存储、获取方法、装置、节点和存储介质。
第一方面,本申请实施例提供一种联盟链的区块存储方法,应用于所述联盟链的同一组织内的各交易节点,所述方法包括:
在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
第二方面,本申请实施例提供一种联盟链的区块获取方法,应用于所述联盟链的同一组织内的各交易节点,所述方法包括:
响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
第三方面,本申请实施例提供一种联盟链的区块存储装置,集成于所述联盟链的同一组织内的各交易节点,所述装置包括:
第一确定模块,用于在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
第二确定模块,用于根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
第一存储模块,用于当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
第二存储模块,用于当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
第四方面,本申请实施例提供一种联盟链的区块获取装置,集成于所述联盟链的同一组织内的各交易节点,所述装置包括:
第三确定模块,用于响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
第四确定模块,用于根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
第一发送模块,用于当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
第二发送模块,用于当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
第五方面,本申请实施例提供一种联盟链的交易节点,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例第一方面提供的联盟链的区块存储方法的步骤和第二方面提供的联盟链的区块获取方法的步骤。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例第一方面提供的联盟链的区块存储方法的步骤和第二方面提供的联盟链的区块获取方法的步骤。
本申请实施例提供的技术方案,在同步到当前区块后,根据当前区块在一致性哈希空间中的第一分布位置以及该组织内各交易节点在一致性哈希空间中的第二分布位置,确定用于对当前区块进行完整存储的第一目标交易节点,在确定第一本交易节点是第一目标交易节点时,将当前区块的完整内容存储在第一本交易节点中,在确定第一本交易节点不是第一目标交易节点时,将当前区块的区块头存储在第一本交易节点中。也就是说,对于第一本交易节点来说,其并不是将所有区块的完整内容均进行存储,而是仅存储部分区块的完整内容,对于其它区块仅存储区块头,由其它交易节点来存储该部分区块的完整内容,从而实现了同一组织内的所有交易节点共同分担区块链账本的目的,节约了各交易节点的存储空间。同时,由于各交易节点中均保存了完整的账本区块链条,因此可以确保账本区块的正确性和不可篡改性。
附图说明
图1为本申请实施例提供的联盟链网络的一种结构示意图;
图2为本申请实施例提供的联盟链的区块存储方法的一种流程示意图;
图3为本申请实施例提供的本交易节点中存储的账本区块链条的一种示意图;
图4为本申请实施例提供的联盟链的区块存储方法的另一种流程示意图;
图5为本申请实施例提供的确定第一目标交易节点的一种原理示意图;
图6为本申请实施例提供的联盟链的区块获取方法的一种流程示意图
图7为本申请实施例提供的联盟链的区块存储装置的一种结构示意图;
图8为本申请实施例提供的联盟链的区块获取装置的一种结构示意图;
图9为本申请实施例提供的联盟链的交易节点的一种结构示意图。
具体实施方式
本申请实施例提供的联盟链的区块存储方法以及区块获取方法,可以应用于如图1所示的联盟链网络中。如图1所示,该联盟链网络可以包括至少一个组织,各组织内可以包括共识节点101和多个交易节点102。其中,共识节点101用于产生本组织的区块,交易节点102用于从共识节点101中同步区块,并处理区块中的交易数据以及存储本组织产生的区块。需要说明的是,此处的共识节点和交易节点均是指联盟链网络中进行数据处理的基础设备;其可以包括但不限于:移动终端(如智能手机、平板电脑等)、台式计算机以及服务设备(如服务器)等等。
通常,上述各交易节点会存储组织内产生的每个区块进而构成完整的一条区块链。但是,在区块数据急剧增多时,单个交易节点上需要存储的数据容量将变得很大,这对单个交易节点的存储空间是一个巨大的挑战。
为此,本申请实施例提供的技术方案,能够实现多个交易节点共同分担区块链账本的存储容量,节约各交易节点的存储空间。
为了使本申请的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本申请实施例中的技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
图2为本申请实施例提供的联盟链的区块存储方法的一种流程示意图。需要说明的是,该方法由联盟链的同一组织内的各交易节点来执行,以下以第一本交易节点为例进行介绍。本实施例涉及的是交易节点如何实现区块的分担存储的具体过程。如图2所示,该方法可以包括:
S201、在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置。
本申请实施例提供的技术方案的主要原理是:基于一致性哈希算法的思想将本组织内产生的区块同步到不同的交易节点上。为此,首先定义一个具有较大取值范围(如0-(2^32-1))的一致性哈希函数,通过该一致性哈希函数可为各个区块和区块链网络中的各个交易节点提供相应的哈希值。需要说明的是,该一致性哈希函数的取值范围在空间上可以形成一个圆环,或者形成一条线段等等。一致性哈希空间指的就是一致性哈希函数的取值范围所形成的空间。
一般地,区块由本组织内的共识节点产生,因此,第一本交易节点可以从共识节点中同步当前区块。其中,当前区块指的是当前需要处理的区块。在同步到当前区块后,第一本交易节点可以采用一致性哈希函数计算当前区块的区块哈希值,并基于区块哈希值将当前区块映射到一致性哈希空间中,得到当前区块在一致性哈希空间中的第一分布位置。
S202、根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点。
其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点。当前节点列表中存储有本组织内当前存在的所有交易节点的节点标识。其中,节点标识可以为节点证书、节点域名或者节点互联网协议(Internet Protocol,IP)地址。可选地,在上述S201之前,该方法还包括:第一本交易节点获取本组织的当前节点列表,通过当前节点列表确定本组织内当前部署的各交易节点。
第一本交易节点可以基于一致性哈希函数确定各交易节点的节点哈希值,并基于各节点哈希值将各交易节点映射到一致性哈希空间中,得到各交易节点在一致性哈希空间中的第二分布位置。接着,第一本交易节点基于当前区块在一致性哈希空间中的第一分布位置和本组织内的各交易节点在一致性哈希空间中的第二分布位置,按照一定的选取规则,从所有交易节点中选取用于对当前区块进行完整存储的节点,选取出的节点即为第一目标交易节点。
S203、当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中。
其中,在确定出第一目标交易节点之后,第一本交易节点可以通过节点标识的比较,来判断自身是否为第一目标交易节点。即第一本交易节点将自身的节点标识与第一目标交易节点的节点标识进行比较,若相同,则确定第一本交易节点是第一目标交易节点;若不相同,则确定第一本交易节点不是第一目标交易节点。
在确定第一本交易节点是第一目标交易节点时,说明第一本交易节点是需要将当前区块进行完整存储的节点,因此,第一本交易节点可以将同步到的当前区块的完整内容存储在第一本交易节点中。其中,当前区块可以包括区块头和区块体,区块体中含有相应的交易数据,因此,第一本交易节点将当前区块的完整内容存储在第一本交易节点中,是指将当前区块的区块头和区块体均存储在第一本交易节点中。
S204、当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
在确定第一本交易节点不是第一目标交易节点时,说明第一本交易节点不是将当前区块进行完整存储的节点,因此,第一本交易节点可以仅将同步到的当前区块的区块头存储在第一本交易节点中。对于当前区块的完整内容,则由第一目标交易节点来进行存储,这样,区块链账本便可以由本组织内的所有交易节点共同分担,缓解了单个交易节点的存储压力。
如图3所示,假设当前区块为本组织内产生的第5个区块(即图3中的区块5),则经过本申请实施例提供的存储机制,确定用于对区块5完整存储的节点为第一本交易节点,则第一本交易节点存储区块5的完整内容(即将区块5的区块头和区块体均进行存储)。从图3可以看出,第一本交易节点中存储了区块1和区块5的完整内容,仅存储了区块2、区块3以及区块4的区块头,并非存储所有区块的完整内容,从而节省了第一本交易节点的存储空间。但是,第一本交易节点中仍存储有完整的账本区块链条,因此可以确保区块的正确性和不可篡改性。其中,每个区块的区块头中可以包括本区块的区块编号、前一区块哈希值以及梅克尔树(Merkle)根哈希值等等信息。
本申请实施例提供的联盟链的区块存储方法,在同步到当前区块后,根据当前区块在一致性哈希空间中的第一分布位置以及该组织内各交易节点在一致性哈希空间中的第二分布位置,确定用于对当前区块进行完整存储的第一目标交易节点,在确定第一本交易节点是第一目标交易节点时,将当前区块的完整内容存储在第一本交易节点中,在确定第一本交易节点不是第一目标交易节点时,将当前区块的区块头存储在第一本交易节点中。也就是说,对于第一本交易节点来说,其并不是将所有区块的完整内容均进行存储,而是仅存储部分区块的完整内容,对于其它区块仅存储区块头,由其它交易节点来存储该部分区块的完整内容,从而实现了同一组织内的所有交易节点共同分担区块链账本的目的,节约了各交易节点的存储空间。同时,由于各交易节点中均保存了完整的账本区块链条,因此可以确保账本区块的正确性和不可篡改性。
图4为本申请实施例提供的联盟链的区块存储方法的另一种流程示意图。需要说明的是,下述S403-S405是上一实施例中的S202的一种可选地实施方式,如图4所示,该方法可以包括:
S401、在同步到当前区块后,对当前区块的区块标识进行哈希运算,得到所述当前区块的区块哈希值。
其中,区块标识可以为区块编号。当前区块的区块头中存储有区块标识,因此,在同步到当前区块头后,第一本交易节点可以从当前区块的区块头中提取出区块标识,并采用一致性哈希函数对区块标识进行哈希运算,得到当前区块的区块哈希值。
S402、根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置。
S403、对所述组织内的各交易节点的节点标识进行哈希运算,得到所述各交易节点的节点哈希值。
其中,节点标识可以为节点证书、节点域名或者节点IP地址。由于节点标识具有唯一性,因此,采用节点标识进行哈希运算,可以确保哈希结果的唯一性。在同步到本组织内的当前节点列表之后,第一本交易节点采用一致性哈希函数分别对当前节点列表中的各交易节点的节点标识进行哈希运算,得到各交易节点的节点哈希值。
S404、根据所述组织内当前节点列表中的各交易节点的节点哈希值,确定各交易节点在所述一致性哈希空间中的第二分布位置。
其中,在得到各交易节点的节点哈希值之后,第一本交易节点基于各节点哈希值将各交易节点映射到一致性哈希空间中。
S405、按照预设顺序,将与所述第一分布位置最邻近的第二分布位置上对应的交易节点确定为第一目标交易节点。
其中,预设顺序可以基于实际需求进行相应的设置。通常,一致性哈希空间为头尾相连的一个闭合圆环,取值范围(如0-(2^32-1))中的各个哈希值可以按照逆时针方向递增或者顺时针方向递增的分布原则,分布在圆环上的各个位置处。即预先顺序可以是顺时针方向,也可以是逆时针方向,以下以预设顺序以顺时针方向为例进行说明。
第一本交易节点从当前区块映射在一致性哈希空间中的第一分布位置出发,按照顺时针方向沿着圆环查找,将找到的最邻近的第二分布位置上对应的交易节点确定为用于完整存储当前区块的第一目标交易节点。
S406、当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中。
S407、当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
示例性的,假设本组织内的各交易节点以及当前区块在一致性哈希空间中的分布位置如图5所示,第一本交易节点2从当前区块映射的第一分布位置出发,按照顺时针方向沿着圆环查找,将找到的最邻近的交易节点3确定为第一目标交易节点。由于第一本交易节点2不是交易节点3,因此,第一本交易节点2仅存储当前区块的区块头。由于本组织内的每个交易节点均按照此存储机制进行区块的存储,因此,区块链账本便可以由本组织内的各交易节点共同分担。
需要说明的是,如果联盟链网络中的交易节点较少而导致节点标识在圆环上分布不均匀时,还可在某交易节点的节点标识后添加附属内容(如数字),从而生成与该交易节点相关联的虚拟节点的虚拟标识;然后,采用一致性哈希函数将该虚拟标识哈希至圆环上以均衡圆环上的节点标识的分布。需要说明的是,若确定用于完整存储当前区块的节点为某一虚拟节点,则实际确定出的第一目标交易节点为该虚拟节点关联的真实交易节点。
可选地,在同步到当前区块之后,第一本交易节点还可以对当前区块进行区块验证,即针对当前区块中的每笔交易数据进行逐笔验证,在验证通过后对交易数据进行处理,并基于处理结果更新账本状态,即更新世界状态。这样,第一本交易节点的世界状态中仍旧保存着所有键值对的当前值。也就是说,每个交易节点的世界状态中仍旧保存着所有键值对的当前值,确保了每个交易节点上均拥有完整的一致的账本状态数据库,它可以确保运行在每个交易节点上的智能合约,在本地就能访问到完整的账本状态数据库的所有键值对,适应所有的应用场景。
在账本状态更新之后,第一本交易节点还可以执行交易索引更新,即将当前区块中的每一笔交易数据的交易标识与区块标识进行关联。这样,便于后续交易数据的查询。
在本实施例中,在得到当前区块在一致性哈希空间中的映射位置之后,第一交易节点可以从该映射位置出发,按照预设顺序沿着一致性哈希空间查找,将找到的最邻近的第二分布位置上对应的交易节点确定为用于完整存储当前区块的节点,这样,在本组织内新增交易节点时,受影响的区块仅仅是新增交易节点到其一致性哈希空间中前一交易节点之间的区块,其它区块并不会受到影响,使得区块的存储具有较好的容错性。
图6为本申请实施例提供的联盟链的区块获取方法的一种流程示意图。需要说明的是,该方法由联盟链的同一组织内的各交易节点来执行,以下以第二本交易节点为例进行介绍。本实施例涉及的是如何从联盟链中的交易节点获取区块的具体过程。如图6所示,该方法可以包括:
S601、响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置。
其中,所述区块获取请求用于请求所述目标区块。当用户想要获取目标区块时,可通过客户端向联盟链中的任一交易节点发送区块获取请求。以任一交易节点为第二本交易节点为例进行说明,第二本交易节点响应于接收到的区块获取请求,采用一致性哈希函数计算目标区块的区块哈希值,并基于该区块哈希值将目标区块映射到一致性哈希空间中,得到目标区块在一致性哈希空间中的第三分布位置。
作为一种可选地实施方式,区块获取请求中可以包括目标区块的区块标识,第二本交易节点采用一致性哈希函数对该区块标识进行哈希运算,从而得到该目标区块的区块哈希值。
作为另一种可选地实施方式,当用户想要获取目标交易数据时,可通过客户端向第二本交易节点发送区块获取请求。此时,该区块获取请求中可以包括目标交易数据的交易标识。由于在区块存储过程中,第二本交易节点将该区块中的每一笔交易数据的交易标识与区块标识进行了关联存储,因此,在接收到区块获取请求后,第二本交易节点可以基于目标交易数据的交易标识,查询交易索引数据库,从而获取该目标交易数据对应的目标区块的区块标识。接着,对该区块标识进行哈希运算,从而得到该目标区块的区块哈希值,基于该目标区块的区块哈希值确定当前完整存储该目标区块的节点。
S602、根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点。
其中,所述第二目标交易节点为当前完整存储所述目标区块的节点。第二本交易节点可以基于一致性哈希函数确定各交易节点的节点哈希值,并基于各节点哈希值将各交易节点映射到一致性哈希空间中,得到各交易节点在一致性哈希空间中的第二分布位置。接着,第二本交易节点基于目标区块在一致性哈希空间中的第三分布位置和本组织内的各交易节点在一致性哈希空间中的第二分布位置,按照一定的选取规则,从所有交易节点中选取当前完整存储目标区块的节点,选取出的节点即为第二目标交易节点。可选地,第二本交易节点可以从第三分布位置出发,按照顺时针方向沿着圆环查找,将找到的最邻近的第二分布位置上对应的交易节点确定为第二目标交易节点。
S603、当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端。
其中,在确定出第二目标交易节点之后,第二本交易节点可以通过节点标识的比较,来判断自身是否为第二目标交易节点。在确定第二本交易节点是第二目标交易节点时,说明第二本交易节点中完整存储有目标区块,此时,第二本交易节点可以从本地存储中获取目标区块的完整内容,并将目标区块的完整内容发送给客户端。
S604、当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
在确定第二本交易节点不是第二目标交易节点时,说明第二本交易节点并没有完整存储目标区块,其仅存储有目标区块的区块头。此时,第二本交易节点可以直接将当前完整存储目标区块的第二目标交易节点的地址信息发送给客户端。例如,将第二目标交易节点的IP地址发送给客户端,以指示客户端从该IP地址对应的第二目标交易节点中获取目标区块。
由于第二本交易节点中存储有目标区块的区块头,为了便于对从第二目标交易节点中获取的目标区块的正确性进行校验,在上述实施例的基础上,可选地,在将第二目标交易节点的地址信息发送给客户端时,第二本交易节点还可以从本地存储中获取目标区块的区块头,并将目标区块的区块头发送给客户端。
本申请实施例提供的区块获取方法,第二本交易节点能够确定当前完整存储目标区块的第二目标交易节点,在确定第二本交易节点是第二目标交易节点时,将目标区块的完整内容发送给客户端,确保了账本区块的正常读取。并且,在确定第二本交易节点不是第二目标交易节点时,将当前完整存储目标区块的第二目标交易节点的地址信息发送给客户端,使得客户端能够稳定地从第二目标交易节点中获取目标区块,可有效提高区块获取的便利性。
图7为本申请实施例提供的联盟链的区块存储装置的一种结构示意图。该装置集成于联盟链的同一组织内的各交易节点,如图7所示,该装置可以包括:第一确定模块701、第二确定模块702、第一存储模块703和第二存储模块704。
具体的,第一确定模块701用于在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
第二确定模块702用于根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
第一存储模块703用于当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
第二存储模块704用于当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
本申请实施例提供的区块存储装置,在同步到当前区块后,根据当前区块在一致性哈希空间中的第一分布位置以及该组织内各交易节点在一致性哈希空间中的第二分布位置,确定用于对当前区块进行完整存储的第一目标交易节点,在确定第一本交易节点是第一目标交易节点时,将当前区块的完整内容存储在第一本交易节点中,在确定第一本交易节点不是第一目标交易节点时,将当前区块的区块头存储在第一本交易节点中。也就是说,对于第一本交易节点来说,其并不是将所有区块的完整内容均进行存储,而是仅存储部分区块的完整内容,对于其它区块仅存储区块头,由其它交易节点来存储该部分区块的完整内容,从而实现了同一组织内的所有交易节点共同分担区块链账本的目的,节约了各交易节点的存储空间。同时,由于各交易节点中均保存了完整的账本区块链条,因此可以确保账本区块的正确性和不可篡改性。
在上述实施例的基础上,可选地,第二确定模块702可以包括:第一确定单元和第二确定单元。
具体的,第一确定单元用于根据所述组织内当前节点列表中的各交易节点的节点哈希值,确定各交易节点在所述一致性哈希空间中的第二分布位置;
第二确定单元用于按照预设顺序,将与所述第一分布位置最邻近的第二分布位置上对应的交易节点确定为第一目标交易节点。
在上述实施例的基础上,可选地,第二确定模块702还包括:计算单元。
具体的,计算单元用于在第一确定单元根据所述组织内当前节点列表中的各交易节点的节点哈希值,确定各交易节点在所述一致性哈希空间中的第二分布位置之前,对所述组织内的各交易节点的节点标识进行哈希运算,得到所述各交易节点的节点哈希值。
可选地,所述节点标识为节点证书、节点域名或者节点IP地址。
在上述实施例的基础上,可选地,该装置还包括:计算模块。
具体的,计算模块用于在第一确定模块701根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置之前,对当前区块的区块标识进行哈希运算,得到所述当前区块的区块哈希值。
图8为本申请实施例提供的区块获取装置的一种结构示意图。该装置集成于联盟链的同一组织内的各交易节点,如图8所示,该装置可以包括:第三确定模块801、第四确定模块802、第一发送模块803和第二发送模块804。
具体的,第三确定模块801用于响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
第四确定模块802用于根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
第一发送模块803用于当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
第二发送模块804用于当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
本申请实施例提供的区块获取装置,第二本交易节点能够确定当前完整存储目标区块的第二目标交易节点,在确定第二本交易节点是第二目标交易节点时,将目标区块的完整内容发送给客户端,确保了账本区块的正常读取。并且,在确定第二本交易节点不是第二目标交易节点时,将当前完整存储目标区块的第二目标交易节点的地址信息发送给客户端,使得客户端能够稳定地从第二目标交易节点中获取目标区块,可有效提高区块获取的便利性。
在上述实施例的基础上,可选地,第二发送模块804具体用于从第二本交易节点中获取所述目标区块的区块头;将所述目标区块的区块头以及所述第二目标交易节点的地址信息发送给客户端。
在一个实施例中,提供了一种联盟链的交易节点,其结构示意图可以如图9所示。该联盟链的交易节点包括通过系统总线连接的处理器和存储器。其中,该联盟链的交易节点的处理器用于提供计算和控制能力。该联盟链的交易节点的存储器存储有计算机程序,该计算机程序被处理器执行时以实现一种联盟链的区块存储方法和区块获取方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的联盟链的交易节点的限定,具体的联盟链的交易节点可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种联盟链的交易节点,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
在一个实施例中,还提供了一种联盟链的交易节点,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
上述实施例中提供的联盟链的区块存储装置、区块获取装置、节点以及存储介质可执行本申请任意实施例所提供的区块存储方法和区块获取方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的联盟链的区块存储方法和区块获取方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种联盟链的区块存储方法,其特征在于,应用于所述联盟链的同一组织内的各交易节点,所述方法包括:
在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点,包括:
根据所述组织内当前节点列表中的各交易节点的节点哈希值,确定各交易节点在所述一致性哈希空间中的第二分布位置;
按照预设顺序,将与所述第一分布位置最邻近的第二分布位置上对应的交易节点确定为第一目标交易节点。
3.根据权利要求2所述的方法,其特征在于,在所述根据所述组织内当前节点列表中的各交易节点的节点哈希值,确定各交易节点在所述一致性哈希空间中的第二分布位置之前,所述方法还包括:
对所述组织内的各交易节点的节点标识进行哈希运算,得到所述各交易节点的节点哈希值。
4.根据权利要求3所述的方法,其特征在于,所述节点标识为节点证书、节点域名或者节点互联网协议IP地址。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置之前,所述方法还包括:
对当前区块的区块标识进行哈希运算,得到所述当前区块的区块哈希值。
6.一种联盟链的区块获取方法,其特征在于,应用于所述联盟链的同一组织内的各交易节点,所述方法包括:
响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
7.根据权利要求6所述的方法,其特征在于,所述将所述第二目标交易节点的地址信息发送给客户端,包括:
从第二本交易节点中获取所述目标区块的区块头;
将所述目标区块的区块头以及所述第二目标交易节点的地址信息发送给客户端。
8.一种联盟链的区块存储装置,其特征在于,集成于所述联盟链的同一组织内的各交易节点,所述装置包括:
第一确定模块,用于在同步到当前区块后,根据当前区块的区块哈希值,确定所述当前区块在一致性哈希空间中的第一分布位置;
第二确定模块,用于根据所述第一分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点中确定第一目标交易节点;其中,所述第一目标交易节点为用于对所述当前区块进行完整存储的节点;
第一存储模块,用于当确定第一本交易节点是所述第一目标交易节点时,将所述当前区块的完整内容存储在第一本交易节点中;
第二存储模块,用于当确定第一本交易节点不是所述第一目标交易节点时,将所述当前区块的区块头存储在第一本交易节点中。
9.一种联盟链的区块获取装置,其特征在于,集成于所述联盟链的同一组织内的各交易节点,所述装置包括:
第三确定模块,用于响应于接收到的区块获取请求,根据目标区块的区块哈希值,确定所述目标区块在一致性哈希空间中的第三分布位置;其中,所述区块获取请求用于请求所述目标区块;
第四确定模块,用于根据所述第三分布位置和所述组织内当前节点列表中的各交易节点在所述一致性哈希空间中的第二分布位置,从所述组织内的所有交易节点确定第二目标交易节点;其中,所述第二目标交易节点为当前完整存储所述目标区块的节点;
第一发送模块,用于当确定第二本交易节点是所述第二目标交易节点时,将所述目标区块的完整内容发送给客户端;
第二发送模块,用于当确定第二本交易节点不是所述第二目标交易节点时,将所述第二目标交易节点的地址信息发送给客户端。
10.一种联盟链的交易节点,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110976841.6A CN113610529A (zh) | 2021-08-24 | 2021-08-24 | 联盟链的区块存储、获取方法、装置、节点和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110976841.6A CN113610529A (zh) | 2021-08-24 | 2021-08-24 | 联盟链的区块存储、获取方法、装置、节点和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113610529A true CN113610529A (zh) | 2021-11-05 |
Family
ID=78341868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110976841.6A Pending CN113610529A (zh) | 2021-08-24 | 2021-08-24 | 联盟链的区块存储、获取方法、装置、节点和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113610529A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114449003A (zh) * | 2022-01-28 | 2022-05-06 | 浪潮云信息技术股份公司 | 一种联盟链数据处理方法及联盟链 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647582A (zh) * | 2019-09-17 | 2020-01-03 | 腾讯科技(深圳)有限公司 | 区块链网络共识校验的方法、装置、存储介质和计算机设备 |
CN111770149A (zh) * | 2020-06-23 | 2020-10-13 | 江苏荣泽信息科技股份有限公司 | 基于分布式存储的新型联盟链 |
CN112069169A (zh) * | 2020-07-30 | 2020-12-11 | 北京奇艺世纪科技有限公司 | 区块数据存储方法、装置、电子设备及可读存储介质 |
-
2021
- 2021-08-24 CN CN202110976841.6A patent/CN113610529A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647582A (zh) * | 2019-09-17 | 2020-01-03 | 腾讯科技(深圳)有限公司 | 区块链网络共识校验的方法、装置、存储介质和计算机设备 |
CN111770149A (zh) * | 2020-06-23 | 2020-10-13 | 江苏荣泽信息科技股份有限公司 | 基于分布式存储的新型联盟链 |
CN112069169A (zh) * | 2020-07-30 | 2020-12-11 | 北京奇艺世纪科技有限公司 | 区块数据存储方法、装置、电子设备及可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114449003A (zh) * | 2022-01-28 | 2022-05-06 | 浪潮云信息技术股份公司 | 一种联盟链数据处理方法及联盟链 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10715485B2 (en) | Managing dynamic IP address assignments | |
US9178806B2 (en) | High-speed content routing | |
US20120166403A1 (en) | Distributed storage system having content-based deduplication function and object storing method | |
EP2564306A1 (en) | System and methods for mapping and searching objects in multidimensional space | |
US20140025723A1 (en) | Cloud storage system and data storage and sharing method based on the system | |
CN103873451A (zh) | 一种数据同步的方法、设备和系统 | |
US20140143339A1 (en) | Method, apparatus, and system for resource sharing | |
US20120158756A1 (en) | Searching in Peer to Peer Networks | |
US9215294B2 (en) | Management of communications between a client equipment and a server equipment providing to the client equipment computer resources represented according to a file system | |
CN111694502B (zh) | 区块链数据存储方法、装置、设备及存储介质 | |
CN113610529A (zh) | 联盟链的区块存储、获取方法、装置、节点和存储介质 | |
US11128622B2 (en) | Method for processing data request and system therefor, access device, and storage device | |
CN112039993B (zh) | 一种长连接地址处理方法和装置 | |
CN111352938B (zh) | 数据处理方法、计算机设备及存储介质 | |
US20210344741A1 (en) | A method and device for feeding back a resource file | |
CN113486060A (zh) | 数据访问处理方法和装置、存储介质及电子设备 | |
CN112732775A (zh) | 区块节点数据的处理方法、装置、计算机设备和存储介质 | |
CN117176796A (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
CN109413118B (zh) | 一种实现会话同步的方法、装置及存储介质、程序产品 | |
CN115242882A (zh) | 一种基于传输层路由访问k8s容器环境的方法及装置 | |
CN107277126A (zh) | 一种云计算资源管理方法及装置 | |
CN113793148B (zh) | 联盟链的区块同步方法、装置、节点和存储介质 | |
CN103685367A (zh) | 离线下载系统和方法 | |
CN109525503B (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 |