0
I'm learning bitcoin protocol theory.
To pay to someone you use a transaction. In the transaction you specify some of old transactions that gave you money (so called inputs). These inputs should have not been already spent.
Therefore the bitcoin network must check these inputs are unspent. Bitcoin network holds the list of all unspent transactions. Transactions are in tree-like structures, and all unspent transactions are the roots of these trees. So bitcoin network checks that input transaction is in this list.
After current transaction is done, all used input transactions (inputs) are now spent, and output transaction and change are now put in the list of unspent transactions.
Is the above process and terminology correct?
EDIT: I found confusing now the thing that transaction can have multiple outputs. This means I cannot just state that transaction is my input, and that the it gets invalidated when used for new transaction, as this transaction has an output that is someone else input. How is this handled?
>Every full node maintains list of all processed transactions?
This list is called blockchain?
And only part of this list is UTXO.
< – croraf – 2017-10-21T14:59:05.797
1@croraf: Yes, a full node maintains a complete list of all transactions. That's what "full node" means. The blockchain consists of this list, plus block headers. It would be inefficient to search the whole list every time a new transaction has to be verified, so as the node downloads each block for the first time, it builds the UTXO database, so that it can check UTXOs in constant time. – Nate Eldredge – 2017-10-21T15:08:33.693