Go-Ethereum

每個節點是否動態連接到其連接節點的對等節點?

  • September 20, 2018

我想以擁有 5 個節點的私有乙太坊網路為例,但我們可以將其推廣到擁有數千個節點的更大網路。在圖中,雙箭頭表示已連接的對等點,它們使用 . 添加自己addPeer()。稍後,Node_1添加Node_-2Node-3作為對等方使用addPeer(),因為它只知道enode://pubkey@ip:port{Node-2Node-3} 並連接到網路。

在此處輸入圖像描述

**$$ Q1 $$**之後,是否會Node_1自動獲取Node-2Node-3連接的節點enode://pubkey@ip:port,即 {Node-4Node-5} 並動態連接到它們?然後還獲取Node-4並連接到該節點Node-5的連接節點。該操作可以遞歸地完成。如果否,則do 靜態保持為僅連接到和。enode://pubkey@ip:port``Node-6``Node-1``Node-2``Node-3

**$$ Q2 $$**這與第一個問題有關。如果Node-1無法獲取Node-2andNode-3的連接節點enode://pubkey@ip:port,並且僅保持與Node-2and的連接Node-3,則在幾個小時後Node-2關閉Node-3。它是否也會導致Node-1與網路斷開連接?

據我了解,當在區塊鍊網路中添加一個新節點時,節點之間會形成一個網狀網路。這是去中心化的核心概念。如果某個節點關閉,那麼系統可以保持啟動,直到區塊鍊網路中的至少一個節點啟動。

網狀網路

根據geth 文件-

如何找到對等點

Geth 不斷嘗試連接到網路上的其他節點,直到它有對等點。如果您在路由器上啟用了 UPnP 或在面向 Internet 的伺服器上執行乙太坊,它也將接受來自其他節點的連接。

Geth 通過稱為發現協議的東西找到對等點。在發現協議中,節點相互閒聊以了解網路上的其他節點。為了開始,geth 使用了一組引導節點,其端點記錄在原始碼中。

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