以太坊節點發現原理

2021-08-20 06:04:39 字數 887 閱讀 3735

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

以太坊節點發現協議 DEVP2P V5

歡迎使用節點發現協議v5規範!請注意,本規範正在進行中,可能會在未事先通知的情況下發生不相容的更改。節點發現是在對等網路中查詢其他參與者的系統。該系統可以被任何節點使用,用於任何目的,除了執行網路協議和儲存有限數量的其他節點的記錄外,無需任何費用。任何節點都可以用作網路的入口點。為所有參與者提供了乙...

Elasticsearch 節點發現

在elasticsearch中,節點之間可以相互發現的,並把相同集群名稱的節點統一成乙個集群,那節點是如何發現的呢?在elasticsearch內部,zen discovery是elasticsearch預設的內建的發現模組。它提供單播發現的方式,但是可以擴充套件為雲環境或者其他形式的發現模式。ze...

Ubuntu以太坊(Geth)全節點搭建流程

文章搭建環境為 ubuntu 20.04,但適用於所有 linux 系統 前提條件 golang 1.11以上版本,linux搭建golang開發環境 cd go ethereum make geth vi bashrc export ethpath mnt go ethereum build bi...