1
i have a confuse about the "getrawtransaction" RPC function,it returns a json object, which contains the addresses list in the "vout" object,like below.It took me some time to understand when the multiple addresses will contains many items,as i see, it always only one item, After reading the source code, I also found that even for multi signature transactions, there will not be multiple addresses. I need somebody help!please!
{
"value": 1000000,
"script": "a914d550ecfc60d9f976de1f2a43bdf4e491b684cd6887",
"spent_by": "cd2494071876f91e1f9505f5c5421088c7df2e6f939c17f742d3638bc7df789a",
"addresses": [
"3M8voDot82tBrQE7QWGy9WUWxp7gDU7owx"
],
"script_type": "pay-to-script-hash"
}
full url is: https://api.blockcypher.com/v1/btc/main/txs/46001fade64b8fa23815066ec62cc4a91ee0c8f4a4fad26e428bc4c0a2146290
I tried to send a multi sign transaction to the test network, and then looked at the data, and found that there was only one address.
I think MULTISIG public keys are hashed to addresses and are shown in the addresses list as well. See
script/standard.cppline 212 (inExtractDestinations). For each pubkey, it doesCTxDestination address = PKHash(pubKey); addressRet.push_back(address);– Jose Fonseca – 2019-10-23T02:02:24.823Correct - p2pkh (1..) addresses are based on the public key hash, but the public key is not hashed in the bare multisig script. Bitcoin Core will hash it as part of converting it for display purposes. – Raghav Sood – 2019-10-23T02:11:55.463
Understood, but doesn't this subroutine hash the pubkeys found inside the script? – Jose Fonseca – 2019-10-23T02:14:29.970
1It does, yes. But it will only hash it for pubkeys in a bare multisig output. In a P2SH multisig output, the pubkeys are disclosed when spending the coins, not when receiving them. – Raghav Sood – 2019-10-23T02:25:43.977
Got ya. Understood now. Thanks. – Jose Fonseca – 2019-10-23T02:26:53.003
thanks for your answer.So,now when sending what type of transaction script will result in multiple entries in the address array ? – user100196 – 2019-10-23T06:19:23.850
Or can we ignore this type of transaction because it's abandoned? – user100196 – 2019-10-23T06:20:01.470
@user100196 As far as I'm aware, only a bare multisig output will create multiple entries. I wouldn't ignore it, since it is possible to still send those transactions (although you might find it a bit difficult, as no regular wallet will support creating them). But it is possible that someone is doing them via some program. – Raghav Sood – 2019-10-23T07:36:42.443