As you did before with the concept of identity, I will now be analysing the idea of a transaction.
Take a moment to ask yourself, “What makes a transaction valid?”
For a transaction to be valid, it must have these three components: (1) a proof of ownership, aka a signature (2) available and sufficient funds to spend, and (3) a guarantee that no other transaction is using or has used the same funds.
Let’s understand these criteria in the context of checks and banks: When you want to make a transaction via a check, you have to sign the check to validate it -- that’s a proof of ownership. The bank then has to verify that you have enough funds in your account -- that you have available and sufficient funds for the transaction. They must also ensure that you do not spend the same money more than once -- that you cannot send two or more checks each spending 100 dollars when your account only has 100 in total.
To ensure that one one uses funds not in their possession, all the same conditions apply to Bitcoin.
To enforce this, Bitcoin uses what’s known as a UTXO, or Unspent Transaction Output, model. (Click here to see how it works)
Traditionally, when you think of banks, you think of a single account where all our funds are aggregated into one count. For example, after buying a ten dollars worth of burgers and fries, your account balance goes from twenty to ten dollars. This is not the case with Bitcoin.
Accounts are easy for users to understand but surprisingly difficult for computers when it comes to all the complexity of a decentralised network. There is no longer a central entity to track all the transactions being made by my account, nor a central clock to track when transactions are being made.
If you make three different transactions of 5 bitcoins from an account of only 10 bitcoins, which of the two transactions should go through?
How do you ensure that we do not accidentally let all three transactions go through?
To make transaction processing much easier and more secure, users do not spend from an account; instead, they spend directly from transactions made to them.
An easy way to wrap our heads around this unintuitive model is to think of UTXOs as piggy banks. Every time a transaction is made to us, we put all that money into a UTXO, or piggy bank. When you want to spend money, you break open that piggy bank, spend whatever you like, and then put the rest into another piggy bank.
(It’s hard to put a piggy bank’s shattered pieces back together.)
This way, the complexity of checking for transaction validity goes down. Instead of asking the more difficult question, “Is this account trying to, at this time, spend more money than it owns across multiple transactions?,” we only need to ask:
“Does this single piggy bank have enough funds?”
On the other hand, the complexity of keeping track of one’s own funds goes up, as each of these piggy banks has to be tracked and secured individually. The amount of bitcoin you own is calculated by summing up the value of each of your piggy banks, or UTXOs.
Question: A UTXO can only be spent once.
True or False? Feel free to answer in the comment section.
Comments