Raw-Transaction

P2SH-P2WPKH - 一直在隔離 UTXO?

  • October 11, 2018

我已經閱讀了很多關於 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地址的比特幣會產生一個 segwit UTXO

為什麼他們寫這個“對於非segwit UTXO的支出,簽名生成算法不變”部分,它涵蓋了哪些情況?如果您有 P2SH-P2WPKH 地址,但您要花費一些外國 UTXO(這些 UTXO 並未定向到您的地址)?

我認為你是對的,這聽起來只是在說如果你想發送到一個隔離見證地址,你不需要對非隔離見證輸入進行與以前不同的簽名。

消費 P2SH(P2WPKH)

這是一個很好的參考範例:BIP 141: P2SH(P2WPKH)。為了使用發送到您地址的比特幣3MxYPuvEcKDdaEG1xoGyddqir6C4b66MJi,您必須提供以下資訊:

witness:      &lt;signature&gt; &lt;pubkey&gt;
scriptSig:    &lt;0 &lt;20-byte-key-hash&gt;&gt;
             (0x160014{389f26d8d616cb96df1cfd6d9989248a30b933b9})

也許您忘記了推送操作0x16和/或0x14in scriptSig

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