Blockchain Wallet

Walletconnect Translation site

WalletConnect is an open-source standard for connecting desktop dApps and mobile wallets.

Tags:
Walletconnect
WalletConnect is an open-source standard for connecting desktop dApps (decentralized applications) with mobile wallets. It consists of four components that enable interactions between desktop or web applications without the need for installing any browser extensions or hardware. The security of WalletConnect is not compromised by any of its components.
WalletConnect is a simple solution that bridges the communication between browser-based dApps and mobile wallets using QR codes to establish the initial connection. It is an open protocol that doesn't require dApp users to install browser extensions. The protocol is wallet-agnostic, meaning it is independent of the specific mobile wallet users may want to use, and allows dApp developers to integrate with multiple wallets through a single implementation.
  • Enables users to use their mobile wallets in dApps without the need to install browser extensions.
  • Allows users to use their preferred wallets without worrying about which wallets are integrated with which dApps.
  • Simplifies wallet integration for dApp developers by providing a unified integration instead of individual integrations for each wallet.
  • Provides flexibility for dApp developers to choose which wallet bridging server to use for communication with mobile wallets.
  • Gives control to mobile wallet developers, allowing them to understand how to send push notifications to their users.

WalletConnect Connection Design

The design consists of four components:

  1. Desktop dApp: This refers to a decentralized application running on a desktop browser, which requires interaction with a mobile wallet.
  2. Mobile wallet: This refers to the cryptocurrency wallet application used by users on their mobile devices, allowing them to manage and control their assets.
  3. Bridge server: This is an intermediary server responsible for establishing and maintaining the connection between the desktop app and the mobile wallet. It facilitates the initial connection using QR codes and ensures secure communication, facilitating the transmission of user requests and transaction data.
  4. Push server: This server is responsible for sending push notifications to the mobile wallet, enabling mobile wallet developers to provide real-time notifications to users regarding transactions and other important events.

The first two are self-explanatory, involving a desktop application or web application serving as the frontend for the dApp, and a mobile application serving as the wallet, managing and storing users' account private keys.

The latter two are crucial to this design and can be set up by anyone without any commitment to a specific dApp or wallet. However, the bridge server is set up by the dApp development team, while the push server is set up by the wallet development team, which is reasonable.

The bridge server's sole purpose is to facilitate data transmission between the dApp and the wallet, temporarily storing it under a session ID without knowledge of the actual content being transmitted.

The push server's sole purpose is to trigger push notifications on the mobile wallet device without sharing the secrets required by Android or iOS platform push notification services.

WalletConnect Interactions

WalletConnect Interactions When using a dApp, fundamentally, there are three interactions that require the user's wallet: obtaining the account, sending transactions, and signing messages. The latter two are essentially the same, where the dApp provides some data for the user to sign on their wallet and returns a signed transaction ID or message. Thus, we can simplify it into a single interaction in the form of a signing request. However, we need an initial interaction to establish communication between the dApp and the wallet.

There are three interactions with WalletConnect:

  1. Session Creation: To create a session, the dApp needs to know the Bridge URL in advance, which you can set up by following the tutorial to set up your own URL. Now that you have a Bridge URL, the session creation works as follows:
  • (a) The desktop dApp requests the bridge server to create a session ID.
  • (b) The desktop dApp generates a transient shared key.
  • (c) The desktop dApp shares session data via a QR code.
  • (d) The mobile wallet scans the QR code to obtain the session data.
  1. Account Access: At this point, both the desktop dApp and the mobile wallet have the necessary session data to communicate with each other. Hence, we can proceed with the first basic interaction, which is obtaining the account:
  • (a) The mobile wallet encrypts the user's account with the shared key.
  • (b) The mobile wallet sends it to the bridge server using the session ID.
  • (c) The desktop dApp listens for this change and retrieves the encrypted account.
  • (d) The desktop dApp decrypts the user's account using the shared key.
  1. Signing Request: The dApp can now display information to the user based on their account. Eventually, when needed, the dApp will request the user to sign a transaction or message, bringing us to the second interaction: the signing request.
  • (a) The desktop dApp encrypts the data into a signing request using the shared key.
  • (b) The desktop dApp sends the signing request to the bridge server using the session ID.
  • (c) The bridge server triggers a push notification from the push server.
  • (d) The mobile wallet retrieves the signing request data from the bridge server.
  • (e) The mobile wallet decrypts the signing request using the shared key.
  • (f) The mobile wallet displays to the user whether the signing request is to be signed.
  • (g) The mobile wallet shares the user's response to the signing request. The response can either be approved (with a transaction ID or signature) or rejected.

Wallets that support the WalletConnect protocol

  • Trust
  • Metamask
  • Pillar
  • Gnosis Safe
  • Walleth
  • Tokenary
  • Argent
  • Rainbow
  • Safepal
  • Equal
  • Coinomi
  • Gridplus
  • CoolWallets
  • Atomic
  • Authereum

Relevant Navigation