Bitcoin-Core

緊隨其後的是多重簽名

  • February 18, 2020

我正在分析一個比特幣交易,它同時適用於 Segwit 和非 Segwit 的多重簽名腳本。這是交易:https ://www.blockchain.com/en/btc/tx/80975cddebaa93aa21a6477c0d050685d6820fa1068a2731db0f39b535cbd369

請注意,在索引 0、1 和 2 上,我們在 scriptsig 文件中有解鎖腳本,而在索引 3 上,它正在使用見證程序。到現在都沒有問題。

困擾我的是為什麼當我從索引 0、1 和 2 獲取贖回腳本並執行ripemd60、sha256、創建校驗和並編碼為 base58 時,它會生成公共地址,正如我們在 blockchain.com 的螢幕上看到的那樣。但是當我使用見證部分中的贖回腳本做同樣的事情時,它返回給我一個完全不同的地址,為什麼會發生這種情況?

另外,索引 3 上的 scriptSig 是什麼?它是如何產生的?

例子:

索引 0 的贖回腳本:

522102194e1b5671daff4edc82ce01589e7179a874f63d6e5157fa0def116acd2c3a522103a043861e123bc67ddcfcd887b167e7ff9d00702d1466524157cf3b28c7aca71b2102a49a62a9470a31ee51824f0ee859b0534a4f555c0e2d7a9d9915d6986bfc200453ae

使用我的腳本從索引 0 生成的地址:

3JUJgXbB1WpDEJprE8wP8vEXtba36dAYbk

它與交易相同。

索引 3 的兌換腳本(續):

5221021e6617e06bb90f621c3800e8c37ab081a445ae5527f6c5f68a022e7133f9b5fe2103bea1a8ce6369435bb74ff1584a136a7efeebfe4bc320b4d59113c92acd869f38210280631b27700baf7d472483fadfe1c4a7340a458f28bf6bae5d3234312d684c6553ae

使用我的腳本從索引 3 生成的地址:

36aKiVksQRLKwByBYVz3KwquFcvHZkwroP

從 blockchain.com 恢復的交易地址

3CYkk3x1XUvdXCdHtRFdjMjp17PuJ8eR8z

您正在計算隔離見證腳本的 P2SH 地址。然而,它不僅僅是 P2SH,它是一個包裹在 P2SH 中的 Segwit 腳本。您實際上必須首先獲取見證腳本(多重簽名腳本或 segwit 贖回腳本)並使用它製作 P2WSH 輸出腳本。然後這個腳本成為 P2SH 腳本的兌換腳本。

所以給定

5221021e6617e06bb90f621c3800e8c37ab081a445ae5527f6c5f68a022e7133f9b5fe2103bea1a8ce6369435bb74ff1584a136a7efeebfe4bc320b4d59113c92acd869f38210280631b27700baf7d472483fadfe1c4a7340a458f28bf6bae5d3234312d684c6553ae

作為見證腳本,您製作

002044c55c1da36a576217259c3bc21b0c3943f7eb3ff4e3c381d9fd3502434b9e87

作為兌換腳本。這是一個 P2WSH 輸出腳本。然後對其進行散列以在 P2SH 腳本中創建散列:

a914771962306e72e479245d48e879dd2a1862225b4c87

其地址為

3CYkk3x1XUvdXCdHtRFdjMjp17PuJ8eR8z

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