Network

比特幣節點如何知道全網

  • June 26, 2019

分區有時會出現在分佈式網路中;發生這種情況時,一個節點只能與網路中其他節點的子集通信,並且可能使用不同的鏈作為主鏈;由於目前規范建議確認 6 個塊,目前塊生成速度約為 10 分鐘/塊,這意味著如果存在持續時間超過 1 小時的網路分區,則有可能使交易無效;我想知道比特幣客戶端是如何實現的,以便它知道它正在與整個網路通信並且不會遭受這樣的網路分區;

據我所知,沒有網路級別的控制,僅僅是因為沒有真正的方法來發現網路中的每個節點。

相反,分區可能不會持續很長時間,因為挖礦算力也會分佈在分區之間。這意味著對於一個只有 10% 算力的分區,挖 6 個區塊需要相當長的時間,而擁有 90% 算力的分區會很快建立一條更長的鏈。

對給定節點不同的對等點進行了一些努力。如果我沒記錯的話,BTC DNS 種子會嘗試為每個請求返回不同的節點,這樣你就不會有太多的節點只相互連接,並且擁有更多樣化的對等圖。

此外,如果存在次要分區,則該分區很可能很快會重新連接。到那時,由於一個分區幾乎肯定會更長,它將再次成為主導鏈。如果兩個分區相等,則分區後的下一個區塊會出現一條優勢鏈。

引用自:https://bitcoin.stackexchange.com/questions/80711