Before we go any further, let’s understand one of the key components of the UTXO structure — Change Address.
Every time you have leftover BTC (aka change) from your transactions, it doesn’t go back to the same address from which your original UTXO went. Instead, it goes to a new address called “change address,” which is also part of your Bitcoin wallet. So, the leftover change never leaves your wallet but becomes part of a different address.
This change becomes part of your new UTXO set.
So, why did Satoshi code this feature into Bitcoin? To help keep the users pseudonymous. As you know, the Bitcoin blockchain is public and open. To help safeguard the user entity, a feature like “change address” is needed. If the change went directly to the original user address, it would become pretty straightforward to track their entire financial history.
Double-spending is an issue that a digital currency system must solve. Simply put, double spending is the possibility to spend a certain unit of digital currency more than once simultaneously. When it comes to physical cash, this problem is intrinsically resolved since you can’t spend the same note more than once at a given time.
Centralized digital transfers can still mitigate double-spending due to centralized governance. However, what about decentralized money transfers? When Satoshi Nakamoto created Bitcoin, double spending was one of the major issues they needed to solve. They did so by using a combination of UTXOs and blockchain.
How UTXO Fixes Double Spending?
- When a user receives BTC, the amount gets recorded in the blockchain as UTXO.
- Every bitcoin that a user owns can be recorded as UTXO in several transactions and blocks.
- When a Bitcoin transaction is created and broadcasted to the network, the node that receives the transaction verifies it by checking whether the transaction exists in a UTXO or not.
- If the transaction output no longer exists in UTXO, it means that it has already been sent, so the verification fails, and Bitcoin avoids double-spending.
Now that we have a fair idea of how UTXO works, let’s compare it with the Account Model used by Ethereum. If you think of the UTXO model as cash, then the Account model is like using a debit card. When you want to send money, the bank tracks how much money you have and checks whether you have enough to conduct the transaction or not.
When you make your Ether wallet and receive your first transaction, an account gets added and broadcast across the whole network. Every account in Ethereum has a balance, storage, and code-space for calling other addresses.
Before we get into the technical issues, let’s compare the main philosophical differences between the two.
- UTXO follows a verification model. The user submits a transaction to specify the results of the state transition. The nodes must continually verify if the transaction inputs are unspent and if the signature data correctly verifies everything or not.
- The account model is a computational model wherein users submit their transactions and instruct the nodes on what the state transitions should look like. The network then checks whether this state change is valid or not.
Alright, now let’s look into the core functionality differences between the two models. In particular — Scalability, Privacy, and Smart Contract Capabilities.
The most core point that we should investigate to understand the difference between the two is scalability.
#1 Blockchain Size
- The account model requires you to store memory instead of several UTXOs linked with a user’s total balance.
- The transactions in the account model are also smaller since they only specify the sender, receiver, amount, and digital signature.
- It is faster to get new nodes online in an account system since it requires less data to sync.
#2 State and Payment Channels
State and Payment channels are layer-2 technologies that move the exchange of data from the underlying blockchain to a dedicated trustless network of bidirectional communication channels. As of now, the most advanced version of the payment channel is Bitcoin’s lightning network. As we have mentioned before, the UTXO model is a verification model ideal for state channels.
While state channels are a layer-2 scaling solution, sharding is layer-1. Simply put, the entire state of the chain is broken into smaller segments or shards and then computed parallelly. Again, the UTXO model makes this pretty simple as the process of aggregating and defining spendable outs happens on the client-side, which reduces overall system stress.
The second area that we will be looking into is privacy, and both UTXO and account models have certain advantages here.
- UTXO transactions are hard to keep track of. Compared to the account model, coins in UTXO are harder to trace back to the source and require advanced chain analysis for careful investigation.
- Account transactions offer better fungibility since these accounts come with a built-in mixer. All the coins associated with an account are mixed, and an observer can’t determine which of the incoming transactions were spent.
Smart contracts in a UTXO model are more complicated than using the account model. Initially, this model was used only for simple transactions and to remove complexity as much as possible. The account model has a clear advantage here. The simple addition and subtraction model allows developers to create transactions that require state information or involve multiple parties.
Hybrid models like Qtum circumvent this weakness by using the AAL (Account Abstraction Layer) to translate between the UTXO model and account model to utilize the Ethereum Virtual Machine (EVM) to enable smart contracts in a UTXO-based system.
Speaking of which.
Come back here soon to learn EVMs!