Transactions
無法在測試網中加密 scriptPubKey
我有以下測試網錢包地址:
2MsQEtPJ6JJZszMYrD6udjUyTDFLczWQrv9
我正在嘗試將其編碼為 pubkeyhash 到 testnet 中的 coinbase TX。當我執行 decode58 時,我得到了這個
C401B47E5722F808856A308FA043CCF28323F51711E8165536
我把它從版本字節前綴和校驗和後綴中去掉,我得到:
01B47E5722F808856A308FA043CCF28323F51711
所以 scriptPubKey 應該是
76a91401b47e5722f808856a308fa043ccf28323f5171188ac which is OP_DUP OP_HASH160 01b47e5722f808856a308fa043ccf28323f51711 OP_EQUALVERIFY OP_CHECKSIG
但作為一個健全的單元測試,我驗證了它。調試控制台
decodescript 76a91401b47e5722f808856a308fa043ccf28323f5171188ac
但是調試控制台給了我這個:
"asm": "OP_DUP OP_HASH160 01b47e5722f808856a308fa043ccf28323f51711 OP_EQUALVERIFY OP_CHECKSIG", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ "mffyC9xbwyBQUWhV8SbYWpqaiNSSWR2vpo" ], "p2sh": "2ND12E9b9oa9hvTTckXwNaSJiRZ39eRFWSJ"
那麼為什麼我得到地址“mffyC9xbwyBQUWhV8SbYWpqaiNSSWR2vpo”而不是“2MsQEtPJ6JJZszMYrD6udjUyTDFLczWQrv9”?
首先,scriptPubKeys 沒有加密,你所做的也不是加密。這是編碼。
問題是您試圖將 P2SH 地址編碼為 P2PKH scriptPubKey。P2SH 地址與 P2PKH 地址不同,具有不同的操作碼。您可以通過查看您未執行的地址的版本號來辨識它們。版本號其實是有含義的,不可忽視。您的 scriptPubKey 實際上應該是
OP_HASH160 01b47e5722f808856a308fa043ccf28323f51711 OP_EQUAL