以太坊节点发现原理_节点在握手过程中,通过自身的证书获取对方节点的nodeid_haolifengwang的博客-程序员宅基地

技术标签: 区块链  

  发现原理

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点。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haolifengwang/article/details/80348776

智能推荐

编译成功但链接失败的原因_函数声明编译通过,但链接的时候找不到-程序员宅基地

编译没有报错,但连接时出问题,错误提示很离谱,不是普通的找不到相关函数的错误,根本看不懂。仔细核对源代码,发现内部使用了自己的内存管理函数iot_os_malloc和iot_os_free,若果使用malloc和free函数,虽然编译不报错,但连接时会报奇怪的错误,替换后就没问题了。..._函数声明编译通过,但链接的时候找不到

CT介绍-程序员宅基地

什么是CT全称:computed tomographyCT是一种功能齐全的病情探测仪器,它是电子计算机X射线断层扫描技术简称。CT的工作程序是这样的:它根据人体不同组织对X线的吸收与透过率的不同,应用灵敏度极高的仪器对人体进行测量,然后将测量所获取的数据输入电子计算机,电子计算机对数据进行处理后,就可摄下人体被检查部位的断面或立体的图像,发现体内任何部位的细小病变。CT的发明自从X射线发现后,医

java lens_LensPickerTrampolineActivity.java-程序员宅基地

/** Copyright (C) 2015 The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obta..._lenspicker

python读取 .trs 格式等特殊文本文件_python 解析trs文件-程序员宅基地

python读取 .trs 格式等特殊文本文件1.前言.trs文件是拓尔思bai(trs)公司异构文本检索的类似“du脚本”的文件,带有数据库的简单描述内容。trs格式文件在windows可以用 记事本软件打开,和txt文件一样由此,在读取上基本和txt一样,只是trs等特殊格式文本文件可能不是用utf-8统一编码。而是用本地编码,国内多是gbk编码。2.实例# 方式一fp = open("trs文件.trs", "r").read() # 不用close文件了print(fp)#_python 解析trs文件

Session 文件过多导致的 Laravel Maximum execution time of 30 seconds exceeded_laravel session 大小限制-程序员宅基地

现象#系统线上出现如下报错:exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Maximum execution time of 30 seconds exceeded' in /var/www/xxx.com/src/vendor/symfony/finder/Iterato_laravel session 大小限制

COCAS: A Large-Scale Clothes Changing Person Dataset for Re-identification——准研究生论文周报_large-scale clothes-changing person re-identificat-程序员宅基地

1 标题  COCAS: A Large-Scale Clothes Changing Person Dataset for Re-identification 来源:CVPR 2020  日期:06月30日 周二2 概述  现存的绝大多数REID数据集中,单一行人的着装是相同的,然而在实际生活中,换衣服是不可避免的,想要REID算法落地投入应用,更不能回避行人着装变化的情况。  为此,文章贡献了新的换衣数据集COCAS(ClOthes ChAnging Person Set),数据集中同一行人有多_large-scale clothes-changing person re-identification with clothes templates

随便推点

Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?,object hashcode_native javaobject 取值-程序员宅基地

http://www.bkjia.com/ASPjc/919437.html Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap、Hashtable哈希表存取对象的使用效率。 关于Object对象的h_native javaobject 取值

Fedora构建Nginx-程序员宅基地

Fedora构建Nginx1、Fedora Fedora 怎样设置终端快捷键 https://jingyan.baidu.com/article/cb5d61053598ed005d2fe05c.html 设置root 登录进入终端,直接输入 sudo passwd root 输入普通用户密码 输入你要设置的root密码 重复root密码[lym@bogon ~]$ s...

git commit简介-程序员宅基地

翻译整理自: http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-commit.html 在用git来进行版本控制时,我需要执行git commit命令,将索引内容添加到仓库中。示例1:git commit -m "提交的描述信息"如果我们这里不用-m参数的

rhel8 使用nfs服务_rhel8 nfs参数优化_南路北行i的博客-程序员宅基地

NFS网络文件系统如果大家觉得Samba服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是Linux系统,刘遄老师非常推荐大家在客户端部署NFS服务来共享文件。NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。安装nfs服务在/etc/fstab中挂载nfs..._rhel8 nfs参数优化

医学图像处理医学图像处理-卷积神经网络卷积神经网络_时空循环卷积神经网络用于交通速度预测...-程序员宅基地

时空预测Author:张金雷From:当交通遇上机器学习1、文章信息《Spatiotemporal Recurrent Convolutional Networks for Traffic Prediction in Transportation Networks》。北航2017年发在sensors上的一篇文章。2、摘要近几十年来,大规模交通网络流量预测已成为一个重要而具有挑战性的课题。...

篮球数据API接口 - 【实时比分数据】API调用示例代码_篮球比分接口-程序员宅基地

野子电竞数据官网改版https://www.xxe.io/全新登场package com.huaying.demo.basketball;import javax.xml.bind.JAXBContext;import javax.xml.bind.Unmarshaller;import javax.xml.bind.annotation.XmlElement;import javax...._篮球比分接口

推荐文章

热门文章

相关标签