If balances are calculated on the fly by offsetting all the transactions flowing in and out of a public address, will this degrade the performance of calculating such balances in years to come, i.e. when large volumes of transaction history have accumulated? How many transactions would result in a noticeable drop in performance? or is the threshold so high that it's not likely ever to be reached by the vast majority?
2 Answers
The balance is calculated from something called UTXO, this is a list of unspent coins, it is created on blockchain rescans and updated on receiving of new blocks. It is therefore not dependent on transaction history size but only all current available coins fragmentation.
There are performance issues with this solution also, but they are been worked on...
-
I think UTXO stands here for unspent transaction outputs in case somebody else was also wondering.– Murch ♦Feb 16, 2014 at 18:22
-
When the transaction makes it to the blockchain, everycoin in it's input is destroyed and new coins are created - on per each output. Feb 17, 2014 at 12:24
The calculation of the balance of a public address is not part of transaction validation. In order for a transaction to be considered valid, it must redeem unspent transaction outputs. Transaction outputs are always redeemed entirely, so there is no need to calculate the balance of a public address, only to check that these outputs have not been redeemed (spent) before.
So the scalability of balance calculation is not an issue that affects the processing of payments. That said, each bitcoin node still must remember the list of unspent transaction outputs.