UTXO vs. Account: Who Wore It Better in Blockchain?
Learn how Bitcoin and Ethereum handle transactions differently through their UTXO and account models. Discover how Bitfinity is breaking new ground by seamlessly bridging these models with its innovative Chain Key technology.
Imagine a world where every transaction you make is secure, transparent, and immutable. Welcome to blockchain. But what exactly is a blockchain transaction?
Well, the primary purpose of a transaction is to modify the user state—transferring a specified amount from the payer to the payee, thereby adjusting their respective balances. But how is this done, and why does it matter?
Join us in this article as we take you through the Unspent Transaction Output (UTXO) model used by Bitcoin and the account-based model used by Ethereum, highlighting how they work, their strengths and weaknesses, and the key differences between them.
What is the UTXO Model?🔗
First of all, we take a look at the UTXO model, which is a design where transactions are processed by tracking outputs from previous transactions. Each transaction creates new UTXOs as outputs that can be spent in the future as inputs, hence the name "unspent transaction outputs." Once an output is used, it is marked as "spent" and cannot be reused.
To understand this better, let's look at how the model works.
The UTXO Model Workflow
The UTXO model functions more like physical cash, so to speak.
Let's say Satoshi has one $5 bill and one $10 bill. He then finds an NFT that costs $12. To pay, he gives the seller his $5 and $10 bills, who will then give him back a balance of $3. In this case, we have two inputs (the $5 and $10 bills) and two outputs ($12 for the seller and $3 back to Satoshi).
Similarly, if Satoshi has 5 Bitcoins (BTC) and wants to pay Vitalik 2 BTC, he must spend all the 5 BTC and then receive change. So the 5 BTC (input) would be consumed, and then we have 2 BTC for Vitalik and 3 BTC for Satoshi as new outputs, which can be used in the future to make other payments as new inputs.
This is how the UTXO (Unspent Transaction Output) model works in Bitcoin.
The difference between cash payments and Bitcoin UTXOs is that cash comes in standardized denominations like a $5 or $10 note, whereas UTXOs can represent any amount.
For example, if you own 3 BTC, this could be represented as either 1 UTXO of 3 BTC or several UTXOs that, when combined, total 3 BTC.
The Account-Based Model 🧩
The other model we are discussing here is the 'account-based model' used by the Ethereum Virtual Machine (EVM), which keeps track of the balance of each wallet similar to traditional banking systems. When a transaction takes place on the Ethereum network, the EVM records a state change—deducting an amount from one wallet and adding it to another.
For a deeper understanding, consider this next example:
Vitalik has 100 ETH and wants to send 30 ETH to Satoshi. By initiating the transaction, the EVM will record a 30 ETH deduction and a resulting balance of 70 ETH in Vitalik’s account and an increase of 30 ETH to Satoshi’s account. Simple as that...
Let's take a look at an in-depth understanding of each model and compare the two in the next section...
UTXO VS Account Model- A Detailed Comparison
The UTXO (of Bitcoin) and Account models (of Ethereum) can be compared under the following categories:
Recording State Changes
We know already that every time a transaction is initiated on the blockchain, a state change is registered. Or is it?
A 'state' in the blockchain refers to the content stored within its system at a given time.
🧩 In the account model, state changes are recorded in the blockchain by nodes creating a global state (a record of the account balances in all addresses, contract codes, and storage data). Therefore, each user account on the network has specific information that can be easily detected.
🔗 Conversly, the UTXO-based model is inherently stateless because it focuses on managing and storing the state of individual UTXOs instead of the whole account.
As we saw earlier, each UTXO can represent any amount of tokens. Therefore, for a wallet to display its total balance to a user, it must accumulate all UTXOs associated with the public addresses of that particular user.
Privacy and Traceability
🔗 In the UTXO model, each transaction typically uses a different address. This can make it harder for third parties to track transaction history or balance details unless they deploy advanced chain analysis tools.
🧩 On the other hand, transaction history and account balances in the account model are publicly accessible on the blockchain, which allows third parties to view and trace asset flows between different accounts. Despite this, tracing specific tokens that have been swapped can be challenging since after a transaction, a single balance is recorded. But in today's age, they will be found sooner or later.
Consider the example above where Vitalik sends Satoshi 30 ETH. When Satoshi spends 1 ETH, nobody can determine if it is the one from Vitalik or another source.
Smart Contract Functionality
🔗 The Bitcoin script language in the UTXO model can only access the inputs of the transaction it is part of. To have continued interactions, it must be included in each transaction output, which makes it cumbersome for smart contracts, limiting their capabilities or making it complex to develop with them.
🧩 The ease of updating the state in the account-based model is an advantage when a smart contract needs to interact with multiple parties simultaneously. This makes the model an ideal one for developers who work with smart contracts to create new use cases, such as tokenization and gaming.
Although it is expected to change in the near future and complex smart contracts are expected on Bitcoin with the coming of our own Bitfinity EVM.
Transactions Fees
🔗 In the UTXO model, fees are charged based on data storage of each UTXO. This means that more UTXOs would lead to higher fees, as we saw with the surge of inscriptions last year.
But these overly expensive fees are being solved as we speak. We also saw some innovations this year (as we will see later) including a consolidation mechanism which involves combining multiple smaller UTXOs into a single larger UTXO.
🧩 Alternatively, the transaction fees in the account model were also not optimal from the start, as they are calculated based on the computational resources needed to process and validate the transaction, a process facilitated by the global state tracking mechanism. These fees are also affected by usage, where when usage is high on the network, they could skyrocket to a certain level.
Scalability
🔗 Due to the independent nature of each transaction in the UTXO model, parallelization is used in transactions. What does this mean?
Parallelization is a method of processing multiple transactions at the same time
This capability allows the model to handle a large number of transactions, leading to higher throughput. Additionally, the implementation of scaling solutions like state channels and sharding become more efficient, leading to improved scalability.
🧩 On the account model’s side, transactions are processed sequentially (following a particular order). This makes scaling challenging and also may lead to congestion as the network increases the number of accounts and transactions, resulting in low throughput.
But this does not mean it hasn't been tried many times, and still is. New 'extensions' can be used such as Layer 2 chains and the anticipated Danksharding in Ethereum 2.0 to enhance scalability.
Security
Under security we have two attacks each handled by the UTXO and Account based model:
Double Spending Attack on UTXO 🔗
A double-spending attack would occur when the same coin is spent more than once. The Bitcoin creator, Satoshi Nakamoto knew this existed, so it was a topic in the Bitcoin Whitepaper, and arguably UTXO was a solution.
UTXO ensures that each transaction input references a previous transaction output, the sum of inputs equals those of outputs, and once a coin is spent it is removed from the UTXO set to prevent the attack.
Replay Attacks on Account Model 🧩
A replay attack on the account model would, as the name suggests, occur when a similar transaction is resent again and again to drain the sender's account.
If nonce were not taken into account. ;)
A nonce is a sequential number used once, which ensures that each transaction is unique and can only be processed once.
After a transaction is completed on Ethereum, the account is assigned a unique nonce for that transaction. If someone attempts to re-broadcast the transaction, the network detects the reused nonce and rejects the transaction.
Emerging Solutions on UTXO and Account Model
A thing worth noting is that the two models are each ushering in innovations as we speak…
UTXO
Runes is one of them, and has been one of the key emerging protocols in 2024. It aims to enhance the UTXO model even further.
The concept was introduced as a fungible token standard on Bitcoin by Casey Rodarmor in late 2023, and addresses the UTXO congestion concerns raised by the initial BRC20 standard (NFTs in Bitcoin).
It comes down to the fact that the protocol allows UTXO to hold different quantities or types of Runes, which reduces 'junk' UTXOs initially associated with BRC20 and also fees on the network.
Account Model
On the account model side, Account abstraction has come up to unify the two Ethereum accounts, which are Externally Owned Accounts (EOAs) and Contract Accounts.
A unification which allows developers to be more flexible in designing smart contracts, and allows for more efficient nonce abstraction.
Bitfinity Connecting Both
Bitfinity figured out a way to bridge the gap between Bitcoin's UTXO model and Ethereum's account-based system. Basically, with the Bitfinity EVM that's compatible with Chain Key technology, it lets these two models talk to each other seamlessly.
This means the rock-solid liquidity and security of Bitcoin can now mesh with the flexibility and programmability of Ethereum. By putting the EVM on Chain Fusion, Bitfinity found a way for Bitcoin to join in on the action in Ethereum's account-based playground.
Developers can now tap into Bitcoin's OG cred while also using Ethereum's smart contract capabilities to build next-level applications. Bitfinity's platform is like a decentralized bridge keeping the best features of both worlds intact - Bitcoin's security and transparency combined with Ethereum's ability to scale and host complex contracts.
Final Words
The way Bitcoin and Ethereum handle transactions is really interesting. Bitcoin uses the UTXO model, which is like dealing with cash, is better for 'privacy,' and prevents double spending, but is not as flexible for complex apps. Ethereum, on the other hand, uses a more classic account model, which makes it easier to change state and run complex smart contracts, but doesn't have the same security features as UTXO. In a way, Bitcoin is still king.
Bottom line - Bitfinity is breaking new ground and showing how merging different blockchain models with Chain Key technology can level up functionality and user experience. The future is bright for interoperability!
Connect with Bitfinity Network
Bitfinity Wallet | Bitfinity Network | Twitter | Telegram | Discord | Github
*Important Disclaimer: The information provided on this website is for general informational purposes only and should not be considered financial or investment advice. While we strive for accuracy, Bitfinity makes no representations or warranties regarding the completeness, accuracy, or reliability of the content and is not responsible for any errors or omissions, or for any outcomes resulting from the use of this information. The content may include opinions and forward-looking statements that involve risks and uncertainties, and any reliance on this information is at your own risk.
External links are provided for convenience, and we recommend verifying information before taking any action. Bitfinity is not liable for any direct or indirect losses or damages arising from the use of this information.
Comments ()