Message

與比特幣的初始連接

  • June 22, 2014

如果這是新客戶端與網路的第一次連接,我想知道在兩個對等方交換版本和 verack 消息之後,交換了哪條消息。我猜每次都需要 getblocks 消息,因為我們的客戶需要檢查我們擁有的區塊鍊是否是最新的。那麼 getaddr 消息跟在 getblocks 消息之後呢?

如果客戶端過去已經連接,他是否需要任何 getaddr 消息,或者他的對等數據庫就足夠了?

我猜每次都需要 getblocks 消息,因為我們的客戶需要檢查我們擁有的區塊鍊是否是最新的。

這是正確的。您還可以比較版本消息中的塊高度,但您仍然需要檢查您是否不在分叉上。

因此 getaddr 消息跟隨 getblocks 消息

我會說這取決於你。如果你連接到一個新的對等點,並且鏈不同,你不能直接知道他是在錯誤的鏈上還是你在。因此,最好知道其他一些同行也可以詢問。

我認為當您第一次呼叫 getaddr 消息時會更好,因為這是您執行的一次性命令。如果你要求塊,看到你沒有得到所有,你將開始呼叫 getdata 消息等等。比您的 getaddr 消息會持續延遲。

如果客戶端過去已經連接,他是否需要任何 getaddr 消息,或者他的對等數據庫就足夠了?

儲存的對等點應該足夠了。請記住,一旦節點連接到對等節點,它們就會通過在發現新對等點時交換 addr 消息來共享新對等點。因此,您還可以在不要求他們的情況下獲得新的同行。

您只會遇到一個問題,即那些已斷開連接的對等方。因此,再次詢問同行總是一個好主意,只是為了保持最新狀態。

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