How does Monero provide any additional anonymity for the sender over a CoinJoin transaction? I get that it provides anonymity of the receiver and the amount spent via stealth addresses and RingCT, but in terms of protecting the identity of the sender isn't Monero just like CoinJoin in that it essentially produces plausible deniability about which of a small set (I'm not sure what the average Mixin value is, but the default is only four) of addresses sent the transaction to a given stealth address? It's better than vanilla Bitcoin, sure, and maybe it's the best that can be done without compromising the security of peoples' funds, but it's not exactly impregnable.

Also, when a stealth address receives funds from a transaction, how are those funds then spent as inputs in a new transaction? For example, let's say I receive ten Monero from ten different transactions to a total of ten different stealth addresses. I now send ten Monero to another address. Does my wallet just choose a random output out of the ten I received to forward? Is there any deterministic manner in which output(s) from which stealth addresses a Monero wallet chooses to use as the new inputs in a transaction?

Finally, would there be any way to "secretly" move the Monero from the stealth address to another address without the transaction showing up on the blockchain, since you have the private key to access the funds? If it could be done, it would seem like this would provide additional anonymity since it would break the link between a certain stealth address receiving funds and that same stealth address being one of several possible senders of those funds at a later date. Instead, an examination of the blockchain would just show funds showing up in a stealth address, disappearing into thin air, and then being spent by another address controlled by the same person that controls the stealth address but without any ability for someone watching the blockchain to link the two addresses. I'm not sure if there would be any way to do that without breaking the currency, but if there was it would definitely make it more private.

  • 3
    Part of your answer can be found here: monero.stackexchange.com/a/81/136 Instead of voting to close this question as a duplicate, I will suggest that you break this up into several questions each with its own focus. Commented Feb 5, 2017 at 20:47
  • 2
    The question doesn't really start on a good footing: "Monero provide any additional anonymity for the sender over a CoinJoin transaction" is really an invalid statement, since Monero is not based on Coinjoin, therefore its anonymity is not a superset of Coinjoin, it is just different. This should be made clear I think.
    – user36303
    Commented Feb 5, 2017 at 20:53