4

I have an address from which all unspent txouts were used in a single transaction. How can I find out what transaction was that? In my node instance, listtransactions will not list addresses that spent the coins, only those that received them.

1 Answer 1

5

The data you are looking for isn't actually included in the transaction that spends the UTXOs. Addresses are basically shorthand for a scriptPubKey, and scriptPubKeys are associated with outputs, not inputs. So if you want to check if an input spends from a certain address, you have to get the corresponding previous output and look what address it pays to.

For example, I have a transaction in my listtransactions:

{
"account" : "",
"address" : "mmcuav4ZD8EBc8aH5EkoGcKZSPsoHz1UzZ",
"category" : "receive",
...
"txid" : "8cb677f33d2ad2d9d94a4aa5552cd6a09615568abb7e5fd3c34df3c7869105d3",
...
}

So, I use getrawtransaction to see what my transactions inputs are:

$ bitcoin-cli getrawtransaction 8cb677f33d2ad2d9d94a4aa5552cd6a09615568abb7e5fd3c34df3c7869105d3 1

...
"vin" : [
    {
        "txid" : "33e25fd78c075dff3b0474911ca2244c5246cb40b0b34653e2fe1ca6f7c26d46",
        "vout" : 1,
        "scriptSig" : {
            "asm" : "3044022009ee6ccde46a58d7e5347ed28e8e946b1cbca3518c5066bcf1809abdfef9ef940220254fa3ed7f80831f08f760958d870a575f612aa5bb67add4cd4eb7d135a75b6a01 02a54cf1e2ecaea3e56721af6e90eb8e934597ee77cd03e060bbed47b8db03a754",
            "hex" : "473044022009ee6ccde46a58d7e5347ed28e8e946b1cbca3518c5066bcf1809abdfef9ef940220254fa3ed7f80831f08f760958d870a575f612aa5bb67add4cd4eb7d135a75b6a012102a54cf1e2ecaea3e56721af6e90eb8e934597ee77cd03e060bbed47b8db03a754"
        },
        "sequence" : 4294967295
    }
]
...

Now I look at the transaction output that funded this input, which is at index 1.

$ bitcoin-cli getrawtransaction 33e25fd78c075dff3b0474911ca2244c5246cb40b0b34653e2fe1ca6f7c26d46 1

...
"vout" : [
    ...
    {
        "value" : 2.39990000,
        "n" : 1,
        "scriptPubKey" : {
            "asm" : "OP_DUP OP_HASH160 1fab219d5483021bd791453e155f7b956f4b3ed4 OP_EQUALVERIFY OP_CHECKSIG",
            "hex" : "76a9141fab219d5483021bd791453e155f7b956f4b3ed488ac",
            "reqSigs" : 1,
            "type" : "pubkeyhash",
            "addresses" : [
                "miQQFQse4DwFE9rkMkZ78CwvTHkg3sTJmc"
            ]
        }
    }
]
...

So, miQQFQse4DwFE9rkMkZ78CwvTHkg3sTJmc is the addres that funded my original transaction. Obviously, this can be automated so you don't have to make all these calls each time you want to see the address that funded a transaction.

1
  • I was looking for some kind of indexed operation, but if I must list the transactions, and search one by one, from newest to oldest, that will suffice for my application. Thanks.
    – lvella
    Mar 30, 2015 at 18:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.