BM after he decided that the current GUI implementation of stealth was too problematic, I came to the conclusion that what we really need at the moment is simply "blinded transactions" and I think this should be the immediate focus.
I think the problem was money and time. He is way too focused on Steem right now guys to work on Stealth which is why BitShares Munich team is going to finish that project. Chris and Rodrigo are bringing whales, and whales want privacy. Marketing such an important product like Stealth however will need to include all the things that the competition, media and trolls in the comments would fire at us saying "hahaha look they are releasing a half assed product!" Instead, I'm choosing to take a bit more time and do it right the first time.
First Mover Advantage. Give the world something that it so sorely desires, do it right the first time, and market the hell out of it so that when the world sees it, they shut the f*ck up and say "ok, now this is cool". Total anonymity, total untraceability, ring sig, automated backups via ipfs/ipns, super tight integration with graphene-ui and ease of use, so easy in fact that Savers and Whales actually WANT to use it. I will not settle for anything less. I can take us a long way with this even with a little bit of funding so it only makes sense to spend the funds on the proper path instead of a "just do it this way for now" approach.
This should also include changes to the GUI to automatically backup the old memo key onto the blockchain (not IPFS, don't worry it's not a lot of data to backup) any time the memo key is changed. It should be backed up in a way such that the new memo key can retrieve the old memo key (at least the last known one at the time of the change), so some with the latest memo key can follow the chain of backups on the blockchain and recover all memo keys that had been active for the account. It should also be possible to retrieve the latest memo key using the current owner key (at least for scenarios where there is a single owner key that can have owner authority) so that someone can recover full access to their account using just the owner key (or actually brain key).
I prefer not to store data on our blockchain, hence my IPFS preference.
I need to continue thinking about and working on my ideas for the stealth design and I will post a write up when I can.
We plan to start the fundraiser in the next week or two, but if you could help us
@arhag it would be greatly appreciated, the bigger my network on this one the better.
But I will give a basic overview. First, it requires Monero's RingCT cryptography by Shen Noether. This cryptography allows linkable ring signatures that work with blinded values (Pedersen commitments). But instead of using this cryptography to just pay a stealth balance to a recipient directly, the cryptography is used only for decentralized on-blockchain coin-mixing. The main reason is to reduce the risk of lost funds due to no recent backup. In my system, the amount and sender are hidden, but the recipient is not.
I am probably not going to ultimately use RingCT. I think we can combine CN and CCT (one timers and compact conf tx (h/t Blockstream)), radically reducing the space that is needed and then dump proof of square this way. We are still working this out, but this just might be the ticket.
Holding multiple active stealth balances at a time allows a sender to, with high likelihood, have enough funds available to send without needing to wait for the coin-mixing process. The nature of the coin mixing process means that someone can follow the chain of coin mixing steps in an efficient way and retrieve all of their active stealth balances starting from a root set originating from their public account (i.e bandwidth-efficient restore from only a brain key for a light client is possible even if the user has active stealth balances), and yet the public cannot do the same thus keeping the identity of the owner of each stealth balance private.
Have you looked at Zerocash (
https://z.cash)? Hiding who you are, where you are connected etc might be a lot easier if we can somehow use their method for the mixing stage.