<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>WalletConnect</title>
        <link>https://paragraph.com/@walletconnect</link>
        <description>Building what’s next in web3 📲✨
</description>
        <lastBuildDate>Wed, 22 Apr 2026 11:19:44 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>WalletConnect</title>
            <url>https://storage.googleapis.com/papyrus_images/6880cf2aa4ab998e722037ef5e2d694715961d24d0f13bdad0ac85f555a33bae.png</url>
            <link>https://paragraph.com/@walletconnect</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Beginner guide to WalletConnect Sign v2.0 for iOS Developers]]></title>
            <link>https://paragraph.com/@walletconnect/beginner-guide-to-walletconnect-sign-v2-0-for-ios-developers</link>
            <guid>3EQfCHuxFP6vR7PaOQX3</guid>
            <pubDate>Wed, 08 Jun 2022 11:07:08 GMT</pubDate>
            <description><![CDATA[WalletConnect Sign is an open protocol designed to allow secure peer-to-peer communication between dapps and wallets. Clients can live on one or two separate devices and exchange messages through JSON-RPC methods defined by the protocol. WalletConnect Sign requests are transported over the WalletConnect Network, which relays all the messages exchanged by the clients in the ecosystem. First, clients exchange keys with the Diffie-Hellman protocol to provide end-to-end encryption. Later, symmetr...]]></description>
            <content:encoded><![CDATA[<p>WalletConnect Sign is an open protocol designed to allow secure peer-to-peer communication between dapps and wallets. Clients can live on one or two separate devices and exchange messages through JSON-RPC methods defined by the protocol.</p><p>WalletConnect Sign requests are transported over the WalletConnect Network, which relays all the messages exchanged by the clients in the ecosystem. First, clients exchange keys with the Diffie-Hellman protocol to provide end-to-end encryption. Later, symmetrically encrypted messages are sent together with matching MAC(Message Authentication Code) to grant message authenticity and data integrity.</p><p>If you are not familiar with those concepts, you can think of MACs as seals on envelopes. You trust the letter in the envelope has not been modified until the seal is broken or doesn’t match the sender. The image below should give you a grasp of what a Diffie-Hellman key exchange is:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f6ca825b3d75b85b872a6002abd8d5a732c278a18c4fef7a5ab94b68b9f584d7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-swift-client" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Swift Client</h2><p>In a standard WalletConnect Sign communication, you can distinguish two different types of clients:</p><ol><li><p>The proposer client which generates the pairing URI and usually presents it in the form of a QR code. This client will propose a session — usually a dapp.</p></li><li><p>The responder client which scans the QR code or opens the deep link and approves the pairing and sessions — usually a wallet.</p></li></ol><p>The Swift WalletConnect Sign SDK can be consumed by native dapps, wallets, and proxy applications.</p><p>Let’s configure WalletConnect Sign instance:</p><pre data-type="codeBlock" text="let metadata = AppMetadata(name: &lt;String&gt;,
description: &lt;String&gt;,
url: &lt;String&gt;,
icons: &lt;[String]&gt;)Sign.configure(Sign.Config(metadata: &lt;AppMetadata&gt;, projectId: &lt;String&gt;))
"><code>let metadata <span class="hljs-operator">=</span> AppMetadata(name: <span class="hljs-operator">&#x3C;</span>String<span class="hljs-operator">></span>,
description: <span class="hljs-operator">&#x3C;</span>String<span class="hljs-operator">></span>,
url: <span class="hljs-operator">&#x3C;</span>String<span class="hljs-operator">></span>,
icons: <span class="hljs-operator">&#x3C;</span>[String]<span class="hljs-operator">></span>)Sign.configure(Sign.Config(metadata: <span class="hljs-operator">&#x3C;</span>AppMetadata<span class="hljs-operator">></span>, projectId: <span class="hljs-operator">&#x3C;</span>String<span class="hljs-operator">></span>))
</code></pre><ol><li><p><em>metadata</em> — describes your application and will define pairing appearance in a web browser.</p></li><li><p><em>projectId</em>- is a parameter used to access the WalletConnect Network. Go to walletconnect.com to generate one.</p></li><li><p><em>socketConnectionType</em> — .<em>automatic</em> by default. Your client’s web socket connection will be controlled automatically by the SDK, but if you want to have control over the socket connection, you can set it to .<em>manual</em></p></li></ol><p>After the client is configured, you can access it by `Sign.instance`. Signs instance exposes Combine publishers so you can set one or multiple subscribers to it. Publishers will call the <em>receive(subscription:)</em> method on all subscribers to inform your app of incoming events.</p><p><strong>Pair the clients</strong></p><p>You probably started wondering what a pairing is. So, this is a particular type of object that allows you to keep encrypted communication between a web browser and a wallet. You will use it to establish sessions for further communication between dapps and your wallet. That means that users don’t have to scan QR codes over and over again. Instead, they will initiate new sessions with just a single button tap. If you had an experience with WalletConnect v1.0, I am sure you feel this is an enormous UX improvement.</p><p>Ok, so we already have our Sign instance configures, and we know what a pairing is. So let’s establish one. First, you need a pairing URI, which the dapp can generate and display as a QR code. It contains necessary information required to initialize communication like the proposer’s public key or topic by which your client will know where to publish and subscribe for events of your interest.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/941beca09d6865c8189c0029d45577100ca77a567592655379b6f91c46c5c9a5.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>once you have a pairing URI, you can call:</p><pre data-type="codeBlock" text="try await Sign.instance.pair(uri: uri)
"><code><span class="hljs-keyword">try</span> await Sign.instance.pair(uri: uri)
</code></pre><p>Under the hood, clients settle the pairing that will live for 30 days by default and will expire after on both peers. Keep in mind that even though pairing has an important role, you do not necessarily need to list active pairings to the wallet user, as they will be more interested in sessions.</p><h2 id="h-establish-a-session" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Establish a Session</h2><p>Optimistically after clients settle the pairing, the dapp will propose a session with Proposal Namespaces. A session proposal is a handshake sent by a dapp, and its purpose is to define session rules. The handshake procedure is described by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-25.md">CAIP-25</a>. Session.Proposal object conveys a set of required ProposalNamespaces that contains required blockchains, methods, and events. Dapp requests with methods and wallet will emit events defined in namespaces.</p><p>The user will either approve the session proposal (with session namespaces) or reject it.</p><p>Note that accounts included in the namespace body should follow<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-10.md"> CAIP10</a> specifications and be prefixed with a chain identifier. You can find more on blockchain identifiers in<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md"> CAIP2</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9d0a60f81ed258541a8cdb8769ef3e0356579067605aa25ac8c05cbca728ced9.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>in order to receive a proposal, subscribe on:</p><p><em>public var sessionProposalPublisher: AnyPublisher&lt; Session.Proposal, Never&gt;</em></p><pre data-type="codeBlock" text="Sign.instance.sessionProposalPublisher
   .receive(on: DispatchQueue.main)
   .sink { [weak self] sessionProposal in
   // present proposal to the user
}.store(in: &amp;publishers)
"><code>Sign.instance.sessionProposalPublisher
   .receive(on: DispatchQueue.main)
   .sink { [weak <span class="hljs-built_in">self</span>] sessionProposal in
   <span class="hljs-comment">// present proposal to the user</span>
}.store(in: <span class="hljs-operator">&#x26;</span>publishers)
</code></pre><p>Present proposal to the user, and when the user approves dapp’s proposal, call <em>approve</em> function :</p><pre data-type="codeBlock" text="Sign.instance.approve(proposalId: proposal_id, namespaces: [String: SessionNamespace])
"><code><span class="hljs-selector-tag">Sign</span><span class="hljs-selector-class">.instance</span><span class="hljs-selector-class">.approve</span>(<span class="hljs-attribute">proposalId</span>: proposal_id, <span class="hljs-attribute">namespaces</span>: [<span class="hljs-attribute">String</span>: SessionNamespace])
</code></pre><p>A secure communication channel for sending payloads between wallets and dapps is provided by sessions. In WalletConnect Sign v2.0 protocol there is a significant improvement in session management. Each Session has a defined expiry date whose primary purpose is to eliminate scenarios where one of the clients is not communicating the session deletion, and its peer keeps the Session alive. By default, sessions will live for a week and then expire. But if you consider it should stay alive as the user is actively utilizing it, you can call extend function that will extend a session to the next seven days.</p><pre data-type="codeBlock" text="try await Sign.instance.extend(topic: session.topic)
"><code><span class="hljs-keyword">try</span> await Sign.instance.extend(topic: session.topic)
</code></pre><h2 id="h-talk-to-your-peer" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Talk to your peer</h2><p>We already have a pairing and a session so we can begin communicating with our peer. WalletConnect Sign protocol has a special method for doing this: <em>wc_sessionRequest</em>. Dapp will use it to request the wallet for transactions or messages to sign.</p><p>Requests will be delivered by the following publisher.</p><pre data-type="codeBlock" text="Sign.instance.sessionRequestPublisher
   .receive(on: DispatchQueue.main)
   .sink { [weak self] sessionRequest in
   // present session request to the user
}.store(in: &amp;publishers)
"><code>Sign.instance.sessionRequestPublisher
   .receive(on: DispatchQueue.main)
   .sink { [weak <span class="hljs-built_in">self</span>] sessionRequest in
   <span class="hljs-comment">// present session request to the user</span>
}.store(in: <span class="hljs-operator">&#x26;</span>publishers)
</code></pre><p>and one can simply respond for a request with either result or an error:</p><pre data-type="codeBlock" text="let result = sign(request: sessionRequest) // implement your signing methodlet response = JSONRPCResponse&lt;AnyCodable&gt;(id: sessionRequest.id, result: result)Sign.instance.respond(topic: sessionRequest.topic, response: .response(response))
"><code>let result = <span class="hljs-built_in">sign</span>(request: sessionRequest) <span class="hljs-comment">// implement your signing methodlet response = JSONRPCResponse&#x3C;AnyCodable>(id: sessionRequest.id, result: result)Sign.instance.respond(topic: sessionRequest.topic, response: .response(response))</span>
</code></pre><p>There are a lot of JSON RPC methods used by the Ethereum community already, and there is more to be introduced not only to Ethereum but to other blockchains as well. We wanted the WalletConnect Sign protocol to be chain agnostic and allow wallet holders to sign transactions for any chain, but we also wanted WalletConnect to stay flexible for future methods that can either be proposed by the community or be just your project’s specific method. In order to allow it in the WalletConnect Sign v. 2.0 protocol, we’ve introduced an <em>AnyCodable</em> type. You can wrap any type in it and send it over the network. When the request or response is received, the expected type can be easily derived from parameters or a result:</p><pre data-type="codeBlock" text="sessionRequest.params.get([EthereumTransaction].self)
"><code>sessionRequest.params.get([EthereumTransaction].self)
</code></pre><h2 id="h-whats-next" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What’s next?</h2><p>It is important to mention that our SDK is still in its beta phase, but I am sure it is the right time to begin integration with your project. To learn more about the protocol, check out our<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.walletconnect.com/2.0/"> <strong>documentation</strong></a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WalletConnect/WalletConnectSwiftV2"><strong>GitHub</strong></a>, and join our<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/RrmHFz5h"> <strong>discord</strong></a> server to be a part of our community. You may also like to try our example apps that are part of our repo.</p>]]></content:encoded>
            <author>walletconnect@newsletter.paragraph.com (WalletConnect)</author>
        </item>
        <item>
            <title><![CDATA[WalletConnect raises 11M to build out the messaging layer for Web3]]></title>
            <link>https://paragraph.com/@walletconnect/walletconnect-raises-11m-to-build-out-the-messaging-layer-for-web3</link>
            <guid>mK5n8iESNTewdwUOp3zs</guid>
            <pubDate>Mon, 14 Mar 2022 15:55:47 GMT</pubDate>
            <description><![CDATA[We are happy to announce today that we have raised a 11M Series A funding round co-led by USV and 1kx to scale wallet interoperability and develop a generalized messaging layer. This is followed by a 1.25M Seed funding round also led by 1kx early last year that helped us build our founding team. WalletConnect started in 2018 with the mission of connecting as many wallets to Ethereum applications as possible. Since then we’ve integrated with over 100 wallets and more than 200 applications incl...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6cec890fb669383ba65be795468b9cfe4fb90c59495de9f72f3190fb7f4512c4.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>We are happy to announce today that we have raised a 11M Series A funding round co-led by USV and 1kx to scale wallet interoperability and develop a generalized messaging layer. This is followed by a 1.25M Seed funding round also led by 1kx early last year that helped us build our founding team.</p><p>WalletConnect started in 2018 with the mission of connecting as many wallets to Ethereum applications as possible. Since then we’ve integrated with over 100 wallets and more than 200 applications including Twitter, which has since added support for NFT authenticated profile pictures.</p><p>More importantly, our traffic has been exploding in the last two years and demand is accelerating beyond Ethereum. This is why our v2.0 remote signer protocol, currently in beta, is delivering much-awaited multi-chain support for Cosmos, Polkadot, Solana, etc.</p><p>Web3 isn’t complete without the three pillars of decentralized infrastructure: blockchain, messaging and storage. <strong>We are now taking WalletConnect to the next stage by focusing on becoming the decentralized Web3 messaging layer.</strong></p><p>To achieve this goal we are going to be introducing two new protocols for Wallets to be interoperable with Web3 applications.</p><ul><li><p>First, we are building a direct messaging protocol that will allow WalletConnect wallets to message each other.</p></li><li><p>Second, we are currently researching a push notification protocol to allow apps to notify users of both off-chain and on-chain events.</p></li></ul><p>All of these protocols are backed by the WalletConnect messaging layer that we are actively scaling and improving which is also optimized to share bandwidth for wallet users even with the most resource constrained mobile devices</p><p>Our mission continues to expand the interoperability of the Web3 space by providing the best tooling and infrastructure for Wallets to deliver outstanding user experience.</p><p>This multi-protocol messaging network is being developed as we speak and with the support of this Series A funding round we can expand our resources to bring it to reality for millions of developers building apps and wallets in Web3.</p><p>We would love to thank our investors USV, 1kx, Semantic, A Capital, Coinbase Ventures, Buckley Ventures, Zerion, Alex Svanevik, Eric Conner, Vadim Koleoshkin, Arjun Bhuptani, Joel Thorstensson, Matias Woloski, Scott Moore, Spencer Yang, Han Hua, Jin Chung, Mike Demarais, Christian Baroni, Bruno Barbieri, Alexander Salnikov, Viktor Bunin, Mara Schmiedt, Wayne Chang, Gregory Rocco, Anna Rose, Ajit Tripathi and Alex Harley for supporting our mission to improve interoperability in Web3 with WalletConnect.</p><p>If you would like to join our team to participate in our mission, check out what job postings we have available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.workable.com/">here</a>.</p>]]></content:encoded>
            <author>walletconnect@newsletter.paragraph.com (WalletConnect)</author>
        </item>
        <item>
            <title><![CDATA[Introducing WalletConnect Cloud Registry]]></title>
            <link>https://paragraph.com/@walletconnect/introducing-walletconnect-cloud-registry</link>
            <guid>teBiiobXLDY3t6YXKdjB</guid>
            <pubDate>Wed, 26 Jan 2022 17:49:45 GMT</pubDate>
            <description><![CDATA[The WalletConnect ecosystem has grown so rapidly in the last year that we have struggled to keep up with every new integration. Our open-source app registry continues to accumulate more and more submissions but we don’t have enough bandwidth to review all of them.Introducing the new App Registry submission available on WalletConnect Cloud!Our new submission form for the WalletConnect Cloud Registry can be easily accessed from your WalletConnect Cloud account, instead of submitting a Github is...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1a29e9f36e9f515d9d16cfecc125563d9b79861e1708450414935805a50849b6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The WalletConnect ecosystem has grown so rapidly in the last year that we have struggled to keep up with every new integration. Our open-source app registry continues to accumulate more and more submissions but we don’t have enough bandwidth to review all of them.</p><blockquote><p>Introducing the new App Registry submission available on WalletConnect Cloud!</p></blockquote><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b9cdf80636318bd0c06e806a7938971579c7ba5e9d1a4efbb39650e38b46f3cb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Our new submission form for the WalletConnect Cloud Registry can be easily accessed from your WalletConnect Cloud account, instead of submitting a Github issue on our repository which can take months to review. We now have a much faster process to review submissions that are included into our Registry API.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1c6c61ef66766eae1dc4d1d946828633828609a44d54e906d181f15a5db33b6c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>On your dashboard you will be able to track draft, pending, rejected and approved submissions. Another benefit of the cloud registry is that authors can easily update their listing. Need to update a deep link? No problem!</p><p>If you would like to edit or claim an existing registry item, email us at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:support@walletconnect.com">support@walletconnect.com</a> to help migrate the listing to your account.</p><p>Additionally we have outlined clear <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.com/registry/guidelines">guidelines</a> for registry submissions that will be used for our review process so make sure to read them <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.com/registry/guidelines">here</a> before submitting.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1b7c97bf6f68e57b68878dc58626cffb7f0146e8ff8a6891ed2e76dd448ae19c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Our new App Registry will serve the homepage listing of Dapps and Wallets that support WalletConnect protocol just like before and also serve the SDK Modal used for mobile linking currently present on Dapps.</p><p>The Registry API will still be served through the same endpoints and they will be backwards-compatible so no changes are required if you are fetching the latest registry file.</p><p>We are planning to extend features for our App Registry now that it has been incorporated into WalletConnect Cloud. In the future, you will be able to assign projectIds in your account to registry submissions.</p><p>Go to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.com/">walletconnect.com</a> and try out our new submission form.</p>]]></content:encoded>
            <author>walletconnect@newsletter.paragraph.com (WalletConnect)</author>
        </item>
        <item>
            <title><![CDATA[Swift and Kotlin v2.0 SDKs are now in Beta]]></title>
            <link>https://paragraph.com/@walletconnect/swift-and-kotlin-v2-0-sdks-are-now-in-beta</link>
            <guid>3Logk1s1MNYWeRKVXohx</guid>
            <pubDate>Wed, 26 Jan 2022 17:48:19 GMT</pubDate>
            <description><![CDATA[It’s beginning to look a lot like Christmas so we have prepared a special gift for our community. We have released the first v2.0 Beta for both Swift and Kotlin SDKs supporting iOS and Android platforms, respectively. In July we announced new WalletConnect v2.0 protocol and released our first beta for Javascript SDK. Later in October, we released WalletConnect Cloud where projects can register themselves to get a projectId to access our new infrastructure for v2.0 protocol. Around that time w...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bde43e594fb22841594b120f067f6fbd68850e34fe625dbe5a37d399557b0e60.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>It’s beginning to look a lot like Christmas so we have prepared a special gift for our community. We have released the first v2.0 Beta for both Swift and Kotlin SDKs supporting iOS and Android platforms, respectively.</p><p>In July we announced new WalletConnect v2.0 protocol and released our first beta for Javascript SDK. Later in October, we released WalletConnect Cloud where projects can register themselves to get a projectId to access our new infrastructure for v2.0 protocol. Around that time we also teased on Twitter that Swift and Kotlin SDKs had been able to connect with the JavasScript SDK for the first time and this week we finally announce that the mobile SDKs are now ready for Beta testing.</p><p>It’s been an outstanding journey for the whole WalletConnect team coordinating client development for the new protocol across three different platforms and we made sure that we provided the best developer experience across the board. You can now test WalletConnect v2.0 protocol for Browser, Desktop and React-Native apps with the Javascript SDK, for iOS apps with Swift SDK and for Android apps with Kotlin SDK.</p><p>These new SDKs implement the full protocol and are interoperable between each other as per the WalletConnect v2.0 specification described on our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.walletconnect.com/protocol/tech-spec">documentation</a>. We are inviting all projects to integrate with these new mobile SDKs and provide us as much feedback as possible so that we can push v2.0 adoption even forward.</p><p>We have prepared beginner guides for both Swift and Kotlin SDKs to get you started integrating WalletConnect v2.0 protocol in your wallet:</p><p>Swift: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/walletconnect/beginner-guide-to-walletconnect-v2-0-for-swift-developers-4534b0975218">https://medium.com/walletconnect/beginner-guide-to-walletconnect-v2-0-for-swift-developers-4534b0975218</a></p><p>Kotlin: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/walletconnect/beginner-guide-to-walletconnect-v2-0-for-android-developers-fd0fd3d9ec5f">https://medium.com/walletconnect/beginner-guide-to-walletconnect-v2-0-for-android-developers-fd0fd3d9ec5f</a></p><p>If you haven’t registered on WalletConnect Cloud go to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.com/">walletconnect.com</a> to get your projectId today. WalletConnect v2.0 is ready today! 📲</p>]]></content:encoded>
            <author>walletconnect@newsletter.paragraph.com (WalletConnect)</author>
        </item>
        <item>
            <title><![CDATA[WalletConnect v2.0: what’s new?]]></title>
            <link>https://paragraph.com/@walletconnect/walletconnect-v2-0-what-s-new</link>
            <guid>K3ne8k3js6tzI0dUfgYd</guid>
            <pubDate>Wed, 26 Jan 2022 17:46:18 GMT</pubDate>
            <description><![CDATA[If you follow WalletConnect or me on Twitter, you would’ve seen plenty of teasers on different features and properties of the v2.0 protocol. In this article we will break down every single one of them and the key differences from the previous v1.0 protocol. The user experience will remain exactly the same yet the new protocol will break interoperability but for very good reasons. Here are the main features of WalletConnect v2.0 protocol introduces:Chain Agnostic InterfaceMulti-Chain SupportPa...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/795b9d92dc787d0b4c8580bd187fc887e633fd34fed0b16ea22ae13e8722905e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>If you follow <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/walletconnect">WalletConnect</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/pedrouid">me</a> on Twitter, you would’ve seen plenty of teasers on different features and properties of the v2.0 protocol. In this article we will break down every single one of them and the key differences from the previous v1.0 protocol.</p><p>The user experience will remain exactly the same yet the new protocol will break interoperability but for very good reasons. Here are the main features of WalletConnect v2.0 protocol introduces:</p><ul><li><p>Chain Agnostic Interface</p></li><li><p>Multi-Chain Support</p></li><li><p>Pairing &amp; Session Separation</p></li><li><p>JSON-RPC Permissions</p></li><li><p>Improved Session Management</p></li><li><p>Decentralized Message Relaying</p></li></ul><h2 id="h-chain-agnostic-interface" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Chain Agnostic Interface</h2><p>An often discussed, requested and misunderstood topic has been WalletConnect’s support for multiple blockchains. WalletConnect is first and foremost an encrypted communication protocol that only cares about two parties coming to agreement over a session.</p><p>However when v1.0 was released it made the assumption that both parties were communicating about any EVM-compatible chain thanks to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@pedrouid/chainid-vs-networkid-how-do-they-differ-on-ethereum-eec2ed41635b">chainId</a> specified by EIP-155 standard but this meant that other blockchains like Cosmos and Polkadot would be incompatible given that their chains are not identifiable by the same standard.</p><p>Hence came the initiative back in 2019 to start <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/chainagnostic/caips">CAIPs</a> (Chain Agnostic Improvement Proposals) to provide a common ground for multi-chain applications. These standardize interfaces across different blockchain ecosystems which may not share tooling and infrastructure. CAIPs were developed together with projects on Ethereum, Cosmos, Polkadot, Solana, Near, Filecoin, etc.</p><p>Thanks to these newly defined standards that we developed in CAIPs WalletConnect v2.0 was able to expand its support very easily to be chain agnostic. Below you can find some examples of how accounts are specified for different chains.</p><pre data-type="codeBlock" text="# Ethereum mainnet
eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb
​
# Bitcoin mainnet
bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6
​
# Cosmos Hub
cosmos:cosmoshub-4:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0
​
# Kusama network
polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy
"><code><span class="hljs-comment"># Ethereum mainnet</span>
<span class="hljs-section">eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb</span>
​
<span class="hljs-comment"># Bitcoin mainnet</span>
<span class="hljs-section">bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6</span>
​
<span class="hljs-comment"># Cosmos Hub</span>
<span class="hljs-section">cosmos:cosmoshub-4:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0</span>
​
<span class="hljs-comment"># Kusama network</span>
<span class="hljs-section">polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy</span>
</code></pre><h2 id="h-multi-chain-support" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Multi-Chain Support</h2><p>Another drawback of v1.0 is that, just like other current tooling in this space, support for an application to connect to multiple chains simultaneously was missing. It has become normalized that a connection between an app and a wallet assumes a single active chain.</p><p>Simultaneous chain connections were long considered on CAIPs discussions prior to WalletConnect v2.0 development which is defined both by the account addresses to be suffixed by the chain identifier and also by the JSON-RPC standard to invoke requests with a target chain.</p><p>Thus, this new feature would enable a future where apps can interface with wallets on multiple chains without requiring any synchronization to switch context either automatically by the wallet or the user themselves.</p><h2 id="h-pairing-and-session-separation" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Pairing &amp; Session Separation</h2><p>Sometimes you need to push forward imperfect solutions to then iterate on problems that your earlier self wasn’t able to predict, for example, a major bottleneck was that WalletConnect v1.0 required a user to scan a QR Code or use a deep link every time they wanted to connect to a new application from their wallet.</p><p>Fortunately this is not the case with the v2.0 protocol where pairing and session have been decoupled. The app using the WalletConnect protocol will cache previously paired wallets which it can use to send new session proposals without pairing all over again. This relationship of a pairing will of course not be shared between wallets but it can be shared between applications in the same browser through an iframe.</p><p>The most important consideration for the development of this feature was that the pairing is essentially a relationship between clients while sessions are a relationship between app and wallet. Understanding the platform where the client is run is what will constrain the re-use of pairings to propose new sessions between two clients.</p><h2 id="h-json-rpc-permissions" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">JSON-RPC Permissions</h2><p>The first challenge created by introducing chain agnostic interfaces were the incompatibilities between apps and wallets regarding the JSON-RPC API methods being used in a session. While it solved v1.0 protocol’s assumption that both were using the Ethereum JSON-RPC API it meant they also needed to communicate the API being used. Therefore in v2.0 protocol you are required to specify the JSON-RPC methods upfront when proposing a session. Since the issue being tackled was API compatibility, it was very easy to describe which methods are to be used before session settlement thus it would also need to be approved by the wallet when connecting to an app.</p><p>JSON-RPC permissions basically serve two purposes, before and after session settlement. Before session settlement, they describe the API requirements of the app in order for the session to proceed without any errors. That way, the wallet is able to parse if it will be able to support all methods, but also if it approves the use of these methods by the app. After session settlement, the clients will be able to filter out any JSON-RPC requests used on either side which are incompatible with the described set of methods for the session.</p><p>A great example of this feature in today’s Ethereum applications supporting WalletConnect is when an experimental method like signing typed data (eth_signTypedData) is required by the app but unsupported by the wallet. In this context, these permissions provide an amazing mechanism to detect support without requiring maintenance of a registry for which wallets support new API methods.</p><h2 id="h-improved-session-management" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Improved Session Management</h2><p>Session management has probably been one of the most overlooked aspects of the v1.0 protocol and I personally find to be the biggest game changer for the v2.0 protocol. While it may not be as attractive as multi-chain support for many developers the underlying management of the sessions on the client will be dramatically improved in two areas: explicit expiries and request history.</p><p>Explicit expiries simply means that session proposals include a Time to Live (TTL) which is by default set to one week but can be changed as the expiry is calculated on the wallet side after settlement which is then communicated back to the app. This eliminates the current scenario where either apps or wallets manage sessions indefinitely due to one of the parties not communicating its termination. Additionally a mechanism to ping is also included to evaluate if the peer client is currently online or not. While WalletConnect does not require parties to be online for the whole duration of the session, it’s useful for apps to understand whether the wallet is immediately available to sign a request.</p><p>Request history is probably the only feature which was never asked before because the v1.0 delegated this responsibility to the server. For v2.0 protocol all clients will have a record of all the JSON-RPC requests made during a session and also which ones have already been responded. This enables a client to protect itself from receiving duplicate requests and track pending requests that need to be responded.</p><h2 id="h-decentralized-message-relaying" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Decentralized Message Relaying</h2><p>Perhaps unknown by many but v1.0 protocol was initially designed to be used on the Whisper network. However it was more important at the time that the protocol was adopted by as many applications possible so it was implemented that messages are relayed through a centralized server that mimics a pub-sub architecture like Whisper. Three years later, with Whisper did not survive the test of time but a replacement protocol emerged called Waku. So now that WalletConnect is much better positioned to adopt a decentralized message relay network as its primary transport for messages.</p><p>WalletConnect v2.0 uses Waku 2.0 by default to relay messages in a decentralized manner which removes the previous requirement of two clients being connected to the same server. In fact, WalletConnect 2.0 does not even require clients to be connected to a server at all since Waku 2.0 is built on top of libp2p, and therefore it can relay messages client-side like a browser and propagate them through the network to reach the peer client.</p><p>That being said we are still going to provide public proxy servers to the Waku network to ensure a smooth transition for developers to adopt v2.0 and also to guarantee the lowest latency and uptime possible perserving this way the same user experience under different network conditions.</p><h2 id="h-whats-next-for-walletconnect-20" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What’s next for WalletConnect 2.0?</h2><p>Currently we are publishing all open-source code for Javascript clients compatible for browsers, node.js and react-native and we have started to onboard multiple projects to beta testing it in production.</p><p>The development of Swift and Kotlin clients for the iOS and Android platforms is currently in Alpha stage and we expect to make available stable Beta releases for projects to integrate by January 2022.</p><p>Currently we already published a provider for Ethereum and will subsequently release providers for other blockchains starting with Cosmos and Polkadot then followed by Solana and Near.</p><p>Our goal will always be to provide the best developer experience, so that applications can offer the best user experience in blockchain. There will be releasing more SDKs in the future and offer more infrastructure services that allow apps to integrate seamlessly with wallets.</p><h2 id="h-want-to-learn-more" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Want to learn more?</h2><p>Check out our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.walletconnect.com/">documentation</a> and join our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.walletconnect.com/">Discord</a> to be part of our community.</p>]]></content:encoded>
            <author>walletconnect@newsletter.paragraph.com (WalletConnect)</author>
        </item>
        <item>
            <title><![CDATA[WalletConnect Cloud is Live!]]></title>
            <link>https://paragraph.com/@walletconnect/walletconnect-cloud-is-live</link>
            <guid>1HRSHlsqFOwSYJmvSQ9Y</guid>
            <pubDate>Wed, 26 Jan 2022 17:44:37 GMT</pubDate>
            <description><![CDATA[We have a new website, a new domain, and a brand-new infrastructure, including a developer dashboard with WalletConnect Cloud for our new v2.0 protocol. You can register an api key for free today.Three months ago, we announced our new v2.0 protocol, which brings to life numerous new features and improvements that many projects have been requesting. Most importantly, v2.0 is designed to be both chain-agnostic and support multi-chain to embrace the latest development with blockchain application...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ea80947334cc3d18005fa2648f18bce6c386d64926255d50cdb0379d2b608aec.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>We have a new website, a new domain, and a brand-new infrastructure, including a developer dashboard with WalletConnect Cloud for our new v2.0 protocol. You can <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.com/">register an api key</a> for free today.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6180bc34adbcc637bac16bb1c48042623ef5b983fd1ad63b1ad0131c74e8b42d.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Three months ago, we announced our new v2.0 protocol, which brings to life numerous new features and improvements that many projects have been requesting. Most importantly, v2.0 is designed to be both chain-agnostic and support multi-chain to embrace the latest development with blockchain application and wallets.</p><p>WalletConnect v2.0 is the result of almost three years of production use of our protocol to connect hundreds of applications and wallets together in the most universal and interoperable way possible.</p><p>To this date, beta testers have already gotten access to our Javascript SDK and reported great feedback, allowing us to improve even further before making the first stable release. Both Swift and Kotlin SDKs are getting very close to their first alpha releases and will be ready in the upcoming weeks for wallets to support it on both iOS and Android.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4561d39cb705765903c3f52c21b3c59855ca8b98f18a5d798ba17150aec25223.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>To provide the best service with the highest reliability and performance, we are launching our WalletConnect Cloud. Any developer or project can easily register an account to generate api keys to use our new infrastructure.</p><p>WalletConnect Cloud aggregates years of experience running infrastructure for WalletConnect to ensure that apps can guarantee the best service even during the most demanding peak times.</p><p>WalletConnect v2.0, just like the previous version, can run on self-hosted infrastructure and does not require projects to run on our Cloud. In addition, since the new protocol uses Waku decentralized messaging, we can relay messaging between self-hosted and cloud-hosted servers.</p><p>We introduced api keys to ensure we can provide the best service possible, but the service stays free as it did for the previous version. Soon, we will be rolling out new features, products, and services for our Cloud services that will allow developers to focus on building the best wallets and dapps possible.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7c758afad8308e74085cd3000cba10ea7333ad86d97ff3d5c33aba82efa20bb7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>WalletConnect’s goal is to provide the best suite of tools for Web3 development. With our new .com domain and website, we will focus on improving both the developer and user experience for blockchain.</p><p>WalletConnect v1.0 infrastructure will still be available until v2.0 surpasses it in adoption. When this happens, we will start a 6-month sunset for the v1.0 infrastructure.</p><p>Today, we invite everyone to register with WalletConnect Cloud and start reading the documentation for our v2.0 protocol. Then, follow our blog posts for more technical deep-dives into how v2.0 protocol works.</p><p>Visit <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://walletconnect.com/">walletconnect.com</a> and register today!</p>]]></content:encoded>
            <author>walletconnect@newsletter.paragraph.com (WalletConnect)</author>
        </item>
    </channel>
</rss>