為什麼 51% 的攻擊不能改變區塊鏈上過去的區塊?
我已經讀到不可能逆轉已經添加到區塊鏈中的交易,但我不明白為什麼在 51% 攻擊中這是不可能的。
如果攻擊者要更改過去交易的資訊,那麼該交易的雜湊值就會改變。這將導致該特定塊的不同 Merkle 根。由於攻擊者控制了 51% 的雜湊率,他將有足夠的計算能力來找到新的 Merkle Root 和這個新塊的 nonce,以便產生有效的工作證明。然後管理員可以廣播工作證明並自己批准,因為他控制著網路的大部分。這樣他就可以改變過去塊的內容。
我上面的邏輯在某種程度上肯定是有缺陷的。有人可以解釋為什麼 51% 攻擊不能改變過去的交易嗎?
數字簽名是否在其中發揮了某種作用?如果是怎麼辦?
它可能!攻擊者可以在任意深度替換一個塊,因為他們可以將多數雜湊率保持足夠長的時間。
比特幣區塊鏈中的每個區塊都通過在標頭中包含前一個區塊的雜湊來承諾其前身。因此,每個塊都以歸納方式送出給所有先前的塊。這可以防止一個塊被換出,因為更高高度的所有塊在包括新塊在內的鏈提示上都會顯得無效。
擁有多數雜湊率的攻擊者必須替換舊塊,然後從該點建構一個競爭的替代鏈提示,直到他們獲得比網路其餘部分更大的總工作量證明。由於攻擊者在每個前提下擁有多數雜湊率,因此他們必然會產生比網路其他部分更多的塊,並最終會領先。
在實踐中執行這種攻擊的困難在於獲取硬體以實現多數算力的後勤挑戰以及在這段時間內維持多數算力的經濟成本。此外,這種攻擊可能會被使用者協調拒絕攻擊者的鏈在社交層上拒絕,即使這樣,這種攻擊也可能會破壞比特幣使用者對網路穩定性的信心,並可能導致價格暴跌,嚴重降低了這種攻擊的預期收益。
假設塊高度目前為 700000,並且您計算了塊 699990 的不同版本並將其廣播。
舊區塊 699991 不能被認為是新區塊 699990 的繼承者,因為它引用了舊區塊 699990 的雜湊值,因此新區塊 699990 是區塊鏈新分叉的頂部。
每個節點會考慮兩個分叉,一個的區塊高度為 699990,另一個的區塊高度為 700000,其中還有十個區塊,節點將選擇具有 700000 個區塊的分叉。請注意,重要的不是長度,而是累積的工作量。
所以你不能只改變一個區塊,在這種情況下,你還必須計算總工作量大於現有鏈的後續區塊,最高可達 700000。你必須比其他礦工更快地做到這一點。在 700000 塊之上的塊。所以你可能有不到 10 分鐘的時間來做一些通常需要 100 分鐘左右的最佳採礦池的事情。