Blog Home
Blog Post
|
November 10, 2022
The WalletConnect logo
WalletConnect
The WalletConnect Pairing API: Accelerating web3 protocol development

The WalletConnect Pairing API is a lightweight API for establishing an encrypted, protocol-agnostic communications layer between peers. It exposes a common interface and allows for the sending and receiving of multi-protocol requests over a single pairing, allowing you to build custom protocols that consume our robust WalletConnect infrastructure and the lower-level peer-to-peer communications layer. This also significantly improves the end user experience, as you can receive requests from different protocols just by scanning one QR code.

To give you an example of leveraging it, let’s imagine that you want your dapp to issue verifiable credentials to wallets after they make a payment. This seems like a lot of work! You need a secure communications channel between the dapp and the wallet to be able to send credentials in a private manner, a mediator to relay the messages, and probably a lot more.

With the new WalletConnect Pairing API, which is a part of our Core Package, all you need to do is implement your own protocol engine and plug it into WalletConnect for an amazingly smooth user experience. The user will be able to scan the QR code, establish a WalletConnect Sign session for transactions, receive and sign the transaction request, and receive and accept a verifiable credential proposal — just by scanning a single QR code, through a single communications channel.

Let’s say we want to implement an `Issuer` client that will allow us to propose issuance and issue verifiable credentials. Your protocol engine will have to register its method next to the WalletConnect Sign and WalletConnect Auth engines.

But first, we need to define a name for our protocol RPC method. Let’s call it `issue_vc`.

Now, import WalletConnectPairing into your file and call:

pairingClient.register(method: yourProtocolMethod).sink { IssueCredetialParams in
// wallet received Verifiable Credential 
// present it to the user so he can accept
}

By method registration at the Pairing client, your protocol engine will subscribe to all the matching requests the wallet receives so that you can handle it properly. Send a credential proposal to the wallet user; if the user accepts, the response then needs to be handled on the dapp side.

Import WalletConnectNetworking, instantiate networking client, and subscribe for responses:

networkingClient.responseSubscription(on: IssueCredetialParams())

And there you have it! The WalletConnect Pairing API’s modular approach establishes a reusable communications channel between peers, giving you the flexibility to build on top of it according to your needs. It streamlines the experience — for you, the developer, and also your users.

Want to learn more about the WalletConnect Pairing API?

To better understand how the WalletConnect Auth and WalletConnect Sign SDKs work, explore the open-source code. There are Swift, Kotlin, and JavaScript implementations, and it will give you a better understanding of how the engine should work and and how to use storage for protocol objects and cryptographic keys.

If you have any questions, please reach out to the team on Discord. Also, check out our documentation and protocol specs!

Recommended Articles
More articles
alt=""

Build what's next.
Build with WalletConnect.

Get started
© 2024 WalletConnect, Inc.