Transactions

無法在測試網中加密 scriptPubKey

  • April 23, 2018

我有以下測試網錢包地址:

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

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