Steem Messenger V0.0.1 Chat securely with the power of Steem blockchain !

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@kingswisdom·
0.000 HBD
Steem Messenger V0.0.1 Chat securely with the power of Steem blockchain !
In this post, I will explain the SteemMessenger Project, the state of developpement, features, and how everything works !

![](https://steemitimages.com/DQmb1nZtQbXzJsVfzFgwXkKnjKfKW3QEYxgEG8p7u2wDKD2/image.png)

### The Steem Messenger
_______________________________________________

- What is the project about?
[Steem Messenger](https://github.com/kingswisdom/SteemMessenger) is about convenience, security, and privacy. Many Steem users decided to use chats mediums like Discord, and Steemit.chat. Steem Messenger enables a secure and fast instant messaging interface between users on the Steem blockchain, without the need to trust your recipient, or any third party. This is a Proof of Concept. The project is still in developpement stage, and this release is not yet hosted on our servers.


- Technology Stack
We use a combination of Javascript, and of course, HTML and CSS for the frontend. We also implemented the `require` function in our client side with  `Browserify`. We use `socket.io` , `socket.io-client` and `MongoDB`.

    

### Features
__________________________________________

For now, the features included are :


- Client sided authority. You no longer have to trust anybody for your keys. Everything runs directly on your browser, meaning that your private memo key is safe. 

- Sending/Receiving encrypted messages, based on your account's keys.
With a clever use of the function `steem.memo.encode` included in `steemjs`, we made a chat system where only you and your recipient can read them. In case of a major data leak, your content will be safe, as long as you keep your private memo key in a safe place. 

- Delete messages. We believe your messages belongs to you. So we integrated a function to delete every message between you and your recipient. 

- Secure database. All messages are encrypted in your browser before they are sent to the server, providing you an E2EE (End to End Encryption). Meaning that only you and your recipient can read your messages. It would take 10,000 centuries to successfully brute force your memo key with a regular computer.




### How does it work?
_____________________________________

First, the client side (`client.js`). Here is the log in screen.

<center>![](https://steemitimages.com/DQmQETvDFXKCewftSu54BNzFDaRFKhL4562qpAGKKUTcpFD/image.png)</center>

When you enter your private memo key, and press "Log in", this is what happen :
<center>![](https://steemitimages.com/DQmfYhUuu4A61Bs9Lr3N3HE2CcSA4THBpGMUEXTSVFfDg91/image.png)</center>

It will check the public memo key associated with your username (`pubWif = result[0]["memo_key"];`) and verify if the private key you specified is valid with `steem.auth.wifIsValid(privWif, pubWif);`. If everything is ok, your private key is then stored on a local var with `var privateMemoKey = privWif;`.

You will then have access to the chat page like this :

<center>![](https://steemitimages.com/DQmQh5wcErp5cP2APyJvBrdieqfGZ3JoeQrrjhY7Xbj5xkT/image.png)</center>

You can then set your recipient name and your message in the specified forms. Press enter, and this will happen :

<center>![](https://steemitimages.com/DQmWLngvAtje5BNeA9N8U4hzhHeSijRGE89BxXDQJfBUmqM/image.png)</center>

It will fetch automatically your recipient public memo key (`publicMemoReceiver = result[0]["memo_key"];`), and encrypt your message with `var encoded = steem.memo.encode(privateMemoKey, publicMemoReceiver, texte);`.

Your input is then transmitted to the server with `socket.emit`, and you can see your message is encrypted before it goes to the server. 

The data is then saved in the database.

Same thing when you receive a message, this is what happen :

<center>![](https://steemitimages.com/DQmbktYGPk7eVtvaBeL2h9eHhRRZypy2k62HLZ8hZeKT1ym/image.png)</center>

The `raw` variable is the encrypted message received from the server. It is decoded with `var decoded = steem.memo.decode(privateMemoKey, raw);`, and then, inserted in the chat box. Without your private  MemoKey, nobody should be able to decode your message but you.

<center>![](https://steemitimages.com/DQmZMBcyLdP1bzyhB6PnGgXB7LNNqhTCS5PDeZPgUwT8G3J/image.png)</center>

### Installation guide
___________________________________________

To test this Proof of Concept, you need Node.js, and MongoDB. 

Simply use `npm install` into the directory, start `mongod`, and then run the `server.js` with `npm start`. You can now launch `index.html` !


### Roadmap
____________________________________________

We aim to be the most secure, fast, and reliable way to interact and chat with people/groups/guilds on the Steem blockchain. For now, we are working with the goal of delivering the first public release. Here are our next steps :

- Add many social functionalities
- Multiple chats 
- Improve UI 

### Contribution
________________________________________

If you would like to contribute to this project, or have any question about it, feel free to contact me on Discord `@Kingswisdom#7650`, or on [github](https://github.com/kingswisdom)


<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@kingswisdom/steemmessenger-v0-0-1-chat-securely-with-the-power-of-steem-blockchain">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,