測試網比特幣錢包:雜湊地址中的哪個腳本?
為什麼測試網錢包以腳本雜湊地址(前綴 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]' > script3 $ bx script-encode < script3 | bx sha256 | bx ripemd160 | bx base58check-encode --version 196 2Mu..xxxx..r
這是我要找的地址。