We can think and design a lot of rules and mechanisms to get money from one place to the other, but we need to come up with how that money is going to look like. Or better said, what would be the unit of that money?
In the real physical world, money is coins, or bills, or some old bill-like certificate. In our virtual money, we need a unit, an atom so to speak, that symbolizes our money when it’s stored somewhere. Pay attention that I’m not talking about the price, or how many of those units every bill represents, 10 or 10,000. I’m talking about the “bills” themselves.
Since we’re in the virtual, mass-less world, we could have virtual bills that can split and merge like the T-1000 robot made of liquid metal. That’s super useful as a model, because we don’t need fixed amounts on virtual bills. So every time a user needs to send, let’s say 57 worth of money, our app can take a 100 bill, break it apart, create a new bill worth exactly 57, and a new “change” 43 bill for ourselves. The same happens if we have 3 bills we received previously all of them worth 20. We can merge them into a 57 new bill, send that, and create a little 3 change bill for us.
In cryptocurrencies, those bills are called UTXOs. It comes from Unspent Transaction Outputs, which is nerdspeak, of course. Let’s break it down.
Someone sent you money, that was a transaction. The money that you received came out of that transaction, it was its output. Until you spend that money again, it’s unspent. So the bills that you have in your wallet are unspent transaction outputs. You may be thinking, we shouldn’t let engineers name stuff, but remember, as a user you shouldn’t be learning all this, it should be invisible to you and just work. But here we’re creating a better money so for all purposes we’re all engineers.