Bech32-Address

使用 v1+ segwit 輸出辨識地址類型

  • November 13, 2021

如果我錯了,請糾正我:

因此,使用 segwit v0 我們知道 20 字節等於 P2WPKH,32 字節等於 P2WSH,因此我們可以通過解碼 31 字節或 43 字節的 bech-32 編碼字元串來辨識地址類型。

所以我們得到解碼0<公鑰雜湊>或0<贖回腳本的sha雜湊>,並辨識發件人地址類型

現在我讀到已經對 P2WSH(或 P2TR?)地址使用較新的 bech 版本(bech32m)進行了一些測試,並且還評論說一些測試導致資金失去,這讓我感到困惑。(<https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-November/018268.html>)

A)考慮到資金在使用 bech32m 編碼的主網上失去(或者是使用 bech32 的 p2tr v1+?),我是否正確假設 P2WPKH/S 腳本可以有見證版本 1(bech32m),否則:這怎麼可能在主網上測試(或者你可以生成有效的 p2tr 地址,但只是不從它們那裡消費?是這樣嗎?) -> 我想考慮到 v1 主根地址看起來與 v1 P2WSH 地址相同,這是有道理的?

->> 如果是這樣,我們如何區分 P2WSH 1 <贖回腳本的 32 字節雜湊> 和主根 1 <公鑰 32 字節> 的腳本雜湊

<https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki#addresses-for-segregated-witness-outputs>

由於地址指示完全基於“腳本大小”,為什麼在上面的連結中沒有這樣做?這會被認為是“不標準的”嗎?如果是這樣,為什麼要如此強調測試呢?我不明白這是一個驚喜?

B)如果不是這種情況,並且確實是 P2TR 地址沒有使用 bech32 正確解碼,那麼考慮到 bech32m 唯一改變的是校驗和,**為什麼會出現這種情況?**如; 解碼過程沒有因為這個 BIP 而改變。

BIP的報價:

這不會影響見證版本 0 BIP173 地址的現有使用,因為它們限制為兩個特定長度,但可能會影響未來使用和/或使用 Bech32 編碼的其他應用程序。

使用 P2TR 的地址也有長度限制,對吧?

您可以通過見證版本區分 Taproot scriptPubKey 和 P2WSH scriptPubKey。1對於 Taproot,0對於 P2WSH。

不存在“版本 1 的 P2WSH”,它只會被升級節點(啟動後)視為 Taproot scriptPubKey,並被舊節點視為任何人都可以消費。

P2WSH: &lt;0&gt; &lt;32-bytes push&gt;
Taproot: &lt;1&gt; &lt;32-bytes push&gt;

至於提到的資金損失,我還沒有聽說過,但有可能(如果你發送硬幣給&lt;0&gt; &lt;random 32 bytes&gt;你,你會燒掉你的資金)。無論如何,它與地址編碼無關,它只是一個使用者界面。

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