P2SH-P2WPKH - 一直在隔離 UTXO?
我已經閱讀了很多關於 BTC 交易結構的文件,並且在談到 SegWit 的故事時發現它真的很混亂。
所以,第一件事是,如果我有 P2SH-P2WPKH 地址,這是否意味著該地址的所有輸出(UTXO)都是定義為 segwit UTXO 的?
在文件(<https://bitcoincore.org/en/segwit_wallet_dev/>)中它說:
P2SH-P2WPKH 的簽名生成和驗證
對於非隔離見證 UTXO 的支出,簽名生成算法不變。
P2SH-P2WPKH的消費:
- scriptSig 必須只包含redeemScript 的推送
…
所以,要麼 P2SH-P2WPKH 地址的所有 UTXO 都是 segwit 的,要麼如果 SegWit 交易是針對這個地址進行的,它們就是 SegWit(這對我來說實際上沒有什麼意義,因為這會出現雞蛋問題)。
為什麼他們寫這個*“對於非segwit UTXO的支出,簽名生成算法不變”*部分,它涵蓋了哪些情況?如果您有 P2SH-P2WPKH 地址,但您要花費一些外國 UTXO(這些 UTXO 並未定向到您的地址)?
另一個不清楚的部分是 P2SH-P2WPKH 地址的腳本。所以這是我的範例地址:3MxYPuvEcKDdaEG1xoGyddqir6C4b66MJi
這是對其進行的交易: https ://blockchain.info/rawtx/6c2806587d5cdb3f0363e43f60b4a84baf37b3012fbde02f108f4eb1bdcede42
基於它 pubKeyScript 的輸出是a914de523116b281c96ff1e204ea2ff435b75d48f0de87轉換為:
OP_HASH160 de523116b281c96ff1e204ea2ff435b75d48f0de OP_EQUAL
所以,de523116b281c96ff1e204ea2ff435b75d48f0de是兌換腳本的 hash160。我發現的唯一與此雜湊匹配的兌換腳本如下:
0 389f26d8d616cb96df1cfd6d9989248a30b933b9
哪個是見證 v0 程序腳本(0 sha160sha256(pubkey),所以這意味著我必須創建 SegWit 交易,對嗎?我嘗試製作 P2SH 交易,它說我在贖回腳本中進行了非名義推送,這就是我相信“0”推那裡。
我覺得在這部分做錯了什麼,結果簽署了錯誤的事情或以錯誤的方式……
非常感謝任何解釋。
如果我有 P2SH-P2WPKH 地址,這是否意味著該地址(UTXO)的所有輸出都定義為 segwit UTXO?
是的,發送到一個
P2SH-P2WPKH
地址的比特幣會產生一個 segwitUTXO
。為什麼他們寫這個“對於非segwit UTXO的支出,簽名生成算法不變”部分,它涵蓋了哪些情況?如果您有 P2SH-P2WPKH 地址,但您要花費一些外國 UTXO(這些 UTXO 並未定向到您的地址)?
我認為你是對的,這聽起來只是在說如果你想發送到一個隔離見證地址,你不需要對非隔離見證輸入進行與以前不同的簽名。
消費 P2SH(P2WPKH)
這是一個很好的參考範例:BIP 141: P2SH(P2WPKH)。為了使用發送到您地址的比特幣
3MxYPuvEcKDdaEG1xoGyddqir6C4b66MJi
,您必須提供以下資訊:witness: <signature> <pubkey> scriptSig: <0 <20-byte-key-hash>> (0x160014{389f26d8d616cb96df1cfd6d9989248a30b933b9})
也許您忘記了推送操作
0x16
和/或0x14
inscriptSig
?