比特幣核心 0.14 中 –assumed-valid 的信任假設是什麼?
請幫助我理解和區分以下三種情況下的信任假設。具體來說,請詳細說明可能的攻擊(即使完全是理論上的)以及為獲得功能而犧牲的信任。
案例 1: 0.14 之前的比特幣核心沒有假設有效並且每個節點都完成了簽名驗證。
案例 2: Bitcoin Core 0.14 具有假設有效的區塊和簽名驗證,在發布之前跳過了區塊。這意味著區塊簽名是正確的,因為比特幣核心開發人員在其上簽名。
**案例 3:(**假設):Bitcoin Core 0.14 帶有 UTXO 集,其中包含 UTXO 數據庫的快照。這將以與假定有效的方式類似的方式完成。這將跳過完整的 IBD,並且對於快速啟動修剪節點非常有用。
我想知道以下2個問題的答案:
Q1) 在案例 2 中可能發生的攻擊(即使完全是理論上的)在案例 1 中是可能的。請詳細說明從案例 1 轉移到案例 2 所需的安全模型更改。
Q2)在案例 3 中可能發生的攻擊(即使完全是理論上的)在案例 2 中是可能的。在我看來,案例 3 中的安全模型與案例 2 的安全模型相同。如果我信任核心開發人員的簽名-驗證,還不如相信他們給出了正確的 UTXO 集。
Q1) 在案例 2 中可能發生的攻擊(即使完全是理論上的)在案例 1 中是可能的。請詳細說明從案例 1 轉移到案例 2 所需的安全模型更改。
沒有。如果碰巧有一個分叉使假設有效塊不再位於最長鏈中,那麼您將繼續驗證最長鏈中的所有簽名。如果有人給你一個不包含假設有效塊的“假”區塊鏈,你將執行與沒有假設有效塊相同的驗證過程。假設有效不會改變安全假設,因為假設有效塊不需要在區塊鏈中,這與檢查點不同。
Q2)在案例 3 中可能發生的攻擊(即使完全是理論上的)在案例 2 中是可能的。在我看來,案例 3 中的安全模型與案例 2 的安全模型相同。如果我信任核心開發人員的簽名-驗證,還不如相信他們給出了正確的 UTXO 集。
不,案例 3 的安全假設與假設有效完全不同。您相信核心開發人員正在為您提供正確的 UTXO 集,並且通過這樣做,您相信您將在啟動時使用正確的區塊鏈。假設有效,您不信任或假設您使用的是正確的區塊鏈,您仍在驗證幾乎所有內容。假設有效,即使假設有效塊是錯誤的,您也可以並且仍然會使用正確的區塊鏈,並且只需在正確的區塊鏈上進行相同數量的簽名驗證,就像沒有假設有效的軟體一樣。