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)