Unspent Transaction Output (UTXO): A Look at Bitcoin Transactions
For those of you out there getting actively involved with transactions using Bitcoin, you've probably received messages about unspent transaction outputs. So what does that mean exactly? We will be using this article to go into depth s to what these are and how the work.
What Does Unspent Transaction Output (UTXO) Mean?
So what is it we mean when we see ‘Unspent Transaction Output? (UTXO). In general, this refers to any unspent amount within transactions relating to Bitcoin.
Let's take a closer look at what this means by going more into Bitcoin and the transactions in general to give the best explanation. First of all, each of these transactions needs to start with coins that will serve as the ‘balance' of the ledger.
UTXO's will then go through a process over a continuous pace and, as a result, are responsible for the beginning and end of each transaction made by the user. The confirmation of whatever transaction takes place leads to these ‘spent' coins being removed from the database of UTXO. A record will remain of any and all of these transactions within the ledger, however.
It was during the early stages of the Bitcoin world that UTXO presented an incredibly effective concept. If you are one of the many out there that didn't fully understand the notion of UTXOs, you may end up accidentally making an accidental transaction or even conducting a double spend without ever intending to.
In this day and age, thanks to the improved UX and functionality of Bitcoin wallets, you don't really have to understand UTXO's as a whole to use a Bitcoin wallet. This is very much the case when it comes to more high quality Hierarchical Deterministic wallets (HD).
Whether or not there is a higher urgency on your part to better understand UTXO, it is still worth knowing the details of how they work. If nothing else is achieved by knowing them, it will allow you to better understand how you can make better use of and take better care of Bitcoin that you own, while not being tripped up by technical jargon.
‘Like a Cashier's Cheque' – UTXOs in Comparison
So, one of the easier ways to understand how UTXO functions within the crypto world are comparing these Bitcoin transactions to the way that Cashiers Cheques function. This is because there is a good amount of similarities as to how they function
Both of these are mediums in which you cannot simply exchange for custom accounts. Instead, you have no choice but to spend the whole amount that is within the cheque or data byte respectively. Bitcoin, in contrast, is pretty unique. This is because you can conduct transactions through the use of fractions within this same cryptocurrency. We see this with the names that we have for different small denominations of the same currency (Bits, Satoshis, etc).
Spending this currency doesn't take place by using a single data byte. However, the algorithm itself needs to obtain multiple segments of the same Bitcoin in order to fulfill the whole spend request from the user. An example of this is if you have one BTC, you may reclaim 0.6 of that BTC from one data Byte while receiving the further 0.4 from a whole other byte. The change from each of these different fractions is then sent across to your UTXO database, logging your transaction history.
The standard operation of the UTXO database is that it stores any change deriving from these completed Bitcoin transactions. In the beginning, this database will be set and start off as empty. Even with this being the case at the start, as you begin to log transaction activity, the array of transaction records will steadily begin to populate this database.
The Underlying Costs
There is a large volume of small coins or denominations within the network for Bitcoin. It is because of his that only a certain number of transactions are economic, while others, in the words of Jimmy Song, cost almost as much to simply move them, thereby rendering them completely un-economical.
This means that, for some transactions, it will end up costing more to actually make the transaction than the actual product costs. To put this in perspective, there is little sense using Bitcoin for smaller transactions, as we would for fiat or card payments to go to Starbucks. It's in this way, there is no real sense in using Bitcoin in order to make small payments.
This is further supported by Jimmy Song and his research on the same subject:
“…prominent bitcoin developer, 13 million coins have marginal costs greater than their worth at 50 Satoshi/bit.”
One of the other pre-eminent issue with a steady increase in the volume of UTXO. And that is the steady fluctuations in cost for equipment related to the processing of UTXO. These UTXO's and processing them simply do not keep up with the pace in which it increases.
One of the biggest examples of this that we see is with the underlying cost of mining equipment being used in order to validate nodes, the costs of which have yet to meaningfully keep up, a fact that Gavin Anderson goes on to explain in more detail.
“Allowing more transactions with no other changes would very likely accelerate the UTXO set growth making it more expensive to run a full validating node.”
How UTXO's Operate
These UTXO's are accessible from anywhere in the world, thanks to the public nature of Bitcoin. It exists within a wholly global database referred to as the UTXO Set – this is where users can view specific spendable accounts or all of them available for bitcoin transactions within the network. In order to create a brand new transaction, you will need to use some of this unspent output which is logged within the UTXO. In doing this, this will cause the volume in the UTXO to shrink slightly. One alternative to creating this shrink is to construct a new unspent output, which will further add to the amount within the UTXO database.
Keeping a firm track on the overall total of your existing unspent outputs is a role better served by full Bitcoin nodes. This specific node can serve to validate all of the transactions and various blocks that it received. One of the snags is that the node will only validate these transactions after ensuring that these same blocks and transactions adhere to the consensus rules of the network overall.
In summary, these full nodes ensure that you are spending Bitcoin that you don't have, or that you are not actively trying to engage in an act of double spending within the network.
Spending and UTXO
The Balance of Bitcoin that you have demonstrates the underlying amount of all outputs that you have the potential to spend from within your private key. Once you begin the process of initiating a specific transaction, you will need to make use of all of the outputs that exist within your UTXO.
One of the examples that we can use is that your UTXO has a worth of 5 BTC overall, while you want to send someone 3 BTC. Problem is that you can't just send that 3 BTC, as a result, you will need to spend everything that you have, UTXO and all. In order to accomplish this, you'll need to create two outputs for this one transaction. The first of these is the 3 BTC payment that you wanted to send to the other person. The second of these is the remaining 2 BTC, with its transaction serving as a digital form of ‘change' returning to your wallet.
Whenever you need to make a payment to someone else from within Bitcoin, it won't register on your wallet that you effectively made two transactions when sending money to this one individual. The reason for this is because everything happens behind the scenes. Whenever you make a new transaction, a brand new address will receive your transaction fee. This is what we will more simplistically refer to as your ‘change address', this is something that HD wallets help to streamline because they will randomly generate this address. These HD wallets produce a complex pattern of both public and private keys in order to make it increasingly challenging for any other entities to try and guess.
The sizes of the transactions that you decide to make can vary significantly. With smaller transactions racking up fees that can often be one third higher than the overall value of the transaction you're trying to make. The kinds of transactions with a fee that come up as greater than the actual value is something that is commonly referred to by the community as ‘dust'.
Should you be one of those on the receiving end of one or several of these small transaction inputs, you can actually combine them in order to create a substantially larger output so as to avoid a more punitive transaction fee. Be this as it may, it will still bring on a high transaction fee, another factor which holds it back from being used as a medium of currency transactions.
In many instances, when users are subject to high transaction fees, they often place the blame on the kind of wallet that they're using . for the transaction. While this is a salve for their wounded capital, it is actually more to do with the small kinds of payments that they're making or receiving that create these fees.
While some of the previously mentioned outputs from within this article go over those amounts that are spendable, it's worth pointing out that there will also be outputs within the network that are unspendable. But these often refer to outputs which pre-date (in age) the previous update known as the Bitcoin Core client version 0.9.
These unspendable outputs come from Bitcoin developers that used the programming language known as Script as a means of building applications within the network. These include Script's use in the development of elements like digital records and smart contracts within the ecosystem. These kinds of applications are, as a result, responsible for outputs being rendered unspendable, and yet remain within the UTXO set in spite of this fact.
The continued existing of these various spendable outputs means that the UTXO will continue to grow. Effectively, this continued growth will allow for these full nodes to keep busy with holding a continued watch over all outputs which come in and out of the UTXO set. The net result of doing this was effectively to make the task of running a whole node incredibly expensive.
In one article on Medium, there was an explanation of this kind of position with the following statement:
“Bitcoin Core client versions later than the 0.9 version include a return operator (OP_RETURN) that enables operators to create unspendable outputs outside the UTXO set. Although these unspendable outputs are not stored in the UTXO set, they are still recorded on the blockchain.”
In the above demonstration, we can see, through the first and fourth transactions within this chain, all of the outputs on the right hand side serve as a series of spent and unspent amounts. In contrast, within the fifth transactions, both of the outputs labelled here make up unspent amounts.
When we take a look at the first through to the fourth transaction, this particular user repeatedly sends across 8 BTC to another address. They start off with the overall balance of 11.852428 BTC within the input of his first transaction shown here. in the four transactions, the remaining balance, after the deduction of the 8 BTC they had sent – in addition to the associated transaction fee – are returning to the randomly generated ‘Change' address.
It is from these addresses, within the second through to fifth transactions, comes the beginning of wholly new transactions. And this is why there are ‘spent' outputs within transactions 1 to 4).
The original address, with its initial balance of 11.852428 is now reduced down to 7.838868 BTC. This is in light of the completion of the five times when the user completed transactions of 0.8 BTC. The underlying output of the remaining 7.838868 BTC makes up the UTXO of the original sender. The other transaction of 0.8 is now the UTXO belonging to the receiving party. We ought to take into consideration the fifth transaction outputs for both the final balance shown and the UTXOs.
Inevitably, if you do notice within this particular example, the attached public address of initial balance and the final address shown are different. This does, unfortunately, create a good deal of confusion of a number of people when their wallet address changes each time that they conduct a transaction with their wallet. For HD wallets, these send the change to a separate and randomly generated address in order to ensure your privacy and security.
It's our hope that you can use this article as a means of better understanding what UTXO is, without being encumbered by too much of the technical jargon associated with Bitcoin and cryptocurrencies in general.