Let's face it, STEEM transactions are not private at all, but did you know Dan Larimer was definitely thinking about transaction privacy when he architected the STEEM blockchain?
At least 6 cryptocurrencies with a higher market cap than STEEM use privacy-centric blockchain technology. ( Dash, Monero, Zcash, Bytecoin, Komodo, PIVX ) Some may argue it brings the negative connotations of darknet markets and illicit transactions, but as has been said many times before how is this different from regular cash? Privacy on the blockchain is a legitimate and highly valued feature to have.
https://github.com/steemit/steem.io/blob/master/_roadmap/en/confidential.md
The above link shows that privacy is on the STEEM blockchain roadmap, although currently at very low priority. It talks Ring Signature Confidential Transactions ( pioneered by Monero ) as the most likely implementation for transaction privacy on STEEM.
The core dev team of STEEM is amazing, but I'm not going to hold my breath for this to be built anytime soon. They're too busy on HF20 and SMTs, which is where they should definitely be focusing their energy.
But is there anything we can do today to add this feature to STEEM? Although it isn't the 'ideal' implementation, I believe there is a relatively simple way. The solution lies in the protocol used for Blackbytes in the Byteball cryptocurrency, by hiding the content of on-chain transactions in off-chain files and only publishing the hash of transactions to the blockchain. And through combining the Blackbyte protocol with the POCKET Token Protocol developed by we can create a private currency on STEEM that can be transacted simply through leaving comments on posts.
Here's a very basic rundown of how Black Pocket Token ( BPT ) ( working title, a bit sinister sounding I know ) can operate:
New BPT are issued when a user burns STEEM by sending it to the
account. Burning STEEM entitles a user to an equal amount of BPT as STEEM burned.
[ A future possibility that would require a hardfork would allow users to send BPT back to the account and the
account would issue STEEM back to them and destroy the BPT. This would make the system much more valuable. I also think that type of system may be possible using an SMT Oracle and Market Maker contract, although I'm not sure if this is possible at all, it is fun to think about and definitely should be explored when SMTs are released. Also, perhaps a semi-trusted system could be implemented using the builtin escrow system.]
User to user transactions are as follows:
- Create a send operation like "blackpocketsend:1000@biophil" and a 'spend proof'.
- Post the send operation hash and spend proof hash in any comment.
- Send the transaction and entire history of the tokens being sent to the recipient, encrypted with their memo key over a secure channel. The first entry in the history will be the original STEEM being burned.
To verify the payment, the receiver:
- Calculates the hash of the private transaction
- Finds the comment that includes this hash and is signed by the payee. If there is more than one, the one that comes in the earlier block wins.
- Calculates the spend proof and makes sure that it is included in the same comment.
- Makes sure the same spend proof is not included anywhere in the same or earlier blocks ( to make sure it's not a double spend attempt ). Only transactions by the same sender are searched.
- Repeats the same steps for every entry in the history, except the first entry, which should be a valid burning transaction.
A limitation is that since the entire history of the tokens sent must be transferred from user to user, the history of your token is known to whoever you send BPT to. This is still much better than every transaction being publicly recorded on the blockchain. Additionally it is public that somebody is sending BPT, but the amount and to whom remain hidden off-chain. The idea is that the histories remain fragmented enough to where it is mostly irrelevant that histories are passed from user to user.
The protocol is explained much more in depth in this bitcointalk post and I highly suggest reading it if you'd like a better understanding.
Although this is an ambitious project, it's been on my mind for weeks and I've been discussing it with people much more knowledgeable than myself. I plan on developing an implementation of it in Ruby in my spare time. I've watched this tutorial video and have been quite inspired by it.
I think we can do this and bring a new level of privacy to the STEEM blockchain, and further it's lead as the greatest blockchain to be building on today.