General

Explainers

How Does Bitcoin's UTXO Model Work?

Sep 16, 2024

What is UTXO?

What Is Bitcoin UTXO?

A Bitcoin Unspent Transaction Output (UTXO) is a small unit of BTC (a.k.a. Dust) that remains after a transaction. It represents a specific amount of BTC that has been authorized by a sender and is available to be spent by a recipient.

WhenSatoshi Nakamoto unveiled Bitcoin in 2009, BTC was the first digital currency to introduce the UTXO model. Following Bitcoin’s success, more protocols, such as Litecoin (LTC), Bitcoin Cash (BCH), and Dogecoin (DOGE), implemented this model.

Think of UTXOs as coins in your pocket.

Each coin has a specific value, and you can combine them to make a payment. Similarly, when you want to send BTC, your wallet software will select and combine multiple UTXOs to make up the desired amount. Any leftover BTC from this process is returned to you as a new UTXO (your change).

Just like you can't split a physical coin, you can't split a UTXO.

Let’s understand with a hypothetical transaction example.

If you have 3 UTXOs (0.5 BTC, 0.2 BTC, and 0.1 BTC) and want to send 0.6 BTC, your wallet will select the 0.5 BTC and 0.1 BTC UTXOs as inputs. The transaction will create two outputs: 0.6 BTC for the recipient and 0.2 BTC as change back to you (which becomes a new UTXO).

Often, the leftover “dust”, 0.2 BTC in our example, is ignored due to its insignificant nature (the amount is generally much smaller IRL).

How It Works

Bitcoin’s UTXO Model: How It Works

Bitcoin uses the UTXO (Unspent Transaction Output) model to track ownership, transactions, and prevent double-spending.

When you receive Bitcoin, you're essentially getting a new UTXO added to your collection. If you want to spend BTC, you need to use one or more of your existing UTXOs.

But what if you want to spend a small amount, say 0.1 BTC, but the smallers UTXO in your wallet is only 0.2 BTC?

If you need to send a smaller amount than what a single UTXO holds, your wallet will automatically select and combine multiple UTXOs to make up the right amount. Any leftover amount is returned to you as a new, smaller UTXO.

Each UTXO has a history attached to it, showing where it came from and who owned it previously. This history is permanently recorded on the blockchain, Bitcoin's public ledger. This makes all transactions transparent and traceable,helping to prevent fraud and double-spending.

Leather, as a Bitcoin wallet, helps you manage your UTXOs. It automatically selects the right UTXOs for your transactions, calculates any change you're owed, and ensures that your Bitcoin transactions are secure and valid.

If the UTXOs match the exact value of the required transactions, you will not receive any UTXOs in return.

Data Structure

UTXO Data Structure

We mentioned earlier that a large number of UTXOs add to the transaction fees as they increase data size. So, what does the data look like?

Each UTXO is a data structure containing:

  • Transaction ID: A unique hash identifying the transaction that created this UTXO.

  • Output Index: Indicates the specific output within the transaction (since a single transaction can have multiple outputs).

  • Value: The amount of Bitcoin associated with this UTXO (in satoshis, the smallest unit of Bitcoin).

  • Locking Script (ScriptPubKey): A small script specifying the conditions that must be met to spend this UTXO.This typically involves providing a valid digital signature proving ownership of the associated Bitcoin address.

Stacks Considerations

How Does Stacks Implement Bitcoin’s UTXO Model?

Stacks operates using Bitcoin’s UTXO model to function as a blockchain with thefinalityand security of Bitcoin’s blockchain. It usesClarity, a smart contract language specifically designed for predictability and security.

Clarity's smart contracts play a crucial role in Stacks' interaction with Bitcoin's UTXO model to manage assets and state. Clarity is also secure because its design eliminates the risks (like re-entrancy attacks, integer overflow/underflow, memory safety issues) associated with popularly used compiled smart contract languages like Solidity, Vyper, Rust, etc.

STXis Stacks’ native token, which can be used to pay transaction fees, register names, and participate in consensus. All STX transactions follow the UTXO model to execute Bitcoin-like transactions consisting of inputs, outputs, and scripts that define spending conditions.

Proof of transfer (PoX)is the consensus mechanism of Stacks, which uses Bitcoin’s Proof of Work (PoW) chain as its anchor chain. This method further reinforces the link between Stacks and Bitcoin's UTXO model.

Leather's Implementation

How Does Leather Implement the Bitcoin UTXO Model via Stacks?

Leatheris a wallet designed specifically for the Bitcoin Web3 ecosystem, which leverages the Bitcoin blockchain and its UTXO model. Here's how Leather implements the UTXO model:

Managing Tokens

Managing STX, BTC Tokens, and Clarity Contracts

Leather allows its users to send, receive, and store STX tokens using supported crypto wallet addresses. STX transactions follow the UTXO model, meaning they consist of inputs (previous UTXOs the user owns) and outputs (new UTXOs created for the recipient and any change returned to the sender).

Since Stacks is anchored to Bitcoin, Leather interacts with Bitcoin's UTXO set to enable BTC transactions alongside STX transactions. This integration allows users to seamlessly manage both cryptocurrencies within a single wallet interface.

Leather enables users to interact with Clarity smart contracts on the Stacks blockchain. These smart contracts can manage and transfer crypto assets represented as UTXOs on Stacks.

By adhering to the UTXO model,Leatherensures that assets held within Clarity smart contracts are secure and verifiable on the Stacks blockchain.

User Interface and Security

User Interface and Security

Leather displays a history of STX and Bitcoin transactions, allowing users to track their UTXOs and the associated transaction details. Leather shows the user's available balance of STX and BTC, which is calculated based on the unspent UTXOs they own.

The wallet alsosecurelymanages users' private keys, which are essential for authorizing transactions and proving ownership of UTXOs. Leather also employs encryption to protect sensitive user data and transaction information.

Optimize with Leather

Take Control of Your BTC: Optimize UTXOs with Leather

The Bitcoin UTXO model, a fundamental element of blockchain technology, has far-reaching implications beyond its role in preventing double-spending. The model's influence extends to newer blockchains like Stacks, which leverages Bitcoin's security and finality through its own implementation of the UTXO model.

Continuing with our “coins” analogy, Bitcoin UTXOs in your wallet are essentially “loose change” and can weigh you down if left unchecked. Leather offers an intuitive and secure way to manage your UTXOs, potentially reducing fees and streamlining your transactions.

By seamlessly integrating the UTXO model for both STX and BTC transactions, Leather simplifies the management of these assets.

nan