Synchronization

如何將對等節點的同步節點設置為 true?

  • February 15, 2015

我與 3 個客戶端建立了測試網連接。當我在 1 上做 getpeerinfo 時,我得到了

[

   {
       "addr" : "172.20.61.111:63379",
       "services" : "00000001",
       "lastsend" : 1403246741,
       "lastrecv" : 1403246743,
       "bytessent" : 1074,
       "bytesrecv" : 1098,
       "conntime" : 1403246741,
       "pingtime" : 0.00000000,
       "version" : 70002,
       "subver" : "/Satoshi:0.9.2/",
       "inbound" : true,
       "startingheight" : 56114,
       "banscore" : 0,
       "syncnode" : true
   },
   {
       "addr" : "172.20.53.82:63416",
       "services" : "00000001",
       "lastsend" : 1403246741,
       "lastrecv" : 1403246743,
       "bytessent" : 149,
       "bytesrecv" : 1098,
       "conntime" : 1403246741,
       "pingtime" : 0.00000000,
       "version" : 70002,
       "subver" : "/Satoshi:0.9.2/",
       "inbound" : true,
       "startingheight" : 56114,
       "banscore" : 0,
       "syncnode" : false
   }
]

由於syncnode false,此節點未同步。我該如何解決?

同步節點概念是在 v0.8.2 中添加的,以確保我們始終至少有一個連接的對等點,我們至少曾經從該對等點詢問他們目前的塊是什麼。這個名字非常令人困惑,因為它實際上並不對應於我們從哪個對等點下載塊 - 只是我們通過哪個對等內積極尋求了解塊的存在。

v0.10.0 有一個完全不同的同步機制(稱為 headers-first),它不再有一個同步節點。事實上,它同時從所有傳出的對等點下載。

p2p 算法只選擇一個對等節點進行同步。“syncnode”是一個布爾值,讓您知道該 ip 是否是您目前正在從中下載區塊鏈的那個。

<https://github.com/bitcoin/bitcoin/issues/2034>有這樣的說法:

“有一個指定的“同步節點”,同步應該從該節點發生。getblocks 消息永遠不會發送到同步節點以外的任何節點。

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