CN114363247A - 一种构建区块链全分布式节点路由网络的方法 - Google Patents
一种构建区块链全分布式节点路由网络的方法 Download PDFInfo
- Publication number
- CN114363247A CN114363247A CN202011083754.XA CN202011083754A CN114363247A CN 114363247 A CN114363247 A CN 114363247A CN 202011083754 A CN202011083754 A CN 202011083754A CN 114363247 A CN114363247 A CN 114363247A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- initiator
- network
- information
- 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 14
- 239000003999 initiator Substances 0.000 claims abstract description 37
- 230000003993 interaction Effects 0.000 claims abstract description 4
- 230000001360 synchronised effect Effects 0.000 claims abstract description 4
- 238000012423 maintenance Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种构建区块链全分布式节点路由网络的方法,包括以下步骤:S1:采用kademlia算法,发起者节点启动之后,向公网节点同步全网节点信息,与此同时,发起者节点会将自己的信息进行全网广播,供其它节点连发现和连接;S2:发起者节点向已同步在K‑Bucket中的节点发起连接请求,并和已连接成功的节点进行数据交互;S3:发起者节点连接其它节点之后,开始对已连接的节点进行维护,定时向已连接的节点发送PING请求;S4:对于新加入的节点,先判断该节点时候已经存储在自己的K‑Bucket中,如果已存在,则更新其信息;S5:结束。本发明采用kademlia算法及其优化方案对P2P网络中节点的存储、节点之间距离的计算以及路由表中节点的更新优化,并将节点信息存储在K‑Bucket中。
Description
技术领域
本发明主要涉及分布式计算领域,尤其涉及一种构建区块链全分布式节点路由网络的方法。
背景技术
对等网络(Peer-to-peer networking)相比于C/S结构和B/S结构,P2P有其自己独特的优势:所有的客户端都能够提供资源,包括带宽、存储空间以及计算能力。所以其网络容量可以远超其他模式。其主要特点是:
P2P网络系统中的节点既能扮演客户端的角色也能扮演服务器的角色,这样,是两个节点在不通过中心化服务器的情况下直接进行通信。也就是说,P2P网络中传输的信息均存储在各个节点中,不需要中心化的服务器参与,所以用户信息的安全性被大大提高了。
P2P网络有如下几种拓扑结构:中心化拓扑、全分布式非结构化拓扑、全分布式结构化拓扑和半分布式拓扑。
Kademlia网络是分布式哈希表的一种(DistributedHashTable,DHT)。在不需要服务器的情况下,每个节点负责一个小范围的路由,从而实现整个分布式网络的寻址和信息存储。
Kademlia网络中的每个节点都有一个全局唯一的ID,其ID长度为160位,使用SHA1算法生成,并且是随机的。两个节点ID相同的概率是非常低的。在Kademlia网络中,两个节点之间的距离并不是指其物理距离,而是两个节点ID二进制位的异或值,两个节点之间的距离实际上是值其逻辑距离,根据其逻辑距离可以判断出两个节点之间距离的“远近”。当异或值较小时,说明两个节点的距离较近;当两个节点的异或值较大时,说明两个节点的距离较远。通过逻辑距离的计算可以很容易的进行节点之间的路由。
在大规模P2P网络中存在每个节点维护其他所有节点的资源消耗问题和信息快速同步问题,P2P网络中节点的存储和节点的距离变化会导致网络性能的下降,降低工作效率,且不便于维修,。
已公开中国发明专利,申请号CN201810636486.6,专利名称:区块链系统和应用于区块链系统的路由节点的路由方法,申请日:2018-06-20,本发明涉及区块链系统和应用于区块链系统的路由节点的路由方法。该系统包括至少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个简化支付验证SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,至少一个并行链的路由节点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,该系统的一具体实施方式包括:路由节点校验并转发接收到的交易请求到同链矿工节点或者异链路由节点,以及实时将该路由节点的同链矿工节点的区块链同步到本地区块链;矿工节点对从同链路由节点接收到的签名后交易请求进行验证以及加入本地待处理交易请求集合。该实施方式提高了区块链系统的每秒交易次数。
发明内容
针对现有技术的上述缺陷,本发明提供一种构建区块链全分布式节点路由网络的方法,该方法基于Kademlia算法模型,将全节点连接的完全随机的分布式网络进行结构化的划分,把整个庞大的网络系统划分成一个个小的子系统,从而提高了在大规模P2P网络中系统的扩展性与可维护性,相较全节点的完全随机的分布式网络而言,该方法的分布性,易扩展性和可维护性要更好,具体的包括以下步骤:
S1:采用kademlia算法,发起者节点启动之后,向公网节点同步全网节点信息,与此同时,发起者节点会将自己的信息进行全网广播,供其它节点连发现和连接;
S2:发起者节点向已同步在K-Bucket中的节点发起连接请求,并和已连接成功的节点进行数据交互;
S3:发起者节点连接其它节点之后,开始对已连接的节点进行维护,即定时向已连接的节点发送PING请求,如果发起者节点在T1时间内收到回复,则认为双方之间的连接有效;如果发起者节点在T1时间内没有收到回复,则认为双方连接已经失效;对于已失效的节点,发起者节点会将其暂时删除,并在T2时间内再次进行连接,如果被连接的节点处在掉线状态,则掉线节点在此启动之后会进行步骤S1的操作;
S4:对于新加入的节点,先判断该节点时候已经存储在自己的K-Bucket中,如果已经存在,则更新其信息;如不存在,则将新增加的节点添加到K-Bucket尾部;
S5:结束。
优选的,发起者节点将160bit的NodeID作为唯一的节点标识。
优选的,节点之间的逻辑距离以节点NodeID的XOR值度量,计算方法为:Dis(A,B)=XOR(A,B)。
优选的,步骤S1-S3中,发起者节点根据PING请求的返回信息维护路由表中的节点信息的操作包括如下步骤:
系统定期地发起PING请求,判断路由表中的节点是否是在线状态,如果连续发送PING请求,对方均未在规定时间内回复,则认为该节点状态未不在线,如果不在线则清空路由表中该节点的信息。
优选的,节点的维护内容包括公网IP,内网IP,公网端口,内网端口以及节点的其它信息。
本发明的有益效果:采用kademlia算法及其优化方案对P2P网络中节点的存储、节点之间距离的计算以及路由表中节点的更新做优化,并将节点信息存储在K-Bucket中,提高了分布性、扩展性与可维护性。
附图说明
图1为本发明的结构图;
图2为本发明中关于网络拓扑的结构图;
图3为本发明中关于构建路由表的结构图。
具体实施方式
为了使本技术领域人员更好地理解本发明的技术方案,并使本发明的上述特征、目的以及优点更加清晰易懂,下面结合实施例对本发明做进一步的说明。实施例仅用于说明本发明而不用于限制本发明的范围。
如图1所示可知,本发明包括以下步骤:
S1:采用kademlia算法,发起者节点启动之后,向公网节点同步全网节点信息,与此同时,发起者节点会将自己的信息进行全网广播,供其它节点连发现和连接;
S2:发起者节点向已同步在K-Bucket中的节点发起连接请求,并和已连接成功的节点进行数据交互;
S3:发起者节点连接其它节点之后,开始对已连接的节点进行维护,即定时向已连接的节点发送PING请求,如果发起者节点在T1时间内收到回复,则认为双方之间的连接有效;如果发起者节点在T1时间内没有收到回复,则认为双方连接已经失效;对于已失效的节点,发起者节点会将其暂时删除,并在T2时间内再次进行连接,如果被连接的节点处在掉线状态,则掉线节点在此启动之后会进行步骤S1的操作;
S4:对于新加入的节点,先判断该节点时候已经存储在自己的K-Bucket中,如果已经存在,则更新其信息;如不存在,则将新增加的节点添加到K-Bucket尾部;
S5:结束。
在本实施中优选的,发起者节点将160bit的NodeID作为唯一的节点标识。
在本实施中优选的,节点之间的逻辑距离以节点NodeID的XOR值度量,计算方法为:Dis(A,B)=XOR(A,B)。
在本实施中优选的,步骤S1-S3中,发起者节点根据PING请求的返回信息维护路由表中的节点信息的操作包括如下步骤:
系统定期地发起PING请求,判断路由表中的节点是否是在线状态,如果连续发送PING请求,对方均未在规定时间内回复,则认为该节点状态未不在线,如果不在线则清空路由表中该节点的信息。
在本实施中优选的,节点的维护内容包括公网IP,内网IP,公网端口,内网端口以及节点的其它信息。
本发明的技术方案提供了一种构建区块链全分布式节点路由网络的方法,该方法具体包括以下几个模块:
1.生成节点ID
使用SHA-1算法,生成一个160位被称为消息摘要的散列值作为节点ID。
2.构建网络拓扑
Kademlia网络中的每个节点都会被分配唯一的节点ID。节点之间的距离,使用节点ID的XOR值度量:
Dis(M,N)=XOR(M,N)
当异或值较小时,说明两个节点的逻辑距离较近,意味着节点ID的公共前缀越长;当异或值较大时,说明两个节点的逻辑距离较远,意味着节点ID的公共前缀越短。
由于节点ID是一串二进制数字,每一位的取值只有0或1两种情况,因此我们可以把节点ID表示为二叉树的形式。以100为例,第一位是1,存储于右子树中,第二位是0,存储于左子树中,第三位是0,存储于左子树中。最终的叶子节点即为100,如图2所示。
3.构建路由表
构建路由表的目的是为了更方便的定位某个节点,规则如下:
对于节点M,给定任意节点N,可以根据节点很容易计算出距离N更近的节点列表。采用迭代查找的思路:每次查找要距离目标节点更近一些,直到最终找到目标节点,根据图2可以看出,在Kademlia协议中,每个节点按照与自己的距离来划分节点网络树:被划分的子树称之为Bucket。整个路由表本质上便是一个Bucket数组,划分后的路由表组织形式如图3所示。
4.路由表更新
Kademlia网络中节点是动态变化的,节点可以加入网络和离开网络,这意味着每个节点维护的路由表是动态变化的。
上述实施例仅例示性说明本专利申请的原理及其功效,而非用于限制本专利申请。任何熟悉此技术的人士皆可在不违背本专利申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本专利申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本专利请的权利要求所涵盖。
Claims (5)
1.一种构建区块链全分布式节点路由网络的方法,其特征在于,包括以下步骤:
S1:采用kademlia算法,发起者节点启动之后,向公网节点同步全网节点信息,与此同时,发起者节点会将自己的信息进行全网广播,供其它节点连发现和连接;
S2:发起者节点向已同步在K-Bucket中的节点发起连接请求,并和已连接成功的节点进行数据交互;
S3:发起者节点连接其它节点之后,开始对已连接的节点进行维护,即定时向已连接的节点发送PING请求,如果发起者节点在T1时间内收到回复,则认为双方之间的连接有效;如果发起者节点在T1时间内没有收到回复,则认为双方连接已经失效;对于已失效的节点,发起者节点会将其暂时删除,并在T2时间内再次进行连接,如果被连接的节点处在掉线状态,则掉线节点在此启动之后会进行步骤S1的操作;
S4:对于新加入的节点,先判断该节点时候已经存储在自己的K-Bucket中,如果已经存在,则更新其信息;如不存在,则将新增加的节点添加到K-Bucket尾部;
S5:结束。
2.根据权利要求1所述的构建区块链全分布式节点路由网络的方法,其特征在于:所述发起者节点将160bit的NodeID作为唯一的节点标识。
3.根据权利要求2所述的构建区块链全分布式节点路由网络的方法,其特征在于:所述节点之间的逻辑距离以节点NodeID的XOR值度量,计算方法为:Dis(A,B)=XOR(A,B)。
4.根据权利要求3所述的构建区块链全分布式节点路由网络的方法,其特征在于:所述步骤S1-S3中,发起者节点根据PING请求的返回信息维护路由表中的节点信息的操作包括如下步骤:
系统定期地发起PING请求,判断路由表中的节点是否是在线状态,如果连续发送PING请求,对方均未在规定时间内回复,则认为该节点状态未不在线,如果不在线则清空路由表中该节点的信息。
5.根据权利要求4所述的构建区块链全分布式节点路由网络的方法,其特征在于:所述节点的维护内容包括公网IP,内网IP,公网端口,内网端口以及节点的其它信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011083754.XA CN114363247A (zh) | 2020-10-12 | 2020-10-12 | 一种构建区块链全分布式节点路由网络的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011083754.XA CN114363247A (zh) | 2020-10-12 | 2020-10-12 | 一种构建区块链全分布式节点路由网络的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114363247A true CN114363247A (zh) | 2022-04-15 |
Family
ID=81090224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011083754.XA Pending CN114363247A (zh) | 2020-10-12 | 2020-10-12 | 一种构建区块链全分布式节点路由网络的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114363247A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115567542A (zh) * | 2022-12-01 | 2023-01-03 | 杭州蚂蚁酷爱科技有限公司 | 节点集合的维护方法及装置 |
-
2020
- 2020-10-12 CN CN202011083754.XA patent/CN114363247A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115567542A (zh) * | 2022-12-01 | 2023-01-03 | 杭州蚂蚁酷爱科技有限公司 | 节点集合的维护方法及装置 |
CN115567542B (zh) * | 2022-12-01 | 2023-03-10 | 杭州蚂蚁酷爱科技有限公司 | 节点集合的维护方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4117144B2 (ja) | ピアツーピア名前解決プロトコル(pnrp)およびそれと共に使用するためのマルチレベルキャッシュ | |
Rowstron et al. | SCRIBE: The design of a large-scale event notification infrastructure | |
Zhao et al. | Tapestry: A resilient global-scale overlay for service deployment | |
US7304994B2 (en) | Peer-to-peer system and method with prefix-based distributed hash table | |
CN102668505B (zh) | 用于定位对等网络中的服务的方法和设备 | |
US20070233832A1 (en) | Method of distributed hash table node ID collision detection | |
US20070230468A1 (en) | Method to support mobile devices in a peer-to-peer network | |
CN111046065B (zh) | 可扩展的高性能分布式查询处理方法及装置 | |
CN109525678B (zh) | 区块链网络系统以及相应的节点设备发现方法 | |
Liu et al. | A structured hierarchical P2P model based on a rigorous binary tree code algorithm | |
CN114363247A (zh) | 一种构建区块链全分布式节点路由网络的方法 | |
JP4533923B2 (ja) | 階層型ピアツーピアシステムにおける負荷バランシング機能を有するスーパーピア及び該スーパーピアを動作させる方法 | |
Dhara et al. | Overview of structured peer-to-peer overlay algorithms | |
Tracey et al. | Using a DHT in a peer to peer architecture for the internet of things | |
CN107612980B (zh) | 一种结构化p2p网络中可调节且可靠的一致性维护方法 | |
Zhang et al. | A new algorithm of service discovery based on DHT for mobile application | |
Dang et al. | Applying mapreduce framework to peer-to-peer computing applications | |
Setia | Distributed Hash Tables (DHTs) Tapestry & Pastry | |
Dowlatshahi et al. | A scalable and efficient architecture for service discovery | |
Kojima | Self-organization approach of communities for P2P networks | |
Li et al. | A distributed load balancing algorithm for structured P2P systems | |
Ding et al. | Performing MapReduce on data centers with hierarchical structures | |
Zghaibeh et al. | d-SHAM: An O (d) Scalable Routing Algorithm | |
Aradhya et al. | A Partition Resilient Overlay Network via Blockchain | |
Chen et al. | Improved hierarchical network model based on pastry scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220415 |
|
WD01 | Invention patent application deemed withdrawn after publication |