Private Messaging on Steem and eSteem...

Private Messaging (PM) is one of the most requested feature on Steem and there have been multiple discussions and implementation of this.
In this series of posts, I will try to brainstorm some of the ways Steem developers have tried and hope by sharing experience with each other and brainstorming, we will find suitable solutions.

Let me point what would be ideal solution, imo:

a) Having secure model, encryption and decryption of messages.
b) Having secure storage, on-chain would be ideal though there is an argument to be made, what happens in case encryption backdoor is found in future?! This argument can be made with everything we use nowadays, don't you think.
c) Steem blockchain API support or usage of existing APIs to implement private messaging.
d) Cheap - in terms of storage, fee, scalability, etc.

Let us look into existing solutions:

  1. SteemPower Msg - makes use of custom_json where private key is sent to server for encryption and decryption of the message. Not sure if messages are stored on server though, you can read more here.
    There is couple issues in these approach, which is being 1) off-chain, 2) user message lookup. 1) This basically divides users in terms of using other services/apps, they won't be able to fetch their messages while using other apps. 2) Difficult to look up messages, when interactions will become large, searching user's specific message and structure of database can be complicated. Eager to see further development on this and applaud their effort trying to bring solutions.

  2. Busy - From our discussion with @fabien, they are using off chain database to store user messages, it is still in development. And hope to know more about this and write about it later on.

  3. In use - Steemit.chat and Discord being used by thousands of users daily to communicate with each other. It is off-chain, 3rd party server and not sure about data/message encryption options. Golos.io have integrated rocket.chat on their front-end and it works.

  4. Not used - Although, Steem blockchain already have private messaging plugin implemented, but I haven't seen any viable testing and implementation of it. From source code, I can say that design reminds me of email structure where you have inbox and outbox.

  5. Widely used - Transfer with memo message, this method was/is widely used currently by community members. Although there is transaction fee, users are willing to pay that fee in order to take message across. This method supports above a) b) c) points, with transaction fee cost of either 0.001 SBD or STEEM.


I would prefer using last method 5 because of being on-chain and support on API, easy lookup of messages/transactions. 0.001 SBD/STEEM can be used to send message back and forth without costing extra fee. Memo can have limited characters and warn user about security. We can implement this on eSteem with multiple optional encryptions. Haven't planned out details of encryption yet, but I suppose we could use:

Sending

encrypted_message = encrypt(message, recipient_publickey);
amount = 0.001;
transfer(amount, recipient, encrypted_message);

Receiving

decrypted_message = decrypt(encrypted_message, recipient_privatekey);

What do you think is the best way?

Feel free to comment your additions/thoughts on this.


follow @good-karma, vote witness good-karma#26 https://steemit.com/~witnesses.

H2
H3
H4
3 columns
2 columns
1 column
28 Comments
Ecency