The UTXO model

A technical cornerstone of Bitcoin

Martin Thoma
Published in
6 min readFeb 17, 2021
Visualization of a transaction. Image by Satoshi Nakamoto (Bitcoin: A Peer-to-Peer Electronic Cash System)

Bitcoin is based on the UTXO (unspent transaction output) model to ensure that nobody is able to spend money they don’t have and prevent money from being spent twice — so-called double-spending. In this article, you will learn how that works. Let’s go!

The Context

Bitcoin transactions are stored in blocks. Verifying the transactions is a crucial part of the security of Bitcoin. Another element of security is to make it computationally hard to add new blocks by adding a mathematical puzzle. In this article, you will learn how the transactions are actually validated.

If you want a longer introduction to Bitcoin / Blockchain, I’ve got you:

How Bitcoins are created

The first block of the blockchain is just defined in the code. All other blocks in bitcoin need to have a “proof of work”. This is a solution to an automatically generated mathematical puzzle that makes clever use of hash functions. Solving this hash puzzle is computationally intensive. This means you need to have good hardware and invest a lot of time and electricity to solve it. People wouldn’t do that just for fun on the current scale. They do it, because of the mining reward. This reward is given to every solved hash puzzle.


When Bitcoin started in 2009, the mining reward was 50 Bitcoin (BTC). In 2012, the reward was halved to 25 Bitcoin. In 2016 the mining reward was halved to 12.5 BTC. The last halving was in 2020 to 6.25 BTC.

Halving happens after 210,000 mined bitcoins. It is a mechanism to keep the total supply of bitcoins in check. The maximum possible amount of Bitcoins is 21 million. Then, miners will not receive a reward anymore. They will need to use transaction fees then — which they already do.

Keys and Addresses

Bitcoin makes use of ECDSA. Blair Marshall has written a nice article about it:



Martin Thoma

I’m a Software Engineer with over 10 years of Python experience (Backend/ML/AI). Support me via

Recommended from Medium


See more recommendations