具有預設設置的缺點是什麼,其中節點將使包含意外重組的塊無效?
假設突然間,出現了一條最長的鏈,重組了最後 15 個區塊。即使是少數攻擊者,他們也可以不時完成這種攻擊,他們要麼很幸運,要麼為額外的臨時雜湊率付出了高昂的代價。根據攻擊者的聰明程度,這可能非常有利可圖。這是可行的,特別是如果 Coinbase 或 Binance 成為受害者,非官方法令可能會使用 invalidateblock。在短暫的中度混亂之後,節點會同意拒絕這個分叉,暫時中止中本聰共識,比特幣會像以前一樣繼續進行,而花費數百萬美元執行這次攻擊的攻擊者將受到懲罰和貧困,令人不寒而栗其他嘗試類似跳躍的攻擊者的野心。
我的問題:為什麼我們會認為這樣的社區重組不會發生?其次,為什麼不直接將其編碼到軟體中呢?如果一個節點突然看到一個新塊出現在該節點看到的最新高度以下 10 的高度,這將自動失效。出了什麼問題?
你所描述的基本上是一個滾動檢查點系統。雖然它降低了惡意深度重組的風險,但它引入了一種新的攻擊,攻擊者可能會導致共識分裂。
如果我們假設攻擊者能夠執行 15 個區塊的重組,那麼該攻擊者可以秘密探勘 15 個區塊的分叉並定時廣播它,以便一些節點切換到使用攻擊者的鏈,而一些節點使用原始鏈。無法進行任何自動對帳。如果攻擊者能夠維持自己的算力,那麼他們就可以通過不斷分叉節點並強制節點運營商進行干預來有效地對整個網路進行 DoS。
此外,這樣的規則開闢了對仍在同步的節點進行遠端攻擊的可能性。攻擊者可以選擇在區塊鏈的早期(難度較低)進行探勘,而不是在主鏈上進行探勘,並將他的塊提供給仍在同步的節點。這可能會迫使新同步的節點到攻擊者的鏈上,該鏈的工作量比主鏈少,而節點沒有任何方法可以在沒有操作員干預的情況下切換到真實鏈。
滾動檢查點規則之前已在替代加密貨幣中實施,尤其是 BCH。BitMex 發布了一份分析,討論了其利弊。
因此,攻擊者擁有 X% 的算力。攻擊者試圖在誠實礦工最多探勘 15 個塊的時間內探勘 16 個塊,因為例如受害者等待攻擊者存款金額交易的 15 次確認。如果誠實的礦工獲得少於 15 個區塊,攻擊者仍然在第 16 個區塊獲勝,他們可以等待第 15 個區塊(甚至幫助探勘它,以增加他們的不在場證明)。
好心的是,中本聰在第七頁的白皮書中給我們留下了一個公式,可以準確地解決這種情況:
資料來源:比特幣白皮書
即使算力為 30%,這種重組長度的成功機會也很低。中本聰進一步計算:
q=0.3
z=0 P=1.0000000
z=5 P=0.1773523
z=10 P=0.0416605
z=15 P=0.0101008
z=20 P=0.0024804
這給出了 1% 的成功機會,以 30% 的雜湊率取代 15 個區塊。
顯然,如果攻擊者可以利用超過 30% 的槓桿率,機會會更高,但即使 30% 似乎也不太可能,因為這需要至少兩個,更可能是三個最大的雜湊率提供商才能讓自己可用於此類攻擊,甚至更多更小的。
此外,一般的計算能力是無用的,因為比特幣使用專門的硬體,幾乎沒有任何 SHA-256 雜湊值可供出租。Crypto51是一個專門跟踪各種網路的多數攻擊成本的網站,估計對比特幣的多數攻擊按雜湊算力的現行速度每小時將花費約 120 萬美元,但通過 Nicehash 可租用的 SHA-256 雜湊率僅為 34 BCH 算力的百分比,它本身是比特幣算力 1% 的一小部分。
因此,除非攻擊者設法控制多個現有礦池數小時,否則這似乎並不特別可行。