DAPPCON 2019: WalletConnect's Road to 2.0 - Pedro Gomes (WalletConnect)
DappCon 2019 · August 2019 · 16:22
WalletConnect is presented as an end-to-end encrypted protocol meant to give applications one interface to multiple wallets, rather than requiring separate mobile-wallet integrations. Its proposed v2 would batch anticipated requests into ephemeral sessions, abstract transport across Bluetooth, WebRTC and a bridge fallback, and allow some requests to run in the browser under synced signing rules. These were plans, not finished features: mobile-to-mobile was called “really hard,” iOS had caveats, and the Q&A funding answer reported two grants while the project was still being bootstrapped.
Speakers
Topics
From DappCon 2019, hosted by Dappcon Berlin.
Transcript
so I'm here to talk about Wallach an egg who has heard about wall connect so far can you get some hands yes Paula connects so that's me so wall it connects very simple open protocol for connecting the apps to wallets why did it exists let's find out I'll go through it and let's see where it's heading next my name is Pedro Gomez lead developer of volcanic I'm maintaining the open source project and you can find me on Twitter page or you ID what is Walla connect how does it even work it's just a QR code key recursive exists for so long it's an end-to-end encrypted communication protocol that's like the best way to put in one sentence
it's just providing communication between two devices it's it's the what's up of wallets basically it's the signal of wallets a I'm just providing a messaging protocol between the apps there on the desktop and mobile wallets so the idea was to create a more secure web G experience cross-platform so Alex talked about it and it's pretty simple right now we have private keys that hold funds that you want to create like multiple accounts so we would like copy and pasting between devices and that's pretty secure like you're basically exposing your private key to all of like these scenarios where you're not even sure where your copy and pasting so with meta mask we have this Chrome extension
that just lives on the browser and even for like mobile wallets there's that browsers that kind of just interact directly with the clients but if you want to use something else like your mobile phone you always have your mobile phone with you and the premise was that if we always have our mobile phone with us we can just hold one private key for everything so I kind of just need to recreate this communication between the two instead of creating wallets we just went with like a protocol so the protocol would talk between a client in the wallet and it would enable anyone to just follow an SDK and interact with any tab that would support this protocol and that's exactly what we did and fortunately I can now demonstrate the difference between meta mask mobile and
meta mask extension since many mass mobile now supports wallet connect you can have the same connection that you used to have pop up showing up on the Chrome extension but it's just on your phone and that's what happens when you scan the QR code at that point you'll be sharing the accounts and you'll be interacting in a two-way communication between the Deaf and the wallet what did it start so the first prototype was at balance this was like back a year ago and March 2018 I remember presenting at the OPCON it was pretty novel and it didn't have adoption at all and then we got an EF grande and that's how I started working full time on it and in we released the Alpha just a month later and it was pretty bad I gotta say it like I mean at
the time it was pretty exciting but it wasn't good and I found out the hard way going through the adoption part in August we had the wall connect sociation was incorporated in Zook and then the Tachyon supported us with an open-source grants back in september and then we can is kick off some adoption these first adopters were really crucial big tanks to League II from all of the tow canary they're young guys and d/dx because we really battle-tested the first version with them and eventually we realized we need a new protocol like it was really bad so a brand new version was fallouts to have improved performance preserved privacy and just expanded the future center all around because we kind of had to break down what is adapt gonna need
from a wallets because we just need to be flexible enough to support all wallets and all the apps so it had to kind of be broad enough and so in January I released a better release the was kind of just kicked off the whole adoption that we've had so far and in the beginning of 2018 I published the beta with full JSON RPC support for a tier iam and then improved personification architecture and it's live two-way communication that was much better than the first version so at ECC I presented the better version and right after we just had like gnosis a fan origin announced they're gonna support the wall connect in the future and from there we're just gonna see a lot of adoption following up we got Finance and Trust wallet so bindings Dex and Trust
wallet had communication using wallet connects so the trust wallet users could just connect using wall connects on the binding sex and then in main during blockchain week meta masks announced they were gonna release a public beater with wall connect in July so right now you can go to mobile dot mentor master diof and get your mobile wallet and then we had Brainbow pillar Matic bamboo relay we had Konami grid plus locally tearoom tree box and I haven't even named all of them because if they just keep going and last month we reach almost 4,000 downloads so the the growth is there and we're getting this protocol to really be a universe of protocol because we really want it to be like the USB 4 wallets where we all
share one infrastructure and we don't have to integrate multiple solutions for mobile wallets so this is where we are now we have SDKs with web iOS and Android and a pre solids community that has been really working on it and it's getting better every day and one of the projects that I was working on it used to be called wallet connect widgets but it kind of just didn't take off so a new rerun is always good so just put like your library like this and rerun to what she connect and basically what it is is that this is not just about wall connect this is kind of like what Alex was touching upon before where we have multiple the provider solutions and that developers have to integrate every
single one of them and they kind of just get stuck in the meta mask one and they don't move into the next one so this libraries trying to just make that easy with one button they can just integrate this model and provide the user the option to choose whatever wallet they want without forcing them one single solution and also we're working on state channels we're really really close we're working with connects to have like built-in support within the wall connect so once you integrate wall connect you will have a client for connects that you can just use state channels immediately mobile to mobile I thought this one would be released by now I'm very disappointed but this is actually really hard so the idea with mobile tadesco is pretty cool but what if we could use the
Mobile Safari browser to just interact with the dabble so main the main friction here is actually iOS Android just worked straight away with the current protocol but with iOS there's a bit a few caveats that we have to consider in order to allow a smoother experience between the two and standards like there's nothing that I can do better at my job to just push for standards because I'm just a protocol that talking between dabs and wallets and I have to coordinate between all of these parties and the best way I can do it is creating the IPS I created these but this one is a old one that's a really good one which is gonna kind of converge all of these providers to have like a unified interface they're just gonna make our lives easier and then
there's a bunch of them like transaction chain ID if you've seen me on Twitter I've been pushing for chain ID a lot because that's the right way of doing things we've been using network ID and it's just wrong and I hope we kind of move away from it and the wallet update when you go to adapt and you basically are prompted to like hey switch to this network with the EIP 2015 you can just make a request to the wallet and the wallet can switch it and you can even prompt the user if you want to make that request available or not so what's coming for well Connect v2 it's been a year a lot of adoption but there has been a lot of learnings and how we could do better and in order to not have breaking changes we have to kind of have
like major versioning and everything and basically allow production apps to kind of continue with the v1 while we're producing the v2 one of the things it's called well connect instant so there's a lot of use cases that are found that like even with a QR code and you only want to make one request you still want that feedback so basically having that two-way communication being very ephemeral so instead of having to request to connect to adapt and then to make a request and sign a message what if we just batch a bunch of them that we know we have prior knowledge that are going to be required and then close the session right after the the difficulty here is that we actually have to some have some kind of like prefilled fields like for example if you want to know the
address or what tokens the user wants to put in so we're gonna create like a schema of how you can define without knowing those fields so that the walls can just refill them on user approval as a metric key exchange so there's a bit of like caveats with how we do the key exchange right now and we want to really improve that with double Ranchettes exchange which is used in signal and what's up as well and transporting nossek like it's gonna become even more and more agnostic like the protocol will be so uh opinionated it's just gonna become boring but it will allow us to do some very interesting things so right now we use a bridge which is a WebSocket server that
keeps connection between two two parties but we can actually just abstract that to become like a Bluetooth and the idea is to kind of actually provide like a year a key where you try to go for the Bluetooth and then eventually go to the WebRTC and as a last resort the bridge will be the just a fallback for everything but one good experience of outlet of is there this presentation is only here because of Bluetooth because the internet was so bad I couldn't even get it into the laptop and I can't son Jing ma knows this is actually an interesting one so the idea was that what if not all requests need to be relayed to a mobile wallets like the idea that the private key only lives in one side this kind of like transcends a bit like from the state channels that
they generate app keys on the browser and then even the universal login and many transactions framework which uses like delegate key signing so we can create like these account modules that will have like custom rules of how to actually sign that can be synced between the two clients on the tap and the wallet so some requests might be required to go all the way to the wallet but some requests might have like less conditions that can just be handled on the browser side instead and the vision is to expand like we want to grow this protocol to encompass more and more and more we really want to be like the universal protocol for everything private key manager related and we want to expand first like with Bitcoin and
cosmos we're working with Iove and commercial network and something that we're going to present at Def Con which is an interchange registry which is trying to standardize the interface what it is to be an application that connects with all cosmos and nitiram chains and working on kind of becoming as as in agnostic as possible that it will allow a very easy interface between the two also with you port and if so kind of the ideas that all accounts are just D IDs that can be authenticated by the wallets that can provide us the information so technically the world connect me to you not only is Bakshi an agnostic but it's also more like as a di D Authenticator and that's one of the things that it's
really exciting to see as it evolves further for other use cases so I would love to contribute with all of you guys if you not adopted well can I get reach out I really want to help scan the QR code that's where the website is you can have all of these links documentation github telegram and really get involved because this is a community project I'm just the glue between all of these parties like trust wallets minimas gnosis say if they've all contributed immensely to this project and basically I'm just trying to coordinate between the community to kind of share a unified protocol thanks Ron so as this is super open source I imagine it's a bit hard to
monetize anything do you completely rely on funding for the vision and everything yeah so like you said like you saw like I've had two grand so far and I'm kind of just bootstrapping the project for now but the idea is to kind of have the volcanic association take over and have all of the parties involved supporting this project okay thanks for the effort hey what is the roadmap for a motor change support the roadmap for mojo change support so the idea with multi change support is that what we're doing with the interchange registry is trying to kind of find like what are the minimum viable information that it will allow applications to kind of interact with nodes there are knots the nodes
you're expecting so right now there's the assumption with wall connect that this is an EVM compatible EVM is the term virtual machine so basically it will follow the standards that are like each sin transaction each sign message there's always this prior knowledge of what your interacting with but what if we could give you a D ID that will resolve a document that would tell you how to interact with the application maybe you already know how to interact with the application but for example in this scenario of Cosmos they have quite a lot of flexibility with the Kosmos SDK to kind of have like very broad feature sets that are not originally supported with the cosmos app for example so the idea is that you will have like the certification where you disclose I am
this app and I have I want these accounts and the wallet will then resolve those accounts and you will be able to kind of just follow this schema to kind of understand how you're actually gonna make signing requests with the wallet alright great project and thanks for your work and could you tell a little bit more on what kind of use cases you see for a relative how how that would work so I think like for now there's the this big like it's all about mobile to desktop with mobile to mobile it will kind of still rely a lot on the WebSockets part because you're not gonna have a Bluetooth communication between two mobile apps but at least for like between your computer most computers
will have bluetooth and if the Bluetooth is not present then it will fall back to the WebSockets and also the WebRTC which is something more one kind of prioritized than the WebSockets because it's more decentralized but I think like other devices even if you have an iPad and you have a point-of-sale system you're still more easily connected with Bluetooth if you go to a coffee shop then Wi-Fi because sometimes you may not have data in that country or the coffee shop doesn't have Wi-Fi but Bluetooth will be a good first use kay first transport to kind of rely on because I think most at least portable devices have bluetooth you are missioning Bluetooth alot so it's I think it I
agree with your points but I think we've are you planning to support Bluetooth beacons as well because for instance I can create my own on top of a wallet connect to create my app and start a Bluetooth beacon so this way I can for instance show my at least my at my tea new address so I think it would be something cool for I your idea to use bluetooth yeah the thing we have to consider is that there's this assumption within wallah connected there's always someone listening to that communication even if it's not something very private like having a transaction request there's
always like that attack vector where someone is snooping in and listening to all your activity that's not even on chain while we assume that on chain is public like all of these interactions that we have being broadcasted in the air or through the cloud you kind of need that like resistance from being sniffing so the QR code kind of provides that even with the scenario with Bluetooth you have like this exchange of information where you can encrypt data between two parties and have like a destination for the messages