Synchronization
如何將對等節點的同步節點設置為 true?
我與 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 消息永遠不會發送到同步節點以外的任何節點。