Bitcoin Forum
November 09, 2024, 11:11:07 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: how to figure out transaction in values from addresses  (Read 1345 times)
earney (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
January 27, 2011, 02:09:54 AM
 #1

how to figure out transaction IN values from addresses?  I've been looking at the output of a transaction, and I can't figure out how blockexplorer figures out the transaction in values for each bc address.

For example,  see http://blockexplorer.com/b/104777  , the second transaction has 9 inputs with different values.   How are these derived from the raw block?

Thanks..
theymos
Administrator
Legendary
*
Offline Offline

Activity: 5376
Merit: 13407


View Profile
January 27, 2011, 02:26:16 AM
 #2

You need to follow the prev_out. It's not specified in the transaction. Looking at this transaction, locate output #1 in transaction b8983967c707 to get the value. It's the second "out" here. The index ("n") starts at 0.

The difficulty of processing this by hand is one of the main reasons I wrote BBE. Previously I output all of the blocks to a file and then searched it for hashes, but I had to go back and forth dozens of times just to figure out the total value of a transaction.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
earney (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
January 27, 2011, 02:33:14 AM
 #3

thanks..  that makes sense..  I was thinking that the values in the transaction IN added up to the values in the transaction out, but in the example I gave you, this is not the case..  Most of the time the aggregate values in tx_in was equal to the values of the tx_out..
Hal
VIP
Sr. Member
*
Offline Offline

Activity: 314
Merit: 4226



View Profile
January 27, 2011, 06:49:02 AM
 #4

The sum of the IN values has to be greater than or equal to the sum of the OUT values. If it is greater, the difference is a transaction fee, collectable by whoever generates the block that includes this transaction.

Hal Finney
theymos
Administrator
Legendary
*
Offline Offline

Activity: 5376
Merit: 13407


View Profile
January 27, 2011, 07:21:07 AM
 #5

thanks..  that makes sense..  I was thinking that the values in the transaction IN added up to the values in the transaction out, but in the example I gave you, this is not the case..  Most of the time the aggregate values in tx_in was equal to the values of the tx_out..

All of the input values do add up to the output values in that block. Are you counting all of the outputs of the input transactions, perhaps?

I forgot to answer part of your original question: you can get the actual addresses by parsing the scriptSig/scriptPubKey. My tools are useful for doing the necessary conversions:
http://blockexplorer.com/q/hashpubkey
http://blockexplorer.com/q/hashtoaddress
http://blockexplorer.com/q/addresstohash

Transactions to addresses use:
scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig: <sig> <pubKey>

Various other less usual transactions use:
scriptPubKey: <pubKey> OP_CHECKSIG
scriptSig: <sig>

You can put pubKeyHash through hashtoaddress to get the address, or you can put pubKey through hashpubkey+hashtoaddress.

Addresses can't be easily determined for non-standard transactions such as this:
http://blockexplorer.com/testnet/tx/802b9e557161b9bffdc2e12cc755eb4379f88014f288c2484bb39b831bb9938e#o1

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!