WalletConnect: A simple way for web-based dapps to talk to mobile wallets

An open, interoperable protocol to make dapps easier to use

A familiar way to connect your phone to the web.

Today, only a small number of people are actually using their tokens for their intended purpose. Right now, the primary use case for a token is to speculate on its value. Utility tokens rarely have utility. Governance tokens are never used for voting. Staking tokens are rarely risked. Payment tokens are worse than the dollar. If all of these tokens are being built and no one uses them for anything, what’s the point? That is a great question and deserves a better answer. We hope the answer is: dapps.

Dapps, or decentralised applications, are applications that typically run on the web and touch a blockchain at some point. The term has been stretched to capture everything from an ICO websites to CryptoKitties.

A purrrfect example of a dapp to some. Too centralized for others.

Nearly all of these dapps are slow, incredibly hard to use, and worse than their centralised competitors. The ones that have succeeded so far do something that is only possible because of the current technology. Cryptokitties is a fantastic example. The team helped define the standard for unique or “non-fungible” tokens and then shipped a beautiful web app that allowed people to buy and breed their kitties on the blockchain. Cryptokitties is a hybrid dapp. The web app is closed source and lives on servers that the company controls. The smart contract that powers the unique tokens lives on Ethereum.

Interacting with a dapp

Right now, there are two popular ways to interact with a dapp. A desktop browser-only wallet such MetaMask or a mobile wallet like Status, Toshi, Cipher or Trust.

Hostile kitty takeover.

All of these tools are performing a really important function: connecting a person, a dapp, and a wallet to the Ethereum blockchain. Together, these three things together form an interaction with a dapp and make tokens useful.

What’s dappening. How things work under the hood.

Thinking about dapps

I first took a pass at designing a dapp store in 2014 after Gavin Wood, the CTO of Ethereum, explained the concept to me. Here is what I came up with:

https://dribbble.com/shots/2175361-Ethereum-App-Store

Alex Van de Sande came up with a much more comprehensive concept which he presented in this video:

This was the basis for Mist, a browser for the distributed web or Web 3.

Last year, I started to get obsessed with the problem again. I kept asking myself what we need to make dapps easier to use. I still thought the solution was a native browser on the desktop.

https://dribbble.com/shots/3549947-Interchain-Browser

After a lot of experimentation, prototyping and intense debates with people in the community and the team at Balance, we have started working on something different.

Bridging the gap

When you want to use WhatsApp on the web, you scan a QR code with your phone to get access to the web app. This is a really familiar pattern for millions of users, particularly in China where you can log in to all kinds of services by scanning a QR code with WeChat.

When can I use WhatsDapp?

We think this pattern could work really well for dapps. Your phone has your wallet that securely stores your private keys. When you want to interact with a dapp on the web you scan a QR code to link your wallet to the dapp. When you want to make a transaction it pushes a notification to your phone where you can confirm or reject the transaction. Here is a very early mockup:

Kittie connection. This is why we build a global shared computing network.

The back-and-forth between the computer and the phone might be a little cumbersome. However, our hope is that state channels will be live and working in the near future. When they are, we could open up a state channel with the wallet on the phone, interact freely with the dapp, then close the channel after it is all over. This should happen seamlessly with the Wallet Bridge protocol relaying all of the messages.

Buidling WalletConnect

The post has avoided going into the technical details because we are still working them out. Our goal with this post is to share the idea and to see if anyone else is working on something similar. We would love to work with dapp developers and wallet creators to make this flow a reality. We have registered WalletConnect.org and we are working on a site to explain the idea as clearly as possible.

Connecting through QR-iosity

If you would like to get involved, check out: github.com/walletconnect