Wallet

測試網比特幣錢包:雜湊地址中的哪個腳本?

  • November 4, 2021

為什麼測試網錢包以腳本雜湊地址(前綴 2)的形式創建接收地址,而不是“普通”的m/n前綴地址?有什麼安全原因嗎?而且,它對哪個腳本進行雜湊處理?我從BIP.16假設一個單一簽名案例:

scriptPubKey: OP_HASH160 [{[pubkey] OP_CHECKSIG} 的 20 字節散列] OP_EQUAL

但是我無法獲得相同的腳本雜湊(當然我知道私鑰)。我嘗試了以下步驟:

$ echo [ 02b6d…公鑰…47f89 ] 檢查符號 > 腳本

$ bx 腳本編碼 < 腳本 | bx sha256 | bx成熟md160

046f…fb3

$ echo hash160 [ 046f…fb3 ] 等於 > script2

$ bx 腳本編碼 < script2 | bx sha256 | bx 成熟md160 | bx base58check-encode –version 196

2NxxxxxxxL

(我曾期望得到錢包建構的相同結果,但它們不同)。

請注意,我肯定知道私鑰和公鑰。

所看到的是一個 P2SH 嵌入式隔離見證地址。

它包含腳本的雜湊值OP_0 [20-byte hash160 of compressed pubkey]

您可以將比特幣核心配置為生成舊版 P2PKH 地址(以 開頭-addresstype=legacy)。您還可以使用直接-addresstype=bech32表示OP_0 [20-byte hash160 of compressed pubkey]腳本來構造 Bech32 (BIP173) 地址。這些花費更便宜,但並非所有軟體都支持發送給他們。

感謝@pieter-wuille,我確認它是一個 P2SH 嵌入式隔離見證地址:

$ echo '0 [a01..pukbKeyHash..e8e]' | bx script-to-address -v  196
2Mu..xxxx..r

要麼:

$ echo '0 [a01..pukbKeyHash..e8e]' &gt; script3
$ bx script-encode &lt; script3 | bx sha256 | bx ripemd160 | bx base58check-encode --version 196
2Mu..xxxx..r

這是我要找的地址。

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