Simplifying WalletConnect v2.0’s Architecture to Serve Crypto’s First Billion Users
We’re happy to announce the launch of a new backend for WalletConnect v2.0, as we work towards scaling our system up to serve crypto’s first billion users.
The new, simplified architecture means that users enjoy significantly lower latency (so fast that it has uncovered race conditions in our clients!). Not only will this continue to improve as we expand to more regions, but it is also a major step forward in our path to realizing fully decentralized message relaying.
So, how does this work?
With WalletConnect v2.0, clients (i.e. wallets, apps, and chat clients) use websockets to exchange messages. When a user clicks “Connect Wallet” and scans the subsequent QR code, an end-to-end encrypted pairing is established between the wallet and the dapp via a websocket connection.
In our new architecture, the fundamental primitives are the address book and mailbox. The address book notes which client is connected to which websocket server, which allows us to deliver messages directly when both the wallet and the dapp are online. Should one of the parties be offline (e.g. when the wallet is in the background), the message will be stored in the client’s mailbox. Once the clients reconnect, they immediately pick up the messages from their mailbox.
Simplifying the system to just these few primitives allows us to horizontally scale our system while cutting latency in the process. However, we’re not content to just stop here; we’re now working on decentralizing the system and providing users with higher redundancy, while also expanding to more regions to ensure ever-improving latency.
Our backend is implemented in Rust and we’re looking to grow the team! If you like Rust and distributed systems, send in your application today.
To keep up with our announcements, join our Discord and follow us on Twitter. If you are a wallet or an app that is interested in integrating WalletConnect, head on over to our website and explore our documentation.