A chat service that allows user to send tokens to the other party
Being able to chat and communicate with peers has been something that has been lacking in the web3 space. And recently we have seen solutions on messaging but the current status quo is still at its infancy when we are comparing against web2 giants like whatsapp, wechat, kakaotalk...
Our project aims to take chat messaging on web3 to another level. By leveraging on what web3 users love about web3 + what web2 users like about messaging app, we bring together 'De-Chat' , a web3 centric chat messaging platform that allows in-dapp token sending, fund streaming, in app purchase and even our all favourite video call. We even allow users to send images and files through our messaging dapp.
De-chat is designed and built by our dedicated builders to deliver to you an enhanced experience of messaging in the web3 world.
Our project rely on XMTP protocol mainly as the messaging platform. We are able to send messages from User A to User B seamlessly. Leveraging this well-built technology, we will introduce a couple of tricks which we will talk about later.
We log in using Sign In With Ethereum by Spruce and it removes the need for the user to remember passwords and email address.
As Ethereum addresses are not the most user-friendly, by default we allow the displaying name from ENS and Unstoppable Domain. Not only that, we also display the user avatar if the user sets it in their domain. On top of at, we supports address resolution via ENS and Unstoppable domain and there is no need for the user to type in and check if the address that the user wants to send to is accurate. Domain name resolution improves the user experience on this.
We use Tableland as a way to implement a βContact listβ for each users. Should an address not having a domain name, it will be defaulted to the length Ethereum address. Worry not, we are able to Add and Update the Nickname of the said address, making it much easier for users to manage his/her address book and contact list.
Extending on XMTP, we allow users to send files such as images in the chat. Leveraging IPFS as a decentralised form of file storage, we first upload the image to IPFS, then we encode our message in a specific format that consist of the IPFS address that we will know associates to a file in the IPFS. We need know how to re-render it as an image in our chat.
We allow In-Dapp sending of tokens and this is natively integrated in the chat messages. For that, we wrote a subgraph by TheGraph to index and query for relevant events. Using a polling system we are able to display the transaction to the user as soon as possible. Each token transfer goes through our dedicated smart contract which we deployed and we have full control of the event indexing process.
To further improve the experience of users, we rely on CovalentHq to show users the tokens that they are able to transfer without having to remember what they have and the addresses of the token.
We understand the importance of buying and paying through a modern messaging app and we have integrated SuperFluid to help us with fund streaming.
Finally, all transactions that the recipient receives will also comes with a push notification via EPNS. This massively improves the user experience as recipients do not need to manually do the checking to see if funds have been received.
Video call is extremely common in a messaging app now and we believe that it is also a must have in De-Chat. For that, Livepeer has provided a great and reliable live streaming service. Though Livepeer only support live stream in a one way method, we are able to βhackβ out a solution that allows 2 way video communication between two users. First, User A initiates a call will start a stream and pass the playbackid to User B via XMTP. We again rely on XMTP for their reliable messaging transferring capability and we encode the playbackid in a way that associates with the call and send it to User B. User B, upon receiving this encoded message, knows that it is a video call and will also start a stream and reply User A with her playbackid, User B will now have two live stream on going. User A, once he receives User Bβs playbackid, will start a second stream.
Each users will view two streams at a same time, one of which is initiated by her and another is a viewing stream by the other party and we are able to perform a 2 way communication system.
We rely on Unlock protocol for in app purchase that allows users to unlock membership perks in the app. In the future, we might have the ability for paid members to have cool features such as custom emojis and much more.
I believe the way we use XMTP as not only a regular messaging platform is noteworthy as we are able to pass metadata that the client is able to recognize and render correctly. We are able to render IPFS link and even playback id from Livepeer.
Being able to send funds and display them natively is also pretty noteworthy as users are able to perform these actions in a single Dapp, this massively improves user experience and convenience.
Using Tableland as our decentralized SQL allows us to further improves UX and it is used for a contact list
Finally, our deployments are done in Polygon at our first phase but it is possible to deploy it on other EVM chains