I'm looking for a nice explanation of Monero mechanics to make people 'get' what is what and how it works. Things like stealth addresses, ring signatures, view & spend keys, key images, ring confidential transactions etc.
2 Answers
First of all, there are no addresses on the blockchain. Imagine the blockchain as a bunch of lockers which all look the same. The blockchain holds only the records from which to which locker funds get transferred. Now, how does it work?
Think of your address as containing a special blueprint (public spend key) and a special recipe (public view key). Sender picks a random locker, puts his funds inside, and uses your blueprint to produce a special lock, one which only you can open. Also, he uses your recipe to produce a transparent paint and writes some random number with this. Only you have a special flashlight (private view key) to light up the lock and see that there's a mark. So you recognize the lock as yours because the paint lights up, you read the random number written (shared secret) and use a special forge only you have (private spend key) to create a unique key which can open only that particular lock (one-time key).
To find a locker locked with a lock for you, you need to approach each one of them and light them up with your flashlight. If the sender didn't write down on which one he put your lock, even him won't be able to find it anymore!
So we have all this lockers (outputs), some of them contain monero and some have been emptied already. Thing is, everyone can see 'you' walking to a locker. If you only approached one locker (case of mixin=0, not possible with Monero anymore), anyone could tell that monero was moved from exactly that one to another one. This would allow someone to trace any monero back to the first locker (coinbase transaction). Here's where ring signatures come to play. Instead of just walking to one locker, you visit a few of them and use a blanket to hide what you're doing with it. You visit 5 lockers (mixin=4) in total. At the end, you show to everybody that you now have some monero in your hands. You have it because you were able to open one of the lockers visited (the one which was actually yours). Thing is, nobody knows from which one you took it! You go on and put it into another one and craft a special lock and mark it with special paint ...
The blockchain records which 5 lockers were visited when sourcing monero to put in the new one. Every time someone moves monero, he must visit a few lockers. You obviously must visit your one, and you can pick from any other lockers to hide which one was yours. The more transactions you make, the more complex the trail becomes. The more lockers you visit on each transaction, the better you hide your activity. Further back you try to trace the source, the more possibilities there are, so both number of lockers and number of transactions increase overall privacy. Also, since other people can visit your locker and pretend to have taken from it, they improve privacy for not just them, but for you as well.
Why do we usually visit 4 decoy lockers? See MRL-0004 for some insights.
We recommend a network-wide minimum mix-in of n = 2 to address zero mix chain reaction problems, and we discuss how a mix-in of n = 4 is likely to be larger than necessary for most practical purposes. We recommend a nonuniform transaction output selection method for ring generation to mitigate age-based association problems. We recommend partitioning all transactions into many smaller sub-transactions such that they occur over an interval of time, as in a torrent, and such that each sub-transaction has one and only one output, in order to mitigate the combinatorial analysis problem.
I found this Fluffypony video on YouTube from 2015 quite an good (and easy to digest) introduction for most of those concepts. It doesn't touch RingCT yet I believe.