Synchronization
節點應該如何處理沒有連接到鏈上的塊?
假設我是比特幣協議中的一個節點,我收到一個不指向我目前鏈中任何塊的塊。我應該把它放在一邊,等待缺少中間的嗎?我應該傳播它嗎?我應該刪除它嗎?
比特幣客戶端過去常常下載塊,而不必知道他們是否可以將它連接到他們目前的鏈上。如果它無法將一個塊連接到創世塊,它只會將其保存在記憶體中。這是對記憶體(在開始丟棄塊之前最多可以用完 750 MB)和頻寬(如果您丟棄所需的塊,則會浪費頻寬)的浪費
不過,它現在做了一些更聰明的事情。它將區塊頭鏈建構到鏈的目前尖端,然後下載區塊內容。這不僅更簡單,資源效率更高,還允許您並行下載多個塊。塊在下載後立即寫入磁碟。
由於你不可能收到你沒有要求的塊,目前的比特幣客戶端將丟棄該塊並永久斷開與發送它的對等方的連接。