Security
惡意全節點導致拒絕服務攻擊
由於需要巨額投資,控制比特幣 51% 以上的算力是不切實際的。此外,比特幣核心客戶端具有 DoS 保護,可防止惡意節點轉發大量交易。但是,如果在世界各地放置了多個完整節點的攻擊者不將交易轉發給其他誠實節點,會發生什麼?有超過 10K 的完整節點在比特幣網路上。攻擊者可以將 10 倍數量的這些節點在地理分散方面非常有效地傳播,因此它們是最先看到廣播交易的人之一。為了防止惡意節點被誠實節點丟棄,它可以不時中繼交易以保持連接活躍。鑑於惡意節點的數量是誠實節點的 10 倍,礦工很可能沒有看到廣播的交易,也沒有將它們包含在區塊中。有沒有進行任何研究來防止這種情況發生?
網路上有超過 10k 個完整節點。10k 這個數字只是公開監聽新連接的可達節點的數量。沒有開放埠的數量要多得多。Luke-jr 發布了他自己知道的節點的資訊[1],表明大約有 100k 個節點。
只需要一個誠實的聯繫就可以使任何不誠實的聯繫變得明顯。比特幣核心軟體中的預設設置是一個節點將與其他節點建立 8 個傳出連接。預設情況下,該軟體還將接受多達 125 個傳入連接,但礦工尤其會增加這個數字。(礦工也使用單獨的 p2p 網路,例如光纖)。
如果惡意方控制了全球網路中 90% 的節點,那麼任何單個傳出連接到達它們的機率(假設是隨機選擇的)將為 0.9。那麼所有 8 個傳出連接都將連接到惡意節點的機率為 0.9^8。10 倍的節點是不夠的。
有一篇論文,Eclipse Attacks on Bitcoin’s Peer-to-Peer Network解決了這個問題,並提出了一些對策,可以限制攻擊者實現這一目標的機會,即使他們設法啟動了大量的需要的節點。