It’s Our Wallet, Let’s Build It Together With Christian Montoya
Ethereum Denver·Mon, Oct 9, 2023, 12:00 AM
Speaker
MetaMask Snaps makes the most popular wallet an open platform for innovation. Anyone can build their own features and integrate them into MetaMask, whether you are working on security solutions, privacy-preserving ZK technology, non-EVM layer 2 networks, or anything else you can think of. This talk will introduce the MetaMask Snaps platform, give examples of what people are building, and inspire you to develop your own snaps. Christian Montoya Senior Product Manager MetaMask Snaps https://twitter.com/MetaMaskDev
Transcript
okay so GM everyone I'm excited to be here today to be presenting metamask and metamask snaps my name is Christian Montoya like you said I'm the senior product manager for metamask snaps at consensus I have a lot to share with you today I had planned a two-hour talk but then I found out it's only 20 minutes so I think if I talk fast I can get through everything so let's Dive In today I'm going to be talking about the wallet as a public good your role in our future house naps changes everything and resources to get you started building with snaps and I'm going to be leaving you with those resources so you can get started after this conference so first of all the wallet has a public good let's talk about what that means I admit that when I was writing this presentation I had to look up the definition of a public good it turns out that it's not a measure of quality so my initial assumption was wrong so I had to ask the smartest entity I know to help me come up with a definition and apparently as the AI tells me well there's a lot here about benefits Society cannot be withheld yada yada Equitable clean air and water but what I want to focus on is the last sentence of this definition where it says the provision of public goods requires Collective action and cooperation as they are often too expensive or difficult for individuals to provide on their own we're going to save that one for later but for now let's talk about the wallet first of all is metamask a public good I think definitely it's self-custodial you're in charge of your metamask we don't control how you use it we don't track you we don't withhold access to it if you've ever received an email from metamask it wasn't from us that's just a phishing attempt because we don't collect your email so we don't know that and it's open source you can read all the underlying code you can understand how it works and you can even contribute to its development it's free to use and it's free for dap developers as well you can build adapt that interacts with the blockchain just by using our API or our SDK and this simple and highly accessible option has made metamask the tool of choice for dap developers and has made it possible for many of them to build dapps for free with no cost so what that means is that at the Nexus of dapps devices blockchains users developers and assets we have the wallet metamask when you connect when you sign in when you transact and with everything else that you do in the ecosystem the wallet is surface zero it's key to every experience that you have in web3 it's part of every single action that you take and so we all know metamask as something that you use to manage your accounts to manage your funds your assets and to interact with dapps and the blockchain and so on but as the ecosystem grows and with all the Innovation that is happening the use cases continue to expand metamask is now something that we use to manage our identity our sovereignty and our privacy it enables many different use cases including social media gaming and artistic expression so whether you want to be a d5d gen and farm food tokens or you fancy yourself to be an art collector who sometimes dumps on your followers with your alternate addresses or maybe you're a Bridger a Trader a Staker an art collector or a web3 gamer metamask is for you and what is a wallet anyway I have to bring this up because there's been a lot of talk this week about whether or not wallet is really a good term for what we're building and I know some people have suggested some Alternatives maybe we call it a passport or something else well to be completely honest no term is ever going to be perfect and a term doesn't have to be perfect for people to understand what it is it's kind of like when you use your credit card and you tap to pay you don't actually tap you kind of just wave it over the little symbol but you know what tap to pay means it means that you can pay without having to insert your credit card and wallet as a term is pretty good but when I talk about where we're going I often like to describe metamask to people as a companion it's there alongside you and it's there assisting you with everything that you're doing in web 3. it's kind of like a pet in an RPG that also has lots of inventory slots and maybe some cool armor and you can ride it around and so forth I'm getting carried away with that and there's a lot of unique Dynamics when you have more than 10 million users each month a lot of our users really just think of metamask as my metamask right they have funds in their metamask they say I have my funds in my metamask I claimed an nft with my metamask I voted in a dow with my Med Mast to them metamask is what they use and that's how they think of it so that's just a little side note but I want to get back on track so let's talk about your role in our future the wallet is the gateway to everything in web 3 and that unique role has allowed metamask to grow along with the ecosystem to give you an idea of this growth metamask actually had over 100 million users in 2022 and that's an amazing example of just how relevant web3 has become we have a long way to go but I think we have a lot to celebrate about what we've accomplished so far and I want to take a chance to celebrate this together because metamask is not built in a vacuum raise your hand I want to see some participation here okay raise your hand if you've ever contributed to protocols or standards Protocols are standards okay fine have you ever deployed a smart contract okay have you ever built a Dap that uses metamask or interacts with our apis submitted feedback or bug reports are contributed to our open source repositories taught people about crypto or onboarded anyone to web 3. complained about us on Twitter okay you have all played a part in our continued development and you deserve some credit for that even other wallets with unique features and user experiences have challenged us to improve our own product and that is something that we can celebrate together because ultimately we're all building something that will be better for users and enable them to do more in web 3. so now I want to talk about your role in our future and how we can build together and in order to do that I need to address some baggage that I think we all have working in the software industry and I say this from a personal experience because I've been working in software for more than 15 years and I often have to challenge my own biases and avoid falling into patterns that I've learned in some toxic environments so let's talk about Legacy software thinking and I call it this because I know in these events we often talk about web 2 versus web 3 web 2 versus web 3 and we give it too much credit because this is not just an upgrade from two to three okay we're talking about systems that we know are broken and harmful to users and we're building something that is a complete Paradigm Shift right so I'm talking about Legacy software systems and how we can shift to a better mindset for web3 so let's talk about what these Legacy mindsets look like first of all we have competition we're all competing for total addressable Market everyone wants Tam and they want all of it right we have uh value extraction how can I take a cut of whatever people are doing the value they're creating how can I siphon some of the value that's flowing through my software we have monopolization software's eating the world and we're eating each other we have walled Gardens do you want to reach these users you have to pay my taxes you have to pay my tolls you have to jump through my hoops and you're subject to my policies which are often capricious and unfair and we have Winner Takes all okay this is the Legacy mindset that a lot of us are used to and we still operate in often today so let's talk about a new way of thinking where before we had competition now we have collaboration where before we had value extraction we have value creation and what we're doing we create value every day instead of monopolization we have public goods very topical very relevant fits this talk and instead of Walled Gardens we have open platforms which are way more fun as a developer I would much rather build on an open platform than build in a Walled Garden where I may be subject to whoever's controlling that Garden might design might decide to ban me at some point and instead of Winner Takes all we have we win together so let's shift our thinking and think about what is the way forward for our ecosystem I will tell you what will not work okay each team building one product one team per product many different products competing with each other for the same users competing with each other on features and so forth and a fragmented user experience fragmented identity management fragmented asset management and dap compatibility and fragmented protocols and so on we all know that fragmentation is bad okay this is something that I learned working with Windows 95 okay and I'm aging myself with this reference but we know that fragmentation is bad we know that it's not good for users and I think that what we need to do is defragment web3 okay so can we do that together let's do that okay so let's talk about how we make a public good even gooder even better let's talk about how we make a public rate okay in order to do that let's first talk about the metamask SDK the metamask SDK is making metamask available everywhere and so you already know our dap API right and you know that you can connect to metamask from websites but with the SDK we're now taking metamask to a lot of new environments so if you're building a native mobile app a desktop application if you're building a game in the unity game engine you can now connect to metamask in a seamless way and you can facilitate blockchain interactions um in ways that were never possible before so tell your friends tell your family tell anyone who hates JavaScript that you can now connect to metamask with the metamask SDK and you can bring surface zero to your users in entirely new experiences so I have an example here it might not show up let's see this is connecting to metamask from an IOS app and you can see it's going to metamask you know the flip back and forth and this is actually an iOS example app here and it's also um yeah so you can see how it's getting so this is the example IOS app and then these are the screens in metamask this is all happening in Native iOS okay this is in JavaScript this is native iOS code and likewise I have here let me see how do I get out of this okay this is a unity game I'm just going to show you the beginning of this connection and I think you should see metamask pop up on the left let's see a little further okay so there's a metamask mobile application connecting from a Unity engine game on the desktop and you can see how it's syncing here and you can see how it's going through both the connection and sign and flow and this is all happening without JavaScript this is happening in unity with our SDK all right so where was I so next I want to talk about um how we can do more we're always getting people who are asking us how can we add new features to metamask what if metamask could do this or that right what if I could put my Bitcoin in my metamask what if I could use two-factor authentication and use Google Authenticator in order to uh add two-factor authentication to my metamask accounts what if I could you know get notifications about things that are happening on chain and send messages to other wallets well if we were to try to do everything ourselves that wouldn't be possible okay there's way too much that we could accomplish just as one team so if we cannot possibly build everything that the ecosystem needs why not give developers the power to build those features this is the idea behind metamask snaps metamask is now an open platform for innovation the snaps API is a trustless execution environment that runs at JavaScript applications inside of metamask and these applications are protected by a permissions model each snap is a program that's developed by you and it runs securely in our sandboxed environment and an installation the snap will request permissions from the user and this gives the users consent and to be able to understand what it is that they're installing and how it will work and this gives you features that go Way Beyond what you can do with dabs today and these are applications that live inside of metamask they're portable and then other dapps can interact with these snaps as well so this is an example of what an a user sees when they install a snap and you can see where it's coming from the permissions that it is requesting the version information and in this case this snap is going to be doing just transaction decoding which is very useful for users and it's going to have access to the internet so in this way the user understands everything that it's going to do and so at this point you might be wondering okay what can you do with snaps what are all the features that this makes possible so there's a wide range of use cases and this is not a complete list but to give you some examples you can add support for other blockchain protocols you can add support for evm extensions or things that are not supported by the base evm wallets today um you can enable privacy you can use ZK proofs you can enable ZK technology inside of metamask you can enable identity use cases such as decentralized identity you can store verifiable credentials inside the wallet that the user takes with them securely you can enable all sorts of security features such as transaction decoding monitoring accounts on behalf of user and notifying them if something is happening to their accounts you can even do delegation from within a snap and you can do messaging you can do notifications and you can actually reach users directly into the wallet rather than asking them for email addresses right which they don't necessarily want to provide you can reach them at surface zero in the interface that they use every day and so you might be wondering what are all the API interfaces that make this possible you are getting all of your questions answered today these are the apis that we have currently and we're definitely adding more over time you can actually display custom dialogues which can be used for transaction flows and signatures and so forth prompts to collect information from users you can notify them right inside of metamask or actually adding a notifications interface and you can notify into the wallet you can store and manage data that's encrypted by default and it's for that user you can control non-evm accounts and assets you can actually derive for different uh paths different curves and so forth you can derive arbitrary entropy you can do transaction decoding and populate the pre-transaction window with that information and you can even schedule actions with cron jobs which means that you can run actions even when the user is not interacting with their wallet and so how this works very simple it's an npm package JavaScript source code bundled into a single single file published to npm and we provide tons of tools that make this possible so very simple picture here you put it on mpmjs.io you have a website they go to your website they connect it installs the snap metamask will ask them if they want to install the snap and they can do that and then they'll have a settings screen like this within metamask that shows the snaps that they've installed in this case I have a file coin snap and a starknet snap and then when I go to other dapps they can use those snaps right so now all of these other dabs can actually interact with starknet or filecoin or any of the other features that these snaps provide so I'm going to be showing you some examples I think the first one here I have is a video let me see if I can get this working Stark net is really interesting because it's an ethereum layer too but it is not evm compatible right so it seems pretty ridiculous to say that we have an ethereum wallet and yet it doesn't support certain layer 2 networks because they have a different address format or a different language right but we enable starknet through this snap and this is actually user interacting with a starknet Dap and they're actually able to send ethereum on starknet with the snap they can send they can receive it actually deploys a smart contract account for them and so it facilitates all of that through metamask and this is a custom confirmation that is generated by the snap that shows them all the information allows them to do transactions I think at this time I have some other examples okay I'm gonna do a little bit of uh everybody's talking about account abstraction there was a hackathon in India and there was a snap that was built in a couple of days and it won the award from the ethereum foundation for the best implementation of account abstraction okay and this is a snap this was built in a few days by a t by a small team and to show you an example of what it does I'm gonna go like this yes so this is using uh metamask it's built on polygon and so you can see they're using polygon here and then it's actually gonna connect and make accounts so it shows the eoa and it shows an abstract account which is a smart contract and it allows the user to manage that smart contract with their eoa with metamask so the snap facilitates the user operations to then be able to sign on the smart contract account with metamask and so you're going to see a custom confirmation coming from the snap and then when they approve that you're going to see the standard metamask signature request that you know and this is facilitating that signature from that eoa on that smart wallet on that smart contract and then all of that information is then fed into this dap from that snap you can build account abstraction implementations today you don't have to go through all of the effort the rigor of deploying your own extension or your own mobile app you can do this within snaps and yes here's some sample code okay too technical I said this was non-technical let's get out of here all right what else do I have let me see if I can do this okay this is a uh this is a scam this is a phishing contract I'm going to show you something cool here oh no let me see I want to go to this one okay this is a fishing contract right when you interact with a fishing contract metamask doesn't tell you very much about what's going on okay I know the transaction might fail but I don't know why okay this is very oh this is very opaque this is not clear but I'm going to install a snap that can help me with that so connect and install you see the permission request it's going to connect to the snap and then you're going to see an installation request and it tells me the different things that it does this one will actually read from the ethereum blockchain because it's using the MobyMax Fisher registry which is a contract that is deployed on ethereum and now I have it installed well what can I do let's do this action again let's see what happens oh wait a second what is that there's a new tab what does the new tab say beware this address has been reported for fishing in the Moby Mass Fisher registry you should not interact with this address thank you snap you have saved me from losing money and losing all of my financial sovereignty in web 3 that's amazing thank you for clapping I built this snap I really feel appreciated that you like that okay cool cool okay I think I'm done with my um my examples here I'm gonna go back to my slides getting too worked up okay let's see so the wallet is now an open platform snaps makes a new world of innovation possible and you can build snaps today using our Canary build of metamask which is called flask if you go to metamask.
io flask you can download flask and start building your snaps today and we provide all these tools and we're going to be building bringing snaps to the extension and mobile very soon so key takeaways metamask snaps allows anyone to add new features to metamask in a way that is secure decentralized and keeps users in control you own your snap you operate it how you want you choose how you want to monetize it or how you want to engage with your users and now is the time to build snaps you can be ready for our launch to the metamask extension in Q3 of this year so how do you get started here we go this is a QR code that will take you to my getting started guide it has all of our tools it has plenty of examples it has videos that you can follow tutorials built by amazing developer relations team go to metamask.io snaps go to slash flash to install it that's the guide you can check out the starknet step and the mobile apps mobile snap that I showed you today make sure to follow metamask Dev on Twitter thank you and this is how you can get in touch with me all right thanks very much
Automatic transcript — names and jargon may be misspelled.