Segregated-Witness

“native segwit”和“bech32”有什麼區別?

  • December 23, 2021

人們似乎在交替使用“native segwit”和“bech32”。他們真的是一回事嗎?

TL;DR:本機隔離見證是指沒有 P2SH 包裝器的隔離見證輸出。Bech32 是用於表示本機 segwit-v0 鎖定腳本的地址格式。

Wrapped 跟隨 vs. native 跟隨

當隔離見證被啟動時,它引入了第零代隔離見證,segwit-v0。相應的鎖定腳本有兩種形式:

  1. 前向兼容的“包裝隔離見證”或“嵌套隔離見證”輸出類型將見證程序包裝在Pay to Script Hash (P2SH)輸出中。有兩種變體,用於單簽名的 P2SH-P2WPKH 和 用於**包括多簽名在內的任意腳本的 P2SH-P2WSH。由於所有P2SH 地址,包裝的 segwit 輸出都使用Base58Check進行編碼。封裝允許任何支持 P2SH 的錢包發送到封裝的隔離見證地址。
  2. 破壞兼容性的“本地隔離見證”輸出類型只能由支持隔離見證的錢包支付。原生 segwit 輸出具有更高的塊空間效率,因為它們通過直接解析見證程序避免了 P2SH 包裝器所需的額外數據。原生 segwit 鎖定腳本使用新引入的bech32 地址格式 (BIP-173)進行編碼(用於 v0 原生 segwit 輸出)。

Bech32 的其他用途

Bech32 也用於其他目的,例如對 Lightning 發票進行編碼。最初,也計劃將 Bech32 用於以後的原生 segwit 輸出版本。然而,在發現可變性弱點之後,調查發現許多錢包沒有正確處理髮送到更高版本的隔離見證,Bech32 的修訂版本正在討論中。Bech32 的這個修改版本將使用不同的校驗和常量來明確破壞前向兼容性,即要求錢包升級以創建 segwit-v1 輸出。打破前向兼容性通過錯誤地將 segwit-v1 地址降級為 segwit-v0 地址來保護錢包免於燒錢,並允許修復可變性弱點。

Native follow-v1 使用 Bech32m

提議的 Taproot 軟分叉引入了原生 segwit-v1 輸出類型Pay to Taproot (P2TR),這將是第一個使用BIP-350提出的這種修改後的 Bech32 地址格式(稱為“Bech32m”)的原生 segwit 輸出類型。

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