以太坊节点发现原理

原文地址:https://blog.csdn.net/haolifengwang/article/details/80348776

发现原理

1) 系统第一次启动随机生成本机节点NodeId,即为LocalId,生成后固定不变,本地节点记为local-eth.

该节点为第一次启动时生成,以后重新启动后不会变化。各个节点都会有一个唯一的标志NodeId。A和B都有各自NODEid

2) 系统读取公共节点信息,ping-pang握手完成后,将其写入K桶

读取公共节点,也就是说大家都知道,各个节点都有相同的公共节点信息。设为C。也就是说A不知道B,B不知道A,但A和B都知道C.这个是C点也就是知道了A点和B点。

3) 进入刷桶循环

a)      随机生成目标节点Id,记为TargetId,从1开始记录发现次数和刷新时间。

各个节点都会生成目标节点id,也就是说每个节点同时发起刷桶操作。

b)      计算TargetId与LocalId的距离,记为Dlt

计算本地节点与目标节点的距离。

c)       k桶中节点NodeId记为KadId,计算KadId与TargetId的距离,记为Dkt

各个节点中k通中初始化为公共节点信息,

d)      找出K桶中Dlt大于Dkt的节点,记为K桶节点,向k桶发送FindNODE命令,FindNODE命令包括TargetId,

因为K桶节点已经知道发送FindNode命令的本地节点,所以现在需要记录本地节点信息。也就是说A向C点发送消息,C无需在记录A点信息。

e)      k桶节点收到FindNODE命令后,统一执行b-d的过程,将从K通中找到的节点使用Neighboras命令发回给本机节点。

C点将B点的信息发给A点。

f)        本机节点收到Neighbour后,将收到的节点写入到K桶中

A点将B点信息进行记录

 

这样A点就知道B点了。同样的过程B点通过C点知道A点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值