Subject: [Bitcoin-development] working with the blockchain: transaction fees & sum(inputs) != sum(outputs) (newbie questions)

From: Denis Andrejew <[email-masked]>
Date: Fri, 14 Feb 2014 13:20:45 +0100

Hi all!

I'm new to development with bitcoin and I have a question for you guys:

What I'm trying to do is read the blockchain in order to find all unspent
outputs. I'm using bitcoind via rpc as my source of information about the
blockchain.

Now one thing that I don't understand fully yet when working with the
transaction data I'm being given is:

How do transaction fees work? More specifically: I can see that there is
often a gap between the sum of the ins and the sum of the outs in a
transaction and I understand that this is the transaction fee. But how can
the miner spend it if it is not assigned as an output of any transaction?
Is there special code somewhere that keeps track of all the btc not spent
in all the transactions of a block and allows the miner's address (ie the
address in the first tx of that block) to spend that? But if so, how would
that work then? I should be finding transactions then where the sum of the
ouputs is higher than the sum of the inputs and one of the inputs should
have the miner's address attached to it or what?

I am a bit confused about this part. Other than that it's quite fascinating
to see how bitcoin works and work with it. :)

So if one of you could kindly explain to me the technical view of
transaction fees (i.e. how exactly do I find them and account for them in
the blockchain), that would be brilliant!

And the other question would be this one (directly related):

What are the cases where the sum of the input values (from the referenced
transactions) can be different from the sum of the output values?

These cases I have found and understand:

1) "coinbase" transactions that "print money" have no inputs, only 50/25
coins output (less in the future)
2) transaction fees when in > out

Are there other cases?

Thanks,
Denis

"Be the change you want to see in the world." (Mahatma Gandhi)