Public keys, receiving addresses, and UTXOs are three concepts with which even some of the most seasoned bitcoiners sometimes struggle to juggle. They are very similar in meaning and, in usual language, they can even become interchangeable. Even Satoshi Nakamoto referred to the “public key” with the meaning that we give today to receiving addresses. And it’s not uncommon to hear “I own bitcoins in an address” instead of “I own bitcoins in an UTXO” (the latter is more correct).
This confusion happens because all of these terms can be used to describe the coins one received. However, you should use “address” to refer to coins that you expect to receive, “UTXO” to talk about the coins that you already received, and “public key” as an umbrella term which contains all of the your public addresses and UTXOs.
As you can already see, there are temporal and consequential differences between public key, receiving address, and UTXO. But the good news is that I’m going to take the time and explain them in this article.
Bitcoin Public Key and Receiving Address
If you’re looking for the short explanation, here it is: all Bitcoin wallets have a private key (which you should never reveal to anyone) and a public key (in the modern BIP 32 Hierarchical Deterministic wallets, it’s called an xpub or the Extended Public Key). As acknowledged by Satoshi in the whitepaper, he took inspiration from Ralph Merkle’s 1980 research paper “Protocols for Public Key Cryptosystems“.
This public key is like an umbrella which covers both receiving addresses and UTXOs. From it, you can generate a virtually unlimited amount of unique receiving addresses. Most of the QR codes you find online when you make payment services are receiving addresses that are derived from Extended Public Key.
Most importantly, you can share one of these addresses publicly without revealing the rest of the addresses generated from the same xpub, or the funds you received in them. So you can share an address, receive a payment in it, but everyone checking that address on a blockchain explorer will not see how much you own in other addresses in your wallet (i.e. derived from the same xpub). It’s an important privacy feature which Satoshi Nakamoto described in title 10 of the whitepaper, and was later extended by Pieter Wuille with HD wallets.
Bitcoin Receiving Address and UTXO
How about the UTXO? Well, it stands for Unspent Transaction Output and refers to the bitcoins that were not spent in an address. As defined by the Bitcoin Wiki, it’s the smallest individual unit of your wallet’s balance – as the sum of UTXOs determines the amount of bitcoins you control with your wallet’s private keys.
In simpler terms, it’s like a pocket in your jeans, that you use to store money. So when you make a payment, the seller and the witnesses around you will only see the amount of money that you take out of that specific pocket.
The UTXO (or pocket) concept is great, as it preserves your privacy. You can walk around with millions of monetary units, but when you make a payment you only reveal to the world watching that you have a reasonable amount which covers the expense of the goods or services that you’re buying.
Let’s say that you’re buying a carton of milk, which is worth $3 and you have one pocket where you’re holding $100000 in $100 bills and another pocket where you have $5. If you were to reach for the pocket where you have more money and take your money out, everyone around you would observe that you’re rich. And it’s likely that there would be some bad actors who will start thinking of ways to steal your money.
On the other hand, if you only draw the $5 bill for your $3 expense, then your privacy is excellent and no bad actor will waste time and energy trying to mug you. The risk/reward ratio certainly discourages any kind of attack.
It’s all the same with UTXOs – the Bitcoin network keeps track of all the coins you did not spend (and therefore are in your possession). And the sum of these UTXOs make up the possessions in your wallet, which you can only spend if you can sign a transaction with the private key.
Which Wallet Allows Me To Generate Unlimited Addresses and Also Manage UTXOs?
These concepts are mostly confusing because wallet developers label them as “advanced features” that are for power users. This gives them an excuse to sometimes mix your UTXOs under the same wallet balance (so you don’t get to choose which coins you spend, the selection gets made automatically) and also limit the amount of addresses that you generate (we even have wallets that only give you one receiving address per account).
It also means that these wallets are in control of your xpub, and therefore know how many coins you own, with whom you are transacting, and if/how many receive addresses you’re generating.
Here’s the good news, though: there are wallets that help you protect your receiving privacy and also add an extra layer of plausible deniability. And they’re completely free and open source, so you don’t have to pay anything.
On desktop, you have Wasabi Wallet and Bitcoin Core. For beginners, Wasabi is probably better – it routes your internet connection through the Tor network by default, it prevents address reuse, and it also makes UTXO management as simple as managing folders.
Bitcoin Core is also great, as instead of only downloading a few block filters via Tor, you run your own full node and become completely sovereign. However, to enable UTXO control you’re going to have to open the Options menu, choose the Wallet tab, and tick the “Enable Coin Control Features” box before saving the new setting.
Also, for better privacy, go to the Network tab (still in the Options menu), and tick the Tor-related boxes, as well as set proxy IP 127.0.0.1, in port 9150 (a typical Tor setting). After you change these settings, you’re going to have to restart Bitcoin Core. It’s a little bit more advanced, but still not very complicated.
But the best part about Wasabi and Bitcoin Core is that you can use them in a complimentary way: while running Core in the background, it automatically connects as a full node to Wasabi. This gives you the best mix of privacy and security, so you maximize your sovereignty.
You can also use your hardware wallets with Wasabi (Trezor, Ledger, Coldcard, and BitBox02 will definitely work). This means that you extend their features beyond the standard capabilities of the official software, while also maximizing your sovereignty and control. You no longer connect to their servers, you no longer share your xpub (with the sum of addresses and UTXOs included) with any company, and you embrace your freedom with all the benefits of extra privacy.
If you’re looking for a mobile wallet which allows you to control your own xpub by connecting to your own full node while enabling UTXO control, look no further than Blue Wallet. It’s available on both Android and iOS, and it has all the advanced features under a friendly user interface. Just keep in mind that, unless you tick all the sovereignty boxes (full node, Tor routing, UTXO control), you will be using an SPV wallet and somebody else will have your public key.
No matter which one of these options you will choose, you will get more control over your public key (including generated addresses and UTXOs). This is great for financial privacy, connection-level privacy, as well as overall sovereignty.
Enjoyed this article? Then you can donate and turn this receive address into an UTXO
Need to copy the address into your wallet? There you go: 3N8vgQKrd64yWPPMoGyx1VumstQQdoSJ6z
And if you’re more of a fiat kind of guy, you can make recurrent donations via Patreon or send one-time PayPal donation.