🏗️Architecture

WalletChat leverages many web3 technologies, leveraging the best of web3 and web2 to build solutions that work for you.

Users can access WalletChat via the web app at https://app.walletchat.fun, and the users must sign a SIWE (Sign-In With Ethereum) message. This is a gasless operation and follows an industry standard, which allows all the wallet guard apps to identify this as a safe, free wallet signature. Once the user signs the SIWE message, the WalletChat API returns a JWT for later use in all the authenticated API calls the WalletChat application will make.

The message data can optionally be stored in IPFS for customers which want more ownership of the data. We can also store message data in our own backend, for those customers looking for better speed and performance than IPFS can deliver. Many customers use our Widget, which can be easily embedded in the front end of a React or Vue based web app, we also support React-Native for Android applications.

Lastly, dApps may use our API directly to deeply integrate within their own front ends or general applications.

Front End

Our front end is written in React with Typescript, and is all open source which can be found here: https://github.com/Wallet-Chat/walletchatFE Our widget is also in React, which you can read about more in Product Guides and the source is here: https://github.com/Wallet-Chat/react-wallet-chat

A unique feature of our front end is that the widget uses an iFrame, so we can easily make changes for the client, and customers are not required to re-deploy!

REST API

Our REST API is written using GoLang and is all open source! You can find our source code here for the backend: https://github.com/Wallet-Chat/walletchatAPI

You can also read more about the API and try it live here: https://api.v2.walletchat.fun/docs/index.html

Encryption

WalletChat leverages LIT for EE2E (effective end-to-end encryption). LIT is a decentralized encryption protocol, with details here: https://developer.litprotocol.com/v2/whatislit/

The workflow is as follows: 1) Kevin.eth sends a message "hi Vitalik" and the web app securely sends the data via HTTPS in pieces to the LIT distributed network. 2) LIT network returns an encrypted blob of the message to the client / web app 3) The client side for Kevin.eth securely sends the encrypted blob via HTTPS to the WalletChat API, which may be stored in our backend or IPFS depending on customer preference. 4) Vitalk.eth client side dapps can see new messages are waiting for him, because the WalletChat API has notified him and securely sent the encrypted blob created by Kevin.eth 5) Vitalk.eth client side app securely sends the encrypted blob of data to the distributed LIT network 6) The LIT Network sends the decrypted data back to Vitalk.eth, who can now read "hi Vitalik"

Last updated