Dan Finlay: MetaMask – The ETH Based Wallet for Swaps and dApps #446
2 Jun 2022 · 1:09:03
Epicenter hosts Friederike Ernst and Felix Lutsch talk with Dan Finlay, founder and group manager at MetaMask, about building Ethereum's widely used self-custodial wallet. They discuss MetaMask's approach to security, its move from a browser extension to a mobile app, the future of seed phrases, and how account abstraction and MetaMask Snaps are changing what an externally owned account can do.
Speakers
Topics
Transcript
welcome to epicenter the show which talks about the technologies projects and people driving decentralization and the blockchain revolution i'm federica ant and i'm here with special guest co-host felix looch today we're speaking with dan finlay who is the founder and group manager of metamask but before we talk with dan about metamask um let me tell you about our sponsors this week segwallet is your new favorite multi-chain mobile wallet that puts the power of web web 3 at your fingertips in just a few tabs you can stake and manage your assets on over 22 built-in protocols including all major evms layer twos and non-evms like cosmos solana near and more just recently they've integrated liquid avax liquid solana and matic staking and
with more integrations being added every few weeks jump into the discord to let them know what you'd like to see on their roadmap stick while it also has a multi-chain nft nft support so you can view all of the nfts you have in one place and you can download it on the ios store or on android and and also on the internet at stake wallet.fi steak is spelled like the meat so s-t-e-a-k our other sponsor today is cow swap so taxes are great but they're vulnerable to problems like mev fail transactions and high gas costs cowshop tackles these issues head on and offers
a new kind of trading experience built by nosus kauswap is a meta dex aggregator that's right it's a dax aggregate aggregator it fights mev by matching overlapping orders directly if no coincidences of oneness is found that's where the cow comes from trades are settled on a variety of underlying on-chain amms depending on which pool offers the best price give cowswap a try and enjoy parks like no gas fees paid for failed transactions optimized transaction management for multi-sig and daos as well as some other fun entertainment surprises head over to cowswap.exchange and start swapping today dan it's an absolute pleasure to have you on yeah uh thanks so much for having me
i've been a fan of epicenter for so long i'm just delighted to be here dan so we go way back to uh to your you know to my consensus days so tell us about yourself and how you got into the blockchain universe ah well i i guess i've i'll try to keep it brief but with a little taste of why it caught my eye you know like sure i got paid for in bitcoin for an odd job uh one time and that was cool but i lost it in mount gox and it didn't really catch my attention i mean i saw the slashdot article when it first came out and i thought it'd be cool i did not learn how it worked i i went to the faucet i have no idea how much that
would have been worth i definitely don't have that anymore um and then uh when i was working at apple with my friend uh kumavis um uh he went to a meet-up and and started talking to uh well a friend of his uh of ours uh dominic tarr who is the creator of scuttlebutt um we'd met him through the node uh the node.js community and he was really into decentralization you know he made scuttle but i remember attending a workshop he made on making peer-to-peer chat rooms and uh he he pointed out ethereum to kumavs and then kumamos went to a meetup with vitalik and then he came to me and it uh it sparked my imagination you know it was like it was all he wanted to talk about at lunch and i was there for it
and so we we were just like riffing on it there were a few applications i had tried to make in the past that this seemed suited to so things like a debate system where you could uh figure out how trustworthy a claim was or a voting system where you could allocate funds or micro transactions and like these are all things where it was like oh finally money in the internet this is great we started trying to make a thing of course there was no account manager yet so we made metamask and you know it built in all of our prior assumptions and and i think that a lot of the blockchain space today is kind of built out of everybody's initial impression of what this new alien technology is made out of and um and we we made our best shot at it it was good
enough to make a lot of stuff and that's kind of where we are now we've been iterating and fine-tuning and improving and uh for a few years now um i think we validated it enough that you know obviously now there's a lot of big players entering the space and you know like well-funded thing what yesterday robin hood announced they're going to have a web 3 something uh you know all that's very interesting um it's it's very funny for me where i feel like we've done so much wrong and we have so much to fix for to have people copying the current state of things i feel like all i see is is ways to improve and and i feel like everybody's kind of still just doing
impressions of web 2. you know it's like we want to have kind of an account model right or like and money or something and i think i think there's a lot of kind of um well a lot of uncertainty about what it's supposed to look like eventually to interact with dapps um and i think that we've kind of finally figured out patterns that really work and we just haven't shipped them all yet and we're like in that process so i i think we've like you know just earned in this wonderful wealth of experience and we've built up a really amazing team recently we brought the my crypto team uh in and you know they're another one of the wallet teams that just has consistently seemed to just have their their finger on the pulse of like user actual
needs you know understanding like the gravity of the situation and how how kind of carefully we need to move with uh changes and things um so that yeah sorry there it is in a nutshell uh uh that's pretty much how i got into it and how i got to where i am now yeah awesome that sounds cool i guess we can go a little bit into that right as you just mentioned you said you basically weren't hired directly to build a wallet but you kind of figured it out with within consensus and now maybe you can tell us a little bit about how how that journey was uh from building metamask into what it is today um and and how maybe a bit about the team how it grew
yeah uh kumavs had started metamask even outside of consensus and uh so when when he got hired at consensus suddenly he had the capacity to offer jobs to people and so i was like you know i i was kind of uh early in my tech career so i was i was a uh let's say not as eager to jump out and start making my first startup as he was but i joined him as soon as consensus was funding the project and i was really excited to and um and yeah the the consensus was this wonderful just kind of chaotic incubator at the early stage there's like i don't know it must have been hundreds of different experiments getting uh validated and tried out there and there was a really exciting energy you know
surely there were a lot of projects getting built um before the kind of platform was ready to really support it i think i think back then it was very normal to just kind of build your application as if the blockchain was going to scale or did scale already so you just treat the solidity contract like it was a rails back end and keep everything on the chain and i think i think that over time people have had the scalability issue hammered into their heads and have a lot of different ideas about how it needs to get addressed and um and yeah that's just one of the one of the ways that we're continuing to kind of grow and evolve i was thinking back earlier on how i first used metamask when it came out um and kind of we've all gotten so used to
living with browser extension wallets right um so by zooming out um i kind of i remember um how dodgy it felt back then to kind of interact with the browser extension for something that um that is so obviously a value transaction so how did you encompass make that decision to kind of build this as a browser extension rather than a standalone application yeah so when we first started building there the mist wallet browser was already kind of occupying the standalone installer space and so they
were they were also doing a full node thing so you'd install this uh this executable you'd get a browser and it would sync the blockchain and your computer would heat up and you'd you know wait i think it only took like you know 15 to 30 minutes to sink back then but you know still it was a kind of weird experience every time you open your laptop kind of heat it up or whatever and uh one of the kind of founding principles for metamask was we want to make it easy to get in right so we're trying to like how do we smooth the adoption path and what are the assumptions that we can kind of weaken and and that are like maybe okay to compromise on for first-time users and the first of which was uh using infuria having a hosted kind of trusted connection for the
blockchain to start that was a very controversial uh take at the time and you know there are still some people that feel very intently that that's like you know fundamentally wrong and broken and you know i would love to see long-term more uh blockchains that are lightweight enough to run on consumer hardware but um that's not eth1 uh eth1 is just kind of impractical to ask users like especially when they're first getting started right when your first interaction with the new dap is somebody saying hey here's a way to sell an nft or something right if the barrier is first install this you know 20 gigabyte thing on your hard drive and then you can look at a picture that's that's a very hard sell and so kumas and i were both we're both
web developers we both had a real love for the kind of permissionlessness of the web the fact that you can drop a link into any text chat that you have with someone completely between any channels it could be you know an sms it could be an email it doesn't matter where you take this magic little link and now suddenly you're in somebody else's world like that was for us one of our design goals we're like you should be able to click a link to one and go to it and um and yeah so so that that was kind of a guiding principle to start and uh kamava spent um a you know a first initial pass a good portion of a first year trying to make the whole wallet kind of light browser work entirely without an extension like working within
an iframe within the browser basically building a browser in the browser which is uh you know an impressive uh thing to try and then at a certain point it was either me or nick dodson was just like hey wouldn't it save a little time if we just tried making a web extension and he was like yeah and and it like he took what he'd done and you know in like uh three days or something he'd put it into a web extension and then i was like all right let's get this ready for a hackathon because um there's a south by southwest was coming up and um so we just got it good enough to hack on uh just to play with and there's this music hackathon had a whole bunch of music creators and hackers who'd never heard of blockchain before it was just a music hackathon not a blockchain
hackathon and we started telling them you know hey what do you think you could do if you had money in your music ecosystem you know i was we were touring with ujo at the time and um you know just you know a lot of ideas were things like oh the micro transactions of what if you make a beat and then you get paid when people mix it into beats and you know things like that and you know artists know artists know what it's like to not get your work valued adequately and and yet they also know the value of their audience and more and more with the internet with kickstarter and you know patreon and things like that people know having access to your audience is powerful and so i think it was it was a great event and um and yeah kind of from there it
was high friction a lot of people were skeptical a lot of people you know other hackathon hosts there were like uh uh you know i'm gonna still recommend they maybe build a wall into their application you know because it was just too weird at that time but you know that's we've seen culture shift a few times during our time here at metamask and um yeah why an extension wouldn't it be more stable as a as a desktop executable um i mean i i totally believe that long term more of this stuff should be lower and lower level you know you want the maximum security you want open hardware you want hardware wallets you want the maximum guarantees you can get the browser really was a decision because it's it's an on-ramp it's a first experience it's about being able to give somebody just that link that drops them
in as quickly as possible and and really i i think that we can do we can do much better even than our current thing that the current norm of making somebody get a wallet and then log in and select an account and get some eth all before they can like like a post or something i think i think that that's a bad design pattern and i think that we can do better as a community for that but um uh yeah yeah that's uh kind of getting ahead of myself yeah we definitely want to like hear more about where you think that should be going i guess right as you said you uh kind of were part of making these design patterns that are now there like sign in with your wallet things like that right in in this hackathon it seems that
wasn't even a thing yet and people didn't really know how how that interaction would work i guess it's also segway to like metamask it's not just a browser extension right there's also metamask mobile which which i guess is has been a big trend to get like more people on board right people are used to use their phone for their banking apps or wallets or in general to use their phone um and then obviously you made the choice to also build metamask mobile can you talk a little bit about where that is at how this decision was made kind of how people use it today yeah i think mobile's one of the easiest decisions in the world because uh you know you just look at the the numbers uh most everybody just about has a phone
and not everybody has a computer and you're like okay well there you go mobile's therefore has to be the future now i think there's some real advantages for the desktop which is that in particular everything's getting programmed on a desktop so so if you're the developer tool then you're gonna you're gonna make sure the developer is gonna make sure that you're compatible with them so so the extension has this kind of developer experience advantage and i think that there's there's kind of an uphill battle to make sure that uh that web3 sites kind of work as well on mobile and you know we've got a ways to go on that developer tooling but the goal was always to basically say you know same promise as the web you know you make a website and it works on desktop or mobile that shouldn't matter um you know
we're trying to build an internet of value you should be able to take value wherever you go you know it's not just confined to when you're sitting at your computer it's you know it's a dynamic thing you should be able to make any agreement anywhere you want um you know within your own terms you know maybe you you don't carry around the you know carry around your uh grandmother's pearls on the when you're going out but you know you you bring some spending cash you know things like that yeah absolutely can you give us um some idea um how many people use metamask how what kind of values are stored in metamask what kind of use cases it's actually used for by people um i'm pretty i'm i'm i don't usually say this i'm pretty sure
like 98 of people who listen to this podcast have first-hand experience with metamask but i think kind of hearing the stats are still um warranted yeah so the latest number i heard is that we finally got to around 35 million uh monthly active users that's somebody who in the month has uh interacted with an app so either they connected or they approved a transaction or a signature or something and the use cases are actually quite varied um you know depending on your corner of the crypto sphere you might be in a bubble and you might think that there's only one major use case um you know i know that the nft community sees itself often has like the kind of one thing that's going on the defy community
definitely had a period of seeing itself as the possible main use case um gaming is also for many people the only use that they have for metamask were web 3. and and then there's meanwhile there's the whole dial ecosystem people you know figuring out how to issue grants and fundraise collectively um i i think these are all really cool in different ways i think they all have some common themes of kind of giving people ownership of digital rights um and i do kind of think of a wallet as one of these computer-like things that has to be dynamic it has to fit your needs it can't be well i mean don't get me wrong it can be custom tailored to a use case so um some
some wallets you know maybe ones that you might have mentioned in the intro might be giving a very good experience around something like staking for example and for somebody who wants to get yield on staking that's great and you know what uh having lots of staking options really quickly is a really reasonable niche for a wallet to occupy and there are other wallets that are specialized at gaming and there's other wallets that are specialized at nfts um i think partly just for historical reasons because metamask kind of was the first thing that just made like anything possible we're kind of in this position where we we still kind of serve everybody and so we we kind of are in a position where by necessity partly and then also because it's an interesting position continue to pursue being a general purpose wallet um
and and you know frankly i i wouldn't have it any other way i think it's a really really interesting problem i've come to know the the the challenges and solutions that are available to this uh kind of niche i think they're kind of essential to safe computing in general i think the problems that we're taking on as a wallet are actually pretty much the same problems that you have keeping your computer safe the reason people uh get phished and hacked on the web it's not because there's cryptocurrency it's because there's cryptocurrency and people don't know how to keep computers safe like there's kind of two problems here and if cryptocurrency had evolved in an environment where people knew how to keep computers safe i don't think we would have this problem but i don't
think that history ever pushed people to secure their computers this hard before and i think that we're kind of seeing oh okay we've had personal computers for you know 30 some odd years but the truth is they're kind of badly secured kind of just good enough we have to invalidate our passwords every two days just to kind of have a chance at not getting identity thieved and i think it's for me it's it's forced me to step back and say hey wait a minute like computers themselves are kind of like alien technology we're kind of just a cargo cult around computers saying like what are these good for can we build society on them you know but i don't think we've answered fundamental questions about computers yet i don't think people but
but i think that the patterns are emerging so things like permission systems things like having good sandboxing i think those are like the beginnings of like oh keeping untrusted things at arm's length and i think that those patterns that you see you know android's got a pretty good sandbox and permissions model i think that's very similar to what we end up being in the internet of value and so we're kind of we're rediscovering kind of the same principles we're saying what does it mean to have some digital rights or responsibilities and then selectively uh kind of wire them together not just with your printer in your disk drive but now with like the rest of the world's computing and uh doing that in a coherent and safe way is like
it's like the whole it's it's a very big fun interesting problem for for computing in general wow yeah that's that goes super deep and i know you are also kind of part of this agori community a little bit where this is this kind of related right the object-based capabilities and and kind of trying to keep things secure like that on the smart contract level i guess i'm i'm also wondering where is the wallet part in that is there are there certain areas where the wallet plays a role or is it really just on the contract level that you you kind of shrink the securities the surface or are there like specific things on the wallet side that can be improved in your opinion yeah yeah i the the general ideas that
i'm describing about making computer systems where you can reason about how to keep them secure those are very those are problems that i learned the igorik folk had been thinking about for a long time and i think some of the richest literature on that topic is coming out of them and their community and kind of adjacent groups to them and and i i've really adored my time like getting to know them and and getting to collaborate with them on some some projects we've been uh funding them on a grant we're due to renew them um but uh for their uh secure javascript or hardened js project which we're using to secure our supply chain and for building a portion of our uh our extensibility system snaps and so um sorry coming back to
uh yeah yeah sorry so you're saying is that related to a gorick yes absolutely igorik i think has a lot of experience building uh distributed systems they kind of tend to draw people into their community who hit similar problems saying like oh i tried to build an open multiplayer world and i realized it's hard to make that safe and then they end up coming to kind of similar consistent conclusions um and so yeah i think that there's some good uh good uh camaraderie there um i kind of was avoiding the the jargon i i'm practicing avoiding jargon as much as i can if i say object capabilities you might say okay what i don't care or something you know and so but but you
know if i say uh you know make make it understandable when you're taking risks you know that's basically the exact same uh thing um the idea of the object is that an object is this abstract thing you own it you know it's like a token or an nft as an object and how do you basically maximally allow a user to interact with that and do things with it um you know the norm on blockchains today is one person has something if you want to do something if you want to stake it you know you put it in that contract you know there are allowances allowances start to resemble sharing capabilities capabilities are kind of like extension cords where you're like you plug a port from one thing into
another um today the norm for smart contracts everything has its own ports you know erc20 has one allowance standard uh erc 721 has another allowance standard erc 1155 the the multi-token standard that board apes uses it has another allowance standard and this one is not granular at all when you give someone permission to you to withdraw one board ape you allow them to take all of your board apes and this is the crux of a whole phishing scam um this morning uh seth green uh you know i know this will air like a week from now seth green came out and uh he apparently was fished through an allowance scam just like this you know they were able to ask him to approve one
uh you know there's there's a there's a lot of problems that kind of combine to that there's there's a problem of sourcing the metadata to represent this is one of your things you care about this isn't just a random smart contract and then there's a problem of the granularity of the permission like you shouldn't you know issue to all of them it should maybe just be the one so yeah yeah uh the the basic theory is how do you how do you give people good authority over the things they have and have access to and yet give them the ability to compose them right so safety and composability we don't want to tie people's hands and say you're safe you know we want to say you know okay you can do whatever you want but like here's here's here's how to stay safe
here's here's the lines around the the dangerous bits and you know do what you're willing you know do what you want you've touched on um a multitude of different topics and there's a lot to unpack and maybe let's start at the very beginning of setting up a wallet so basically you set up a wallet um and then there's the seed phrase the 12 words or 16 words or whatever so um i mean we've kind of we we've gotten used to that right so basically um we we know it's coming but zooming out again this seems like a terrible user experience right and um so maybe let's let's talk about um where you see
um the future of seed phrases do you see a future of seed phrases uh i guess for legacy purposes uh you know like you you might want to be able to back up some old things that are not transferable although you know if i have my way the uh ethereum blockchain will adopt some eips that allow you to uh transfer account holder ship to other accounts and so you should be able to migrate them then too but uh yeah so maybe but but i i think we should be able to move off them as much as possible um i think it's it's nice that people have the option to be in total custodial control of their wallets it's even critical that people have the
option of keeping things totally cold being able to send assets to something that is unhackable entirely is like it's great it's it's a proof that this is a decentralized system that nobody can take your asset from you that you can be as safe as you can keep anything um and that's that's all great uh the problem is is that today okay you get this one secret and it has all your stuff you know and okay so if you're very advanced and secure you might keep some on a hardware wallet but then hardware wallets they innovate even slower than the software wallets so the things that you can do the transactions you can review they're fewer and fewer and so you're trading
off the usability of the system for security and so that kind of comes back to okay tying your hands and saying that you're safer um i i think that we can do better than that ideally you know you'd go to a site you could use it a bit do some things and then if there was at some point something you cared about there you could have the option to back it up in any number of ways that are you know kind of risk tolerant to you you could say you know do you have you know if you've got a hard drive that's good fine if you trust your disk good you know if you want to use a hardware wallet great you know if if you're cool with uh putting it on your mobile phone using
your mobile phone as a signer that's more solid for most people if you've got an old phone that you don't use that's a an upgrade also and it's viable and if you want to wire together a multi-sig you know for some higher stakes things that can make sense and then i think that kind of the most critically missing piece that i think nobody's looking at right now just to drop a little bit of uh alpha or whatever is is the allowing your different devices to be delegated just the permission that they need to operate there's been a little bit of this from contract accounts like argent who have self-assigned daily spending limits but those self-assigned limits are still
from an account that holds everything and so if it gets compromised you still lose everything i want to see a world where you could have a cold wallet whose assets you delegate to a hardware wallet in some limited capacity whose assets you could then delegate to your hot wallet in some limited capacity you know and so you could have you could have any number of accounts on any number of assets and you don't really think about them as accounts and assets you think of them as accounts or sorry as assets and each asset may actually have a secret key behind it but you shouldn't have to reason about that you should just know i've got a bunch of stuff on this cold wallet or on this hardware wallet and i'm setting up a new device so what do i want that device to have
you know do i want it to be able to give away my board ape no then don't give it permission to simple as that you know that's the that's the like kind of object capability thing it's just like consent like no permission without consent right so you should be able to have cold stuff but then you should be able to delegate limited permissions you say this is going to be my i'm going to be voting on the ens now from this i don't want to sell the tokens from this i want to vote so you should be able to provision just the permissions you want so you should be able to say i want voting rights on my hop machine i don't and and now your hot machine would be literally unhackable for anything other than that
purpose and if it was ever hacked the worst thing that could happen is some bad votes get cast in your name and then you could revoke them from the uh initial granting authority device but that sounds like um i mean that sounds like more private keys not fewer right so basically by having more granular permission settings um you would actually um have to you know hold and control way more private keys than you currently i mean so basically there are some people with stupid amounts of money on metamasks right so basically you see them at conferences and they show you something and you go like okay seriously you you this this this is uh yeah don't tell me
yeah so i know that ages ago at consensus there was this project that kind of looked at like this in game um location thing as as a seed phrase or do you think seed phrases will ever um become more human memorable than they currently are or do you think we will just have to rely um uh on backup mechanisms and guardians and social recovery mechanisms where do you think it's going well i mean kind of like i said at one point i think people will be able to choose the ways that are uh preferable to them so if you want to do a brain
wallet you should be able to delegate you know you like you could memorize the right to withdraw all of your funds right and and then if you can memorize the key that controls that then you can back up the message that imbues that key uh on a public website so everyone could see oh there's a key out there that could you know withdraw all of your funds and send them to the bahamas or whatever um and uh and so so i don't see any problem with people having the option of having a memorized key and okay so to get away from seed phrases well if somebody wants a seed phrase if somebody wants to have 12 words that they back up maybe because they have you know there's so many crypto steals sitting around or something um i think
it's fine for that to be an option but i think a safer norm is that usually devices generate keys in a secure enclave and those keys never leave that device and so usually when you're deploying to a new device you're deploying to keys that cannot be extracted and so the only way to extract value from those is through signatures and operations with those keys which while it should be rendering in a human readable way and so you know if if all is done correctly it's harder to fish from uh wallets that are doing that because there's not just one secret that's maybe harder to reason about to steal instead you have to get a user to hopefully perform an active consent that they've they've been habituated to recognize um before you
can uh take from them so yeah i guess i guess in short i think i think devices should have their own keys as much as possible you should still be able to to delegate capabilities to other keys at the end of the day this is all built on cryptography right you're not going to get away from there being private keys somewhere i think that we can make them less portable i think some people will still probably choose to back up to seed phrases but those will probably be pro users who you know just know what they're doing very well the average user is probably going to prefer to have something maybe like social recovery or maybe maybe a custodial backup with just the you know limited allowance and fraud protection just like banks do today except open-ended turing complete and able to
connect to smart contracts it's funny so basically had we recorded this episode two years ago um i think everyone would assume you're making the case for smart contract while it's here right um so tell us about can you talk about how the how the um thinking has shifted from smart contract wallets to eoas with enhanced capabilities oh um i think the line is a little blurry um so so i'm talking about just the general principle that things should be delegatable and actually so so i'll share i've uh i've been working on a little solidity library to kind of demonstrate what i've been what i'm
talking about um it's a mix-in that any solidity library can inherit from called delegatable and when a when a contract has that it gets a generic delegation interface and so now they can delegate any permission on with any restrictions to any other key and so you can write these delegations to other keys um i think that composes well with smart contract wallets a smart contract wallet is good if you want to get a group of signers to agree on something but then a delegation is good for if you want a one agent which could be a group of signers to then kind of permission another agent which could be either a key or another group of signers with some limited authority so you could have a dow that says okay
well we need you to go shopping so here's a here's an allowance right we don't need to approve the budget request you know can you imagine going to the grocery store and then scanning the checkout line and then waiting for your you know your token holders to vote like no no of course not you need permission to do things to interact in a dynamic world and so i think that i think that dows multi-sigs um all these higher security constructs are going to i think by necessity if they want to be dynamic and composable they're going to need to embrace systems where sometimes they broaden uh the reach of their you know the broaden the the inclusion of control over their digital assets um
i think this is just normal essential composability and so i think it works well together i think that more things should use uh yeah smart contract logic to assign authority and ideally every eoa would have access to this stuff and actually one of the reasons i'm a proponent for eip 3074 is it would allow every eoa to assign a smart contract to be able to act on its account and so if you you had 3074 every account could assign um off-chain delegation methods for anything it could do and so you could you almost you wouldn't need allowance methods on contracts anymore and this is basically what the delegatable mixin does
you don't have to write allowance methods anymore because it provides a method for anyone to sign these off-chain messages that can imbue its recipient with any arbitrary power they it uses a smart contract as its enforcer so yeah to me it's just another tool in the kind of i guess it's a tool for composability i see the smart contract wallet is largely a tool for adding restrictions on controlling assets and i think this is kind of a counterbalance where we're saying okay we've learned how to keep things tighter and tighter now you need a multi-sig now you need a token vote um but how do you how do you now how do you relax a little bit once you've built up trust in your community how do you um yeah uh authorize or empower more people
to act on your behalf yeah i think that that's super interesting i guess maybe to tie it back a bit to that board ape story where you get permission for like transferring out all the board apes in this scenario that you're describing if i delegate this to another address like do i have to kind of specify which contracts exactly uh can it interact with like how how does that look in practice is there some standard needed that it says like you know only these contracts like how how will that actually look or do you always have to give like complete control i guess that's that's kind of where we're heading like how do you yeah make that possible so there are more um
fences basically to to choose from where you want to put them yeah so the the delegatable system by default the delegation method can imbue the recipient with all of your authority on that contract but it has this caveat system where you can add as many caveats as you want to a delegation and those caveats can restrict it in any way you can imagine so um i i was making a proof of concept for detecting fissures and reporting fissures i want to make a web of trust i want to permission as many people to detect fissures and report them as possible right it's obviously a high it's a high value target for something like this and um so so uh what i realized is okay the fishing registry is ownable but i want
to share the ability to report fishers not the ability to transfer the entire registry and so i wrote a caveat you know it's like three lines of solidity that says uh not the ownable methods no transferring ownership you know none of that just reporting fishers and now i can sign delegation methods where people holding these methods no no on change transaction needed no gas i can send them this permission and now with no gas they can sign a report and it's a meta transaction friendly thing someone else can support it submit it for them or the the even crazier thing is uh no one can submit it if it's something like a phishing report you can just kind of counterfactually gossip this message and anyone can look at it and they can
say oh yeah anyone can submit this the same way a minor extractable value person can do they look at the message and say oh i could call that transaction i would see this as a fisher and now we can build this off chain registry where it's all rooted in on-chain permissions the contracts enforce it but by looking at the contracts and building up these messages that could be submitted to the chain we can build up these kind of blockchain parallel databases that you know can be any size at all the only thing that has to go on chain is when you're revoking your permission to someone you say oh actually their their messages aren't good anywhere that has to go to the chain because you're trying to make sure nobody trusts their message anymore that's where the censorship resistance of the blockchain kind of
plays in how far do you think this is in the future oh well i mean i had i have a proof of concept of that that works now um but it doesn't scale really great um part of the problem is because the individual clients um usually don't have a full blockchain node um but you know if i make a node that lets you hold those messages now you have to be able to validate them again to validate them against the the node that becomes very expensive so we either need to have like cdns caching it or we need a good client-side lightweight caching layer like laconic um a friend rick dudley is working on this kind of caching system
it builds on another client and now your wallet would be able to cash just the information from the contracts that you kind of are interested in and it only updates those when those contracts update you get the block header and now you have a proof that your stuff hasn't changed it's going to be so good for things like uh keeping your token balances up to date because you know today on every block update every single wallet is checking your balance on every token on every network of every type and then plus the ones that they want to auto detect so it's this super network intensive thing um but but meanwhile we literally the blockchain is designed for you to prove that things haven't changed so it's this kind of embarrassing uh caching opportunity that hopefully rick
is gonna solve really soon i really need it rick because because the whole scalability of this scheme that i'm describing hinges on the people's ability to compare off-chain messages to the the current state of the chain well it's funny how it kind of crosses uh this gossiping uh net network with you know the unchained state it's uh super interesting yeah yeah i i mean there's obviously so many really amazing ways of scaling right now and i'm i was thrilled when i realized that this construction that i was kind of building for the sake of user consent when i started realizing oh it also has scalability properties i was just oh i was so happy i was like
and but it's funny because it maybe shouldn't have been a coincidence because um granting new permissions is historically not a thing that requires a blockchain right you can right-click a jpeg you have permission to view the image right the blockchain has always been about losing control it's the double spend problem it's that when you give someone money you have to lose access to it so for any situation where you're growing trust i think we can keep things off chain more and so i think that we can build wallet patterns and and dap interaction patterns that are actually more off-chain friendly and i think this can mean that when users use adapt for the first time they can actually postpone needing a wallet a lot more and actually my fishing adapt proof of concept i'm calling it moby mask you
can go to it at mobymask.com um like moby dick because because we're whales trying to take out fishers um it's invite only because like the whole thing is you have to have a delegation signature right but um but when i was making it i was realizing oh you can redeem you can get invited and you can report people without a wallet so i started realizing i had to move the wallet connection further further down i had forked a project that had the wallet connection you know that big wall at the beginning of the dap it says like pick a wallet get a wallet look at all the wallets in the world scroll by them find yours you know that horrible experience what i realized is oh we kind of recaptured that spirit of the hyperlink like you you got a link i give you an invite link you get there
and you're going and there's literally like do you need a backup well the backup is actually the invite link that's in your text message so you almost don't need a backup so when using this system you the only time that you need a seed phrase is if you well if you want to delegate to it so you want to back it up like cold or something you know like obviously there's higher higher stakes use cases where you would want that but for lightweight things you know you can start to really ask which things do you actually need a backup for like i bet you there's a lot of things that don't need a backup there's a lot of things we're just like spreading permission saying like hey vote on our proposal you know okay you know that should be it should be like that should not need a
wallet like most of the time and and then the wallet is like for the meta transaction relay it's for the pro user that the admin the person who's like you know revoking access the person who's like adjudicating disputes and stuff those are the people who need to submit to the blockchain and maybe that actually ends up being a pro user thing and then most users never even look at gas that's that's a hope i have and you know so i'm i'm going to be playing with that more i hope people try out that delegateable eth thing which i'll be like publishing right around the times this is coming up i really want to look into this now uh the one thing that kind of immediately comes comes to mind is does this somehow make you
um vulnerable to spammers because basically there's no longer costs associated right with kind of sending messages yeah so the the nodes that could be vulnerable to scammers or spammers in this situation would be like the caching nodes so if anyone can sign a message then you could gossip around kind of fake messages these messages are validated as chains of signatures though so in order to spam them you would have to have a chain of valid signatures that the node hadn't seen before so it has kind of similar spam properties to a normal uh blockchain node like it's validating a signature as the first thing signature validation is free you know like if you i don't know if that's a secret but like you could kind of spam
any blockchain node with a bunch of signatures that are fake and they're gonna they're gonna check if the signature's real you know um so you know you can always layer some extra uh anti-spam stuff on top of that just rate limiting banning people who spammed you know once once one ip has submitted one bad signature you know then rate limit them and increase it you could probably borrow like tit for tat with forgiveness out of bittorrent or something like that um but yeah i don't think it's more prone to problems like that than other blockchain type nodes all right i guess maybe tying it back to metamask a bit from from this right i guess how how actually does this interact with
metamask i guess you're saying we're moving this a little bit and then the wallet comes later is there some scenario where then finally you get the sign in and you use metamask or is this like a completely separate layer almost yeah no i think that they interact they they have a relationship and and i i think it's nice if it's like you can think of it as you can have assets on a site and if you're not moving them out of that site or going anywhere else then you're probably fine without a wallet in in many ways i think the wallet is kind of this place where you take your capabilities and you bring them to other contexts so the thing that's always been cool and exciting about ethereum it's the composability like anyone can you know host the server with the token
but the thing that's really crazy is like oh every single token is a public api and anyone can build a dow that uses it as its voting rights or an exchange that lets you swap them like any like everything's open everything's permissionless so it's that context switching that's like the real power of web3 though like everything is permissionlessly open um and so in this pattern what what my initial impression of it is is that you could have a lot of websites that adapts that are not needing a wallet connection until some certain actions it could be relaying transactions to the blockchain it could be loading those assets into your wallet so they're portable um it could be oh loading them into the
wallet can also let you do other cool things so i told you that the delegation for for delegate.eth um it supports arbitrary caveats so when you delegate to someone you can have whatever terms you want on it now i made the moby mask site every every invite link just has the same terms it's just like it's revocable you know you can report fishers but i can take it back um but if you if you made this a standard and added it to a wallet then then in your wallet you could go down your assets you could click any asset and you could say okay send them uh that allowance but and then you could like have a list of of terms you could say just you know just this many tokens just for this much time only for these uses
you know only on approved you know sec improved investments or whatever you know you can have whatever terms you want you can just stack them up and um i think that the wallet is a nice place to kind of uh aggregate these many things into a coherent set of possessions of digital possessions so that now you can go to other places and you can log in now and and now when you're logging into sites you've got all these like standard nice ways of defining your own terms you know normal terms on web2 they say we need these permissions it's a rigid thing you get no say you hope they have a logout timer you hope they have 2fa in this scenario when they they ask for what they need maybe they just need some tokens so you can do a swap and now you can add
whatever extra terms that you want uh so you actually have a part you're you're participating in the negotiation of terms when connecting to websites in this in this paradigm um and so being able to load these kinds of assets or these messages into your wallet um is the thing i'm excited to do now i just made a proof of concept uh you know solidity contract who am i to like tell the theorem community that's the new standard but that's not how i that's not how i run things uh you know this is part of why i'm building a snap system the snap system for metamask is an extensibility system so that new standards like this can be validated in the wallet so i actually don't need permission from the rest of my team to try this out and to add it into the
wallet and other people could take what i did and they could say oh you messed up in these ways and they could make their own standard and they could add it into the wallet too and so um really kind of coming back to the the notion that metamask's role in the ecosystem is to enable permissionless uh innovation right that's what ethereum is good at um that's what computers are good at that's what the web browser is good at um we're just trying to kind of get out of people's way and you know so i have my theories about what i think a secure safe consensual digital interaction looks like but uh rather than just impose them like you know i could say oh integration's coming every few weeks or i could say you know
some exchanges they have listing fees they you know say oh yeah your standard gets in for the right price now we're taking an approach of the wallet allows anything in we're trying to build a tool that lets people just be creative and and lets people move around with the digital assets they have and hopefully reduce their risk and let them kind of uh cooperate in new creative ways i still want to talk about the snaps in a little bit but before that let me kind of tie in with what you said so basically if you if you fray reframe this a bit um it would actually give you um a sort of fragmented identity system for yourself right so basically you can you kind of decide what to share with
with with which um services and smart contracts you interact with um so how um how do you see the connection between metamask and um the self-sovereign identity system yeah i mean i i see it as a form of self-sovereign identity i guess um i i have some qualms with the uh the identity framing of the issue um i think oftentimes identity is usually related to somebody making a claim about you like like oh you're a citizen or you're not and um and claims are are nice and interesting
uh for some uses you know and like i'm saying i want to be able to report fishers i think you know claims are great um what i think is really critically different about what i'm describing is that i'm not just talking about the wallet holding a bunch of claims about yourself i'm talking about the wallet holding the things that you can do and allowing you to extend those permissions to other things so these aren't just claims that you would trust somebody to do something hypothetically these are literal cryptographic messages that imbue the recipient with that ability and so i think it's got a much higher leverage implication once you connect so you know if you connect to a site and they want a token allowance that's because they want to interact with your tokens right now
and that's what makes it powerful we should allow composability like that for anything but with user sovereign you know attenuation the user should be able to say ah but on my terms right and so i think it's very very related i think that the only difference the only difference that i really see between like a verifiable credential system and an ocap object capability type system is whether the claim is rooted in a ability to do something it's does this does this signature mean you can now just call a function and make something happen is there a robot that will literally redeem this signature for something or is it just kind of like a claim you know like a claim okay we can have an internet of claims but like
okay so people are gossiping i guess that's nice but i guess what i'm really in this for is i'm trying to build scalable social systems and that means oftentimes spreading access to resources right we're really talking about how do we how do we combine our resources in a more efficient way how do we fund the best thought out projects how do we like kind of pathfind to those things and and so for me creating actual access to resources is just a more interesting problem maybe going into a little bit like from the user side now you're saying the user has like a say is that really like on the level or is it what you're imagining on the level of me being a web 2 user like like just
normal person going on his computer and somehow specifying these limits like how how do i get the idea what should i be limiting um it's just like can this just be done by like some developers is this would there be some interface for you to understand this i sure don't want it to be just developers yeah yeah exactly yeah i i the whole point of this stuff right is that normal people should be able to use it and you know of course it makes sense as developers can do it first because we're building these systems on computers so if you speak the language that computers understand you're at an advantage um and i would just encourage any listener if you think that's hard just take a stab at it there's a lot of online courses make it a lot easier than you ever thought you
know i learned on some of those online i learned on scratch first it's made for kids to learn to program i i learned on you know udacity and coursera you know these these websites are excellent at teaching you these things so i don't actually think that programming is that hard but even that said i think that you know rather than saying i think it should be made so easy that people who don't program should be able to do it i i might say i think that programming should be made so easy that anyone can do it or something in between there's like that that line should be blurred we're talking about computer enforced agreements and we want people to be able to interact with those agreements so the design space is wide open there's a huge opportunity to to enable people to participate in digital agreements better
it's a huge space and you know i think the way the wallets work today and metamask included is we're hard coding the types of agreements that we can represent to a user and that's an embarrassing state of affairs you know that's why things like i mean i i really i really feel terrible about like the the seth green situation because like you know yeah it said said approval for all on his confirmation but i don't think it said like the board apiac club like i don't think we'd loaded their metadata in you know and today that metadata curation is a manual task it's like a github repository but obviously what we should be doing is you know broadening the reach of aggregating all that kind of information and you know again it kind of comes down
to that delegation thing how do we spread the right to populate our metadata registry more broadly right because we need to be able to protect people in so many use cases you know um and we need people to be able to inform each other we don't want them to have to trust us we want them to be able to like declare what they trust and then get as informed as possible through those sources no no i think this makes total sense i think there's we're so early right so basically if you look at um the governance and security space so basically if you don't wanna trust one single person then basically how do you how do you trust um a group to make the right decision decisions how do you i mean i yeah i think this is uh yeah it's just the the kind of problems
that we're currently um facing you you um you talked about snaps earlier um and i would like to cover that um can you give us an intro on snaps yeah snaps is an extensibility system for the metamask wallet um there are a lot of dimensions to the wallet where we found ourselves being gatekeepers inadvertently we didn't try to be gatekeepers we just realized that everybody wants to add their network everyone wants to add their token everyone wants to add their you know fraudulent transaction detection system everybody wants to add their new blockchain you know their new eip method for better adapt logins you know there are all
these dimensions where we were just finding ourselves you know us against you know a a large group of very passionate and intelligent people and we don't want to you know we don't want to be arguing against a large group of intelligent passionate people that's the worst we want to get the hell out of their way we want to let them just like ideally you know it's like i think people get held up on the open source component a little bit people are like oh yeah you know if you were just open source somebody would fork it they'd make a better wallet well the truth is you fork it you're gonna add the one feature you have in mind you're not gonna add all the features that every user wants and so i think that the heart of like actual like community driven creativity is more
about composability it's all about the same way ethereum is all about the contracts being able to interact with each other uh i think that you know the wallet is kind of your personal smart contract space where you declare what you care about these are your these are your assets these are the things you're willing to connect to and trust and um so snaps was an answer so how do we bring in all this innovation how do we get out of the way and let people contribute to wallet evolution at the speed of their creativity not at the speed of our review process and uh so yeah we we did a lot of research on kind of secure code confinement and there's obviously a lot of interesting things on that uh it led us in particular um to to
meet the agoric folks who are working on uh javascript confinement and so they actually have a it's basically a javascript function that allows you to evaluate code in a confined context so you know if you're if you know javascript you know the word eval is like evil uh because you call it and then the string that you pass to it can do anything and that's terrible and so you should never call eval but the goric folks made this thing called a compartment where you can now call eval but it only has access to the things you give it and so it's this kind of local code version of kind of what i'm talking about when i talk about connecting to dapps you you can now run some local javascript and give it just the permissions that you want and so very much like the way you connect to a dap
and you give it some you know blockchain based permissions now we can run some local uh wallet extensions and give them some local wallet permissions like the permission to add a new token type to your to your wallet or a new account type and so we've got uh prototype snaps for adding a variety of blockchains to metamask for adding contract accounts to metamask for adding new phishing detection um there's a password manager one uh i i i i was starting to prototype a new signature standard um you know there's the ip712 but there's a fifth rev revision and rather than pull requested to metamask i just prototyped it in a snap you know it kind of opens up the
space of wallet innovation outside of a standards process i think standards processes are not permissionless innovation um you know right now there's a little bit of a movement so like hey all the wallets should make standards together and don't get me wrong there are some things where we should just do it consistently so we can interface and interoperate better but you know what's better to me than standards is spaces where people don't need permission um you know maybe this is just me because like i'd wanted to get into entertainment for a while you know and like if you ever try to get into entertainment well at least you know when i was doing it it was like oh the hollywood you know like establishment or whatever obviously it's different now with podcasting and youtube and things but um
you know whenever there's a situation where you have to ask permission or you have to get other you have to convince other people just to do it just feels like the wrong way to me like i really care about building tools where people can just have ideas and run with them and you know computers are great for that computers but as long as you build those computer systems in a way that are friendly to in integration and that's kind of what extensibility is and so i think snaps is incredible for metamask but i actually think long term every application will be extensible and it won't be like you're an extension on one other thing it'll be like these things work together uh it'll be more just collaborative um the way that contracts are on ethereum
yeah i i do think it's like a nice extension of that ethereum idea of like you know permissionless innovation and just taking it on this wallet level and i also liked where you said okay general purpose wallet other wallets are kind of buildings things specific for the use case i think that's the frustration for a lot of people that it's like oh when does metamask ask like this new network that and why is it so hard to switch network i guess snaps would as i understand try to address that but on the level that yeah i know everyone can add that but now i guess my question would be okay we have all these people that can extend it in a way for a user how does it actually look do i have to like choose which extension i want to support from these snaps or is
like there's some automated way or how does that actually from the user sides work there's a particular pattern that i think is going to be more and more important and it's like the process of adding something to your wallet um today there's kind of a norm of auto detecting tokens you know um i recently heard a wallet advertisement that said it detects all of your nfts for example um detecting all of your nfts to me scares the crap out of me um partly because uh we know that fissures will do airdrop attacks and so they'll airdrop you something that looks valuable but when you try to send it it'll give you an error message that's crafted to direct you to a phishing page things
like that not to mention there's forms of abuse like air dropping people lewd photos you know um and and so so i actually think that you know it's a lot like an email address where you don't actually want it to be public for anyone to just add anything to your wallet so i think that we have to eventually adopt norms where people are consensually adding assets to their wallet and i think that that addition can come from anywhere um so for example today metamask has uh eip 747 and it's called the watch asset so a website can say hey care about my token you know so i have a personal token called uh dank dink coin uh you know nobody has i've given it out to like 20 people you know it's a joke
coin but you know i'm not gonna add it to some central registry where all metamask users have to see it that's that would be ridiculous and a waste of network bandwidth but what we do have we have an api method where if somebody goes to my website they can press the add to my wallet button and then a little pop-up appears and if and it says do you want to add that to your wallet and if the user agrees now their wallet will load it has my my face says the icon you know and and they can use it um snaps work very similarly to that when you're on a website that wants to interact with let's say another blockchain or another token standard that your wallet doesn't know about they'll just say hey uh to enter to interact with this we
recommend you have this governance module in your wallet and you say oh okay and you know we're gonna we're gonna have a couple tiers of security obviously we're going to have like indications of who's certified it we're going to have a very responsive kind of revocation and you know fischer flagging system and then the user is going to have the list of permissions it needs you know this snap may need network it may need a private key of its own you know some snaps may even need a private key that's dedicated to a given protocol like if you're making another ethereum sign or snap it might need your ethereum keys and so we're going to add we have friction on that to like make sure people are extra sure but ultimately yeah there's a there's a part of an interacting with a new entity that
wants to rely on some new kind of asset where they're going to say hey you need this to work with us once you have it though you don't think about it anymore so it's a little bit like micro wallet onboardings um you know you can postpone them as late as you want um but as you use web3 more and more your wallet will come to represent kind of the places you go and the ledgers that you care about and the assets that you track and it'll just kind of let you use those and so it'll be a lightweight wallet by default but it'll be a dynamic wallet that can become what you need it to be oh i'm sure we'll see a lot of innovation on that one so basically in terms of visibility and even reputation systems right so basically yeah um
i want to cover one last topic when token when dao dan okay um yeah so we've been exploring uh making a grants now um you know we we want to there's a lot of things that we'd love to fund and you know we we've got a revenue model that's turning so we we want to give some back to the community so we are exploring how we might run something like that um if we do it i i would i would stress uh we're not exploring distribution mechanics that could be gamed we would start with small groups of trusted people and we would probably take an iterative approach similar to what optimism's done where you know distribution can be continuous
and i think that more communities should embrace continuous uh you know continuous recognition of community engagement and i don't think things like that need to be a one-time event um but uh but you know we're exploring that and you know grants is one application obviously we have lots of ideas of what tokens can be used for and the truth is they can be used for a million different things and i also think people should kind of get off the idea that tokens need to be a singular great thing right just because somebody makes a grand style doesn't mean they never have another thing they want to make i saw a whole wiki portal that did a review of metamask and they were criticizing an idea i had once about do it tokenizing uh our prioritization backlog i just
wanted to let our team kind of help weigh on our backlog you know we got a big backlog but they're like they're like ah this is not a is this the most valuable thing they could do like get off it we can have tokens about as many things as we want and it's all good um you know but but you know i think the key thing is we're never gonna like watch out for the the scam bots that i i'm so apprehensive about when people start speculating that we have a token coming because uh you know they're like oh well now they're suddenly looking out for some bot saying hey there's a here redeem your airdrop now i promise you if you ever have access to metamask tokens it will not be because some bot replied you on twitter telling you to follow a link don't
follow links i mean for crying out loud if you're a meta mask user you might think that we'd have like a way of getting in touch with you right so have it just like go to the wallet as your source of information about metamask and that goes for support as well as any any other things like that so if you if you ever need support with any product really start in that products interface don't go searching twitter don't go searching telegram who does no moderation search in the products start with your root of trust what's the thing you trust most on that thing it's probably the product maker themselves go from there so stay safe out there we'll play around with tokens because we we want to play around with the whole ecosystem more um but you know please don't uh don't hinge your hopes and
futures on on the you know prospects of flipping it or something yeah i think that's that's a great way to wrap it up with the token then thank you so much for coming on it was like super informative it took like a way different turn than i personally expected it i i learned a lot and i hope our listeners do and we're we're looking forward to um seeing all these new new things coming from from ella mask and what people will build with it dan where can people come and learn about metamask well we we have a discord channel run by consensus and we have a a community forum which is uh you know you can vote on features there um you can also follow
us on twitter uh we've got you know a fairly active twitter thing you can you can at us but be aware that there will be some scam reply bots we are working on it um but uh you know if anybody claims to be giving support publicly don't listen to them um yeah so you can ping us on any of those it would be fine community.metamask.io is our forum perfect thank you dan it was a pleasure um thank you so much for coming on cool thanks so much for having me