Now let’s think it a bit further. We have a private key that we can use to generate a public address, we give other people that address, those people take that address of ours and send us money. How do they do that? By asking the miners to write down on that shared list we call blockchain that they give us money, the senders pay them a tiny fee for the work, and it’s set on digital stone.
But if we want to be able to verify that list between all of us users of the money, that list has to be public. And if the list is public, everyone else can see that someone gave some amount of money to somebody else (in this case our address). That is bad on itself, but what happens if we give that address to more than one person? Or if we make it public so anyone can donate money to us?
We run into very big problems very fast. Our scheme works as if giving someone our email address, allowed them to read any other email that has been sent to the same address. Oh no.
Believe it or not, most cryptocurrencies work like this. It’s only made less worse because you can create a lot of different addresses with the same key, but since all movements are written on the list with the true addresses, you could follow the money from address to address until someone pays something with it, and then trace back all their amounts and interactions. Not good. To avoid that you could remember to never send anything between your own addresses, but it would be like having a different bank account and spending from a different credit card for every person or business you interact with. It’s not practical, to say the least.
To solve this, we need stealth addresses.