How to findout the sender of a transaction

12

2

How do I find out which addresses are the inputs of a given transaction, given its transaction ID? I know there is a way, as satoshidice.com uses this. I would like to do this with own software and not rely on some third party provider, which could easily kill their service.

EDIT:

Basically I'm creating a PHP project, where I need to find out when a new transaction arrives and which address sent it. So I need a way to get a notification or start a PHP script (called with needed variables [txid, sender address, receiving address, value]) when a new transaction arrives.

Frederick Behrends

Posted 2012-06-05T08:18:10.007

Reputation: 221

I edited your question to tidy up the grammar and spelling, but also fixed the assumption that there is a single "sender" address. It's quite possible that the transaction has multiple inputs and multiple outputs, so there's no single "sender". SatoshiDICE doesn't care; it just sends the winnings to one of the sending addresses.Chris Moore 2012-06-05T10:41:18.413

Answers

10

I just answered a similar question. The relevant parts are:

It is now possible to determine the list of addresses that sent a transaction using the raw transaction JSON-RPC API calls that were released with bitcoind and bitcoin-qt version 0.7. The pseudo-code to accomplish this is:

txid = <relevant transaction id>
addresses = []
raw_tx = decoderawtransaction(getrawtransaction(txid))
for(input in raw_tx['vin']) {
  input_raw_tx = decoderawtransaction(getrawtransaction(input['txid']))
  addresses.push(input_raw_tx['vout'][input['vout']]['scriptPubKey']['addresses'][0])
}

Stephen McCarthy

Posted 2012-06-05T08:18:10.007

Reputation: 608

Trying to find out the same thing, your "decoderawtransaction(getrawtransaction(input['txid']))" instruction failed at first. However, the problem fixed itself and your example worked after I waited for raw_tx['confirmation'] and raw_tx['blockhash'] to be defined.adamrmcd 2013-06-03T03:44:12.007

this basically scans through the blockchain for the output transaction corresponding to the hash value in the later input-transaction. is there not a way of getting the answer using the input scriptsig though?mulllhausen 2014-03-25T02:17:31.737

Asked a question related to your pseudocode. Would appreciate if you can take a look.

Salvador Dali 2017-12-29T08:37:14.980

2

The Bitcoin.org client doesn't provide this.

I believe your options are:

Stephen Gornick

Posted 2012-06-05T08:18:10.007

Reputation: 26 118

i thought about using ABE but i were told uses about 1,4GB of ram, which is just to much for my "small" vps with 2GB of ram in total. Are the other more "lightweight" ?Frederick Behrends 2012-06-05T10:11:44.143