Can anyone explain to me how ZCash prevents double spend? I can understand hiding the sender, recipient, etc., of a transaction, but then how do you make sure it's not spent twice? You need to somehow flag the spent outputs at which point you can trace which transaction uses it.
Or is the trick that you indeed can trace which transaction uses which other transaction's output, but cannot identify and equate the recipients unless and until they are spent as part of a same transaction? How is that different from always using a different bitcoin address?
Read my blog!