Client
檢查點究竟能防止什麼樣的攻擊?
如果它用於防止攻擊者分叉舊塊(或鏈),那麼客戶端可以檢測到它,因為分叉長度會比現有(正確)鏈的長度短。
問題:如果我們不使用檢查點,究竟會發生什麼?
此外,它們僅適用於瘦客戶端嗎?
您是正確的,任何看到兩個不同分叉的客戶都可以輕鬆確定哪個更長。但請考慮以下可能性:
- 該節點可能永遠不會看到更長的分叉。 這可能發生在Sibyl 攻擊的情況下,攻擊者可以控制受害者的 Internet 連接並安排受害者僅連接到邪惡節點。這些邪惡節點只會發送屬於較短的惡意分叉的區塊,受害者會認為這個分叉是“真正的”鏈,因為沒有其他東西可以與之比較。所以受害者會相信攻擊者對交易記錄的看法,至少在他們設法連接到一個誠實的節點之前。檢查點確保這樣的攻擊者只能操縱受害者對歷史的看法,直到最近的檢查點,這至少限制了可能造成的損害。
- 較長的叉子可能是“邪惡的”叉子。 這可能發生在 51% 攻擊的情況下,其中控制比網路其餘部分更多的雜湊能力的攻擊者決定從過去的某個時間分叉鏈並“重寫歷史”。憑藉他們的算力佔多數,他們最終可以使他們的分叉比“真正的”分叉更長。檢查點確保它們只能重寫到檢查點。
在每種情況下,這都是對攻擊的最小限制;將歷史重寫回最後一個檢查點的能力仍然是毀滅性的。但它可能有助於減少混亂,直到受害者可以連接到誠實節點(在 Sibyl 案例中)或直到採用其他協議更改(在 51% 案例中)。
另請參閱區塊鏈中的檢查點是否有助於避免重寫整個區塊鏈的 51% 攻擊?
這些適用於完整節點和瘦客戶端。
此外,正如您連結的文章中所述,如果您知道不需要擔心這些攻擊,那麼您可以決定在檢查點之前不驗證鏈的每個最後細節,這將節省計算並讓您同步區塊鏈更快。