Endgame (Wallet Edition) | Nitya Subramanian - Capsule
Ethereum Denver·Wed, Oct 9, 2024, 12:00 AM
Speaker
As we head into crypto's next act, there's a shakeup at every layer - from L2 scalability to apps and everything in between. This talk will explore where wallets may evolve -- from paper wallets to a possibility of wallets being a network and everything in between -- and what role wallets may play in crypto’s overall future APPLICATIONS FOR ETHDenver 2024: #YearOfTheSpork ARE OPEN APPLY NOW https://ethdenver.com/apply
Transcript
are we good to go whenever all right hi everyone uh I'm Nia uh I'm the founder of capsule and today we'll be talking about about the wallet and game so a bit about me um started my career in fintech um worked on the cell protocol on stablecoin um payments for uh quite some time and then we started capsule about a year and a half ago to really focus on solving this problem of uh self- custody in the context of really allowing um blockchain interaction to feel much more similar to interaction with other forms of of information or data on the internet so let's maybe start with why we're here um it's been over 15 years uh since the Bitcoin white paper and yet uh we're still here talking about Key Management um so why is this such a difficult problem um crypto is very different and blockchains as an interaction mechanism are very different in that um there are really two apps responsible for um most given transactions daps are tasked with reading data uh and proposing transactions and wallets are of course a separate application tasked with actually writing a transaction um getting confirmation from the user and propagating that along to the chain this is very different from web 2 of course um where in web 2 if I want to tweet like I did about um about being here uh I can see my my tweet um all the all the feed I can construct a tweet like compose it then I can go ahead and write it um and then it shows up on everyone else's feed and that only happened in one app um in contrast of course uh in web 3 uh we have two different apps um but why so the reason that um we we have wallets to begin with is because in order to actually sign a transaction you need to have access to the private Keys um and turns out there are a lot more places that we might want to propose a transaction from um than places where we're comfortable giving up access to our private Keys um and so this is a a big kind of difference in that um unlike web 2 in web 3 one wrong transaction can drain our wallet um and as a result there needs to be um this historic separation of concerns um between the places where we are deciding what we want to do and the places that are trusted enough um to actually perform those actions so by extension um wallets are uh extension no pun intended they're extensions on our browser um there are apps on our phone um wallets are products but they're also more broadly a platform for actually evaluating transactions so they're a a trusted environment where um we as users look to to say what am I about to sign is it safe and wallets do a lot more than that today as well um there's the user interface layer what are my balances switching chains there's the authentication layer um in the case of most wallets today this is just my private key um but maybe face ID is another mechanism um that most popular mobile wallets have and then there's of course the transaction related stuff so forming a transaction verifying it um presenting that information to the user collecting user consent um and then actually going ahead and propagating that confirmed transaction um through an RPC to a mempool and finally into a confirmed block so wallets have evolved quite a bit um at first as mentioned we had these Standalone wallets uh like metamask where their job was to be this almost trusted kernel um where my seed phrase is held and where um every transaction um gives me an additional place to say um I as a user explicitly consent to this happening um on my wallet of of course that has the problem I mentioned where we now need two apps to do anything um and so there have been two kind of follow-ups from that the next the next kind of stage was um wallets starting to build in application functionality so think the Unis swap wallet think um Robin Hood defi wallet um building up into um this space of helping people decide what to do or giving people ideas of what kinds of transactions they might want to do um and then actually streamlining that uh consent and transaction approval flow um within one app and so then the logical next place was okay well wallets are moving up into um into functionality why not have daps move down into wallet functionality um and so that's what's um led to the rise of embedded wallets where we can of course in the context of an app um use something like a social login or an email or a pass key to create a wallet that exists just in the context of that application with acts two and three um we streamlined this flow of going from I want to do something to that transaction is now on a chain in one app but we created a new problem instead of now having our one wallet that we take with us everywhere we now have dozens and dozens of wallets some of which are held in apps on our phone some of which are held in um kind of browser storage um but in all kinds of different environments and in general we've seen this uh sort of explosion of the number of different places where I now have to assign from and as a result the number of places where I hold assets um and then maybe building on that um act four which I'll be talking more about is the kind of bringing together of both of these Concepts so this notion of an embedded or kind of all-in one endtoend integrated app experience where interaction is something that happens in one app and one app Alone um but bringing that together with the composability and interoperability that um is really one of the main reasons to be leveraging um a blockchain infrastructure to begin with so if we think about the broader like endgame that's the name of this talk right the of the wallet user experience um we basically see that it's the fully abstracted ux um an interaction that we're used to with web 2 where we push buttons something happens we're not leaving our flow we're not um scared that something's going to drain our wallet um but along with the portability and verifiability of an onchain system um and specifically that means one a wallet that I can use in one application um but with the assets that I can access in other places um so think um my ens name maybe I minted that in in in an application or or bought it and now I'm using it to um to register for something else um and then the verifiability of maybe as a user I'm not inspecting Json anymore but I can still verify that the transaction that I wanted to happen has actually happened um and I can do that in an open and public way so the problems basically between where we're at now in terms of the status quo and and there um there's a couple of them the first as I mentioned um we have dozens of wallets and um it's nice maybe we don't have to manage the seed phrases for all of them but we do still have dozens of different places where um our assets our nfts Etc are all sitting um building on to that um account abstraction is kind of nit in the room it's been a big part of this story as we've seen the number of chains explode um and we've seen uh the complexity of um of transactions explode uh account abstraction is something where we're seeing that we'll have to deploy contracts to maybe every um chain and I'll talk a little bit about how um how that can work together with with MPC based signers as well and then there's this like very very foundational tradeoff of signing a transaction requiring access to a private key um this really bubbles down to if I want to sign a transaction in five places I need to have my private key in five places um and as we know that security Paradigm is um is challenging because one app that gets hacked um is just the end of that wallet's uh security everywhere uh and so this has really led us to a place where we do have some convenience that we've gotten from sharding Keys uh and and doing things like being able to sign from a browser sign from various environments but if we're not careful that can happen at the kind of detriment of having private Keys exposed in places where they weren't in um in this original kind of wallet D Paradigm so breaking this down um on the in terms of web to experience how do we achieve this um this is as I mentioned not needing two different apps to do a transaction um and this is really um we've made really big strides in this as an industry in the last um really year or so um with three different mechanisms the first is HSM um EA based wallets where you can have um a private key that's stored in uh a remote Hardware security module um and you can have the signing interface separated out from that so the key still in one place but you can initiate a transaction against it and have the signing occur within that module the second is Shamir secr sharing um what Shir secret sharing does is we generate a private key the way we did before but then we split it up into a few different shares um and then whenever we do need to sign a transaction we reconstruct the private key in that environment and sign with it there um as mentioned this can lead to some cases where we might have um a private key in a place where we might not want to so which has um some properties we might not always want um that's where distributed MPC comes in uh so with distrib MPC what we do instead is you um have two parties or end parties really um collaborate to generate a shared signature using zero knowledge and then or a shared secret and then um similarly there's a multi-round distributed signing protocol uh where these parties can collectively sign a message with that shared Secret in this case the private key what's really nice about this is that it prevents the need as I mentioned earlier for the private key to be in the same place that the signing is happening and therefore opens up a pretty large space on the design front of being able to sign transactions from lots of different places without also having the private key in lots of different places and then this can even be extended um to what I'll call programmable NPC and so because you don't need to have the private key in one place you can actually and um kind of insert things like evaluation logic or permissions or other kind of areas where every share um may not even have the same privileges so you can have something like a share that expires through key rotation um and uh generally speaking have um a notion of programmable um signing ability that is tied to individual shares um so what this really does um is open up a space where you can have many different applications or many different environments um interact with a wallet without actually giving every application the ability to drain a wallet um which is very important if this sounds familiar um this is a a notion that a lot of the account abstraction space has been talking about as well um through session keys so you can think about session Keys very similarly where you have um multiple different signers uh they could be MPC signers EA signers really anything um that connect to an account obstruction wallet and have some set of onchain permissions um as I mentioned with account abstraction um we have the multi-chain um fragmentation problem um MPC can help here too um really you can have an EA or NPC signer that connects to wallets across a range of different um different app chains rollups um and and chains in general and as a result even though you have um all of the wonderful um complexity that you can put on chain through a account abstraction you still have one signer that a user interacts with and therefore just one unified interface uh for interacting across any chain and so from here we kind of get to um get right back to where we were around what is this endgame it's our fully abstracted ux um the ease of web 2 being able to sign transactions from anywhere with the portability verifiability and security um considerations that we need to get the best of web 3 being able to pour our assets around and take them with us um and use kind of different protocols as building blocks um and we can achieve that through programmable MPC um in conjunction with a lot of these Concepts from account abstraction um and then on the right um this is really uh an example uh from from capsule and how we do this where we think about this in a more SSO or single assign on type of context where you can have applications with scoped access um you can uh validate or verify that access through distributed signing and um you can revoke and Grant permissions to apps without granting them the ability to access arbitrary uh information or arbitrary uh kind of execution ability on the wallet and so now I'll talk through maybe some of the like key features we have um so this is really um some features of what we might think of in terms of next set of wallets and I'll just talk through how we've we've been doing them at capsule so the first is easy user onboarding this is a non-negotiable um people are people are looking to interact with everything web3 has to offer they're not looking to kind of leave their context and then come back later um and and generally deal with drop off um Multi-Device um as mentioned people are on their phones people are on mobile people are on desktop maybe people are in telegram apps being able to sign transactions from anywhere that I can make an API call is another really important property in terms of being able to open up interaction with the blockchain to be as simple as interaction with an API and then um building on that a notion of multi-chain um so having that extend to not just one chain um or one even rollup ecosystem but across all of the different um chains that people might have activity on um I talked a little bit about programmable assigning um this is really the ability to give apps um permission to do some things on wallets without giving them a permission to do everything on a wallet portability Builds on this um by saying in addition to these multiple being able to interact with a given wallet I should be able to take that wallet with me um and use it across anywhere that I would I would want to access the assets that I just used in a given app and then the kind of last one is around the social login side of things and making it really easy for people to use the social logins that they love but making it um as close to impossible to compromise assets when you compromise the social login um we do this through a combination of social login and T Keys um there's a lot of different mechanisms for this but generally it's very important that we don't kind of in this process to make things easier reduce the security level and guarantees that we're giving on these wallets and then in general um feel like the hope for this is really moving towards a place where we have wallets that feel Universal in the same way that crypto is universal so whether it's our metam whether it's metamask um we launched a collaboration with them recently um where you can have a a metamask snap that has a capsule powered MPC that's the same embedded wallet that you used in your favorite dap um whether it's uh kind of easy modal like onboarding experiences um and whatever ecosystem they're across uh so generally just making it easy to create a wallet anywhere um and then take it anywhere that you might need to use those assets along the way that's really um all about um capsule and so uh we have a little bit of info there um and then more broadly um am super excited to talk to anyone who is in this space of thinking about where wallets are going MPC account abstraction um anything in that realm um and so these are some of my social handles um you can come find me later thank you do we have time for a question
Automatic transcript — names and jargon may be misspelled.