Ethernodes

每個節點都連接到所有其他節點嗎?

  • February 8, 2019

在乙太坊網路中,每個節點都必須連接到網路中的每個其他節點嗎?

或者為了同步,他們只是連接到任何隨機節點?

它們並非都直接相互連接。

每個節點都連接到其他幾個節點(不確定到底有多少 - 我想這取決於客戶端實現)。每當從節點 A 發送新消息時,它將開始以八卦的方式傳播到整個網路:每個節點都將其傳播到其已知節點。

每個節點相互連接是不可行的——它需要大量資源來保持連接列表是最新的,並且每當一個新節點加入網路時,它就會被來自所有其他節點的連接淹沒.

此外,由於消息必須通過許多節點傳播才能到達所有節點,因此存在延遲。這種延遲是網路不同部分之間達成不同共識的主要原因之一——一些節點不知道網路另一端達成的共識,它們形成了自己的共識。一段時間後,這種混亂局面平息下來,整個網路達成了共同的共識。

對於同步,我認為客戶端使用預先確定的種子節點列表 - 他們首先連接到這些節點並獲取其他節點的其他地址。由客戶端實現決定它實際保持連接的節點以及它如何決定。

引用自:https://ethereum.stackexchange.com/questions/66802