OhJi Chat

OhJi Chat

Personal Messenger on Web3. As easy as WhatsApp ;)

The problem OhJi Chat solves

TL;DR: Own your chat id and data, anon!

It all started with “ Wooohoo ETHIndia is happening! Let’s meet in BLR. Join this WhatsApp group…”

While web3 is growing, most of us are stuck with centralized Social Media. We acknowledged this whitespace and want to fix it.

While @ethstatus , @element are some of the best apps already available for community chat, we wanted to build a personal messenger app on Web3 :)

Ohji creates a new web3 wallet for each user in-line to the application. It’s so simple that you don’t even know that a new wallet has been created for you!

With the wallet creation, your journey begins in web3 as you DM a friend or colleague. Or join a group of awesome people over a Huddle01 call ;)

Challenges we ran into

Originally, the idea was to just use three components:
web3.js : For in-line wallet creation and using it for signing messages (Polygon) and encrypting chat data (stored on IPFS)
js-libp2p: For running a libp2p node on every mobile device over WebSocket and facilitate chatting over gossip-sub
huddle01: For video chats

Using web3.js to create a new wallet for each user is a breeze. However, we faced some initial setup issues with Biconomy due to some deep dependency issues. The Biconomy team helped us gracefully and got us out of the setup issue.

Next, it was the Solidity smart contract to maintain the state of all the chat rooms. While the smart contract development was a breeze, testing it was more fun and involving. :) The only jibe we had was that Remix IDE has now removed the ability to implicitly convert string values to bytes32. This is where we lost some time in converting huge text values (user names, chat names etc.to bytes32) :/

API integration to web3.storage is pretty straight-forward but the token kinda started to expire after a few calls. Not sure why, but it stopped later.

Finally, the messaging infrastructure was being built on libp2p. Everything was hunky-dory until the gossip-sub started having issues with the current version of js-libp2p. We’re making some upstream contributions here to fix this issue and make p2p chat happen at scale.

Tracks Applied (4)

General Storage Track

Protocol Labs

Biconomy

Biconomy

Valist

Valist

Huddle01

Huddle01

Discussion