攻擊者的區塊鏈分叉分支會被用於比特幣確認嗎?
據我了解,交易被聚集成一個塊,工作證明是通過計算塊的雜湊值來完成的,然後添加到塊鏈中。當一個區塊被添加到區塊鏈中時,該區塊中包含的交易被認為是被確認的。
查詢區塊鏈的全節點是如何決定的?或者交易檢查了多少個完整節點的區塊鏈?
假設攻擊者有一個分叉鏈,並且讓我們對其他完整節點拒絕或確認此分叉不做任何假設,我的交易是否可以針對攻擊者的這個分叉鏈而不是針對由誠實完整節點維護的其他有效區塊鏈進行檢查?
假設我成功了 6 次確認,但所有這些塊都是攻擊者的分叉。這是一個問題嗎?
您的場景並不完全清楚,因為您沒有告訴我們攻擊者是在生成有效塊還是無效塊。你也沒有定義你自己的錢包是全節點還是瘦客戶端。
我們先來談談區塊是如何通過網路中繼的:
當發現一個新區塊時,節點將通過
inv
(庫存)消息宣布它擁有這個新區塊。其他完整節點將發送getdata
消息,請求整個塊。在收到並驗證數據後,他們將向他們的對等方發送一條inv
消息,向他們宣布新的區塊。SPV 節點不請求完整塊。他們只會得到區塊頭,如果有任何感興趣的交易,他們會專門要求通過
merkleblock
消息發送這些交易的證明。SPV 節點無法完全驗證新區塊的有效性,因為它們不儲存區塊鏈。現在有三種不同的可能場景,以及需要考慮的兩種類型的錢包:
攻擊者正在生成無效塊
SPV 錢包可能會被愚弄,因為它無法驗證塊的有效性。他們仍然檢查塊頭的格式是否正確。一些 SPV 錢包需要多個對等方來告訴他們同一個區塊。因此,這種攻擊可能需要額外的Sybil 攻擊或控制 SPV 錢包的網際網路連接。
完整節點不受影響,因為它們會拒絕無效塊。
攻擊者正在低速生成有效區塊
當 SPV 錢包從不同的對等方那裡聽到消息時,它將重組為更長的鏈。因此,SPV 錢包需要與其他資訊隔離才能正常工作。由於資訊是有效的,這種攻擊也可能對全節點起作用。被攻擊者可能會注意到可疑的緩慢更新速率。
攻擊者正在以 51% 的算力生成有效塊
攻擊者的速度比整個網路的其餘部分都要快。通過選擇僅在他自己的區塊上建構,他可以探勘 100% 的區塊並且仍然超過剩餘的網路。這些塊是有效的,因此被所有節點接受(直到某種干預)。攻擊者可以審查交易,甚至通過從較早的區塊開始回滾少量區塊,但最終超越自然區塊鏈尖端。這被稱為多數攻擊,打破了比特幣的公理安全假設,即超過一半的挖礦算力是誠實的。
攻擊者分叉中的六次確認有多安全?
如果您陷入 Sybil 攻擊,這將愚弄您。在其他所有情況下,您都不會被愚弄,否則整個網路都是目標。
發送交易後,您將其廣播到網路。所有全節點都會收到該資訊並將驗證交易,因此全節點在礦工送出時忽略錯誤塊並等待將來正確的塊,並假設超過 50% 的礦工是誠實的,錯誤塊將被孤立。
然而,SPV 客戶端只檢查最長的鏈,在這種情況下會被錯誤的區塊愚弄。
您描述的攻擊是 51% 攻擊,其中攻擊者擁有整個雜湊能力的 50% 或更多,因此能夠在彼此之上創建假塊,這可能導致真正的破壞性情況,這絕對是一個問題。