Segregated-Witness

為什麼 P2WSH 地址比 P2SH 地址大?

  • May 8, 2021

有人可能會天真地假設兩個地址都是腳本的雜湊值,因此應該是相同的大小。

因為 P2SH 地址太短,無法提供我們期望從比特幣中獲得的通常理想的安全級別,以抵禦某些攻擊。最重要的是,它們使用 bech32 編碼而不是 base58,這意味著它們對於相同數量的數據會稍長一些,但不區分大小寫。

對於任何類型的“多方”地址(即,由多個不同且不信任的參與者建構的地址,每個參與者都有自己的密鑰,例如 multisig),存在執行時間為*O(2 bits/2 )*的特定衝突攻擊,其中 bits 是地址中熵的位數。

P2PKH、P2WPKH 和 P2SH 地址在其地址中具有 160 位散列。對於 P2PKH 和 P2WPKH 這很好,因為它只支持單方建構。然而,由於 P2SH 支持多重簽名和其他多方結構,這意味著可能發生約 2 80次攻擊()。比特幣通常具有 2128個**安全*目標來進行攻擊,因此這還不夠。這並不意味著這樣的碰撞攻擊是可行的——它只是比系統的其他部分提供的要弱得多,而且隨著計算性能的提高,對於資金充足的各方來說,它可能變得可行。

為了解決這個問題,P2WSH 引入了一個包含256位雜湊的多方地址,因此它具有大約2128 的衝突安全性。

在即將到來的 Taproot 升級中,引入了一種新的 P2TR 地址類型。它具有與 P2WSH 地址相同的長度,並且還包含約 256 位的熵。由於 Taproot 將 P2PKH 和 P2SH 風格的消費合二為一的性質,這意味著即使是單方地址也是 256 位。

有關攻擊的詳細資訊,請參閱<https://bitcoin.stackexchange.com/a/54847/208>。

(*) 有一些方法可以避免碰撞攻擊問題,即使是短雜湊。然而,它們使地址建設和支出顯著複雜化。因此,選擇提供 256 位腳本散列機制實際上只是為了確保多方地址構造不會不必要地複雜。

引用自:https://bitcoin.stackexchange.com/questions/106140