The Next Evolution of Web3 Wallets by Omna Toshniwal, Dan Finlay , Erik Marks (Devcon5)
Devcon·Fri, Oct 9, 2020, 12:00 AM
Speaker
Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on IPFS and more. https://archive.devcon.org/archive/watch/5/the-next-evolution-of-web3-wallets Metamask’s aim is to empower the web3 ecosystem to create useful and usable applications for users. We have led the way thus far by being a web3 connector and a wallet that serves different types of user groups, and hence juggle their different needs. We are at a critical turning point, where we believe a one-size-fits-all solution is not the answer. We are looking forward to make Metamask modular, more secure, and extensible that dapp builders can use for the specific needs of their end users. We’ll do this with the help of new Metamask APIs, which will empower the developer community to build creative solutions that inherently integrate with Metamask. In this workshop, we will share developer beta version of Metamask APIs! What you can expect from this workshop: - You’ll learn about some new APIs the MetaMask team has been working on. - You'll learn how to use these APIs to enhance your products’ functionality and UX. - We'll bring a few working demos, and facilitate a brainstorm on how these features could help your users, and how we can improve them for you. - Build a simple application that is made possible with these new APIs. Speaker(s): Dan Finlay, Erik Marks, Omna Toshniwal Skill level: Intermediate Track: Developer Infrastructure Keywords: technical Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum Learn more about devcon: https://www.devcon.org/ Learn more about ethereum: https://ethereum.org/ Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. Devcon 5 was held in Osaka, Japan on Oct 8 - 11, 2019. Devcon is organized and presented by the Ethereum Foundation, with the support of our sponsors. To find out more, please visit https://ethereum.foundation/
Transcript
[Applause] none of us are you guys doing a three-pound end of the day I hope you have some energy because I yeah yeah going faster okay so I'm gonna share some selves I'm really excited about working on it for a while we've been thinking about a lot of things there's a lot of challenges in this ecosystem you know I think meta masks at this point we're like the thing that you love to hate it's like you know we forget the joy of being hated because you use us too much you know so so we're constantly thinking about like what's the next step how do we get how do we get you guys we're gonna go how do we get your users where they want to go how do we get out of your damn way how do we how do you night these these three things that's going to be a kind of theme security utility usability and and to clarify because some people think the usability ability to the same I'm gonna say for my purposes when I see utility I'm functionally like a command-line coder could do it but when I say usability I'm talking about like accessibility like anybody could do it so how do we make something that's so secure anybody could do it but that they could do kind of anything right that's the dream right and you know and we're gonna make that possible for you so right now modern wallets are limited in these these three axes the first one innovation right we don't have new networks fast enough we don't have your favorite chain your your favorite authority whatever we don't add new IP features there have been better token standards then you got years in 24 like five years longer so hey like we don't we also for the latest scaling tech right today if you've got a new plasma thing or you've gotta use you know lay or two thing you're basically gonna make your own wallet so it's like that average theme will be like well you make a new wallet you make a new wallet contracts got you make a new wallet you have a hosting service that are alternative I make a new wallet you got a new hardware wallet it's not supported by astronomers you pass up your probably gonna have to make it into your own wallet now you you have any kind of cryptography you got some spirit stuff making you wallet to slow deliberate slow request did we not get that feature in in time for cos making a wallet we're gonna not secure enough okay we're bringing a JavaScript runtime now I hope that you saw Erin's some curvy talk on well nobody's been in a couple times he's talking about how we're working to isolate our dependencies better and you should you should check that out you know it's a little bit on Twitter but but you know that's scary and and the average average well everyone is so big pile of dependencies and every and every new feature increases the attack service so you're simultaneously furious at your wallets for not having enough features and you should be terrified the more features of all it has because each one of them is making more vulnerable okay and there's a count management trade-offs of course and we all like have our favorite ones and like that crap on the other ones you know if you make the keys record that if you make the users require keys remember as passwords they can just lose them you might have some new great contract accommodate to get you know you know maybe you can get a bird eating dinner to put their funds in it they are both good wallets just aren't usable right we got a yeah I'm sorry I don't know the wording of that but yeah you want to okay if you want to procedural progressive security you want to be able to say look if you've got nothing in your wallet don't back it up how easy onboarding all that a seat phrases that are passed and annoying you should have options right you should be able to onboard your users as gracefully as you can conceive of and you know first trip though is a pain but we've got solutions for that you know why won't the wallets merge these solutions as fast as they deserve to be and and confirmation screens of course are obnoxious and tedious and while they're secure there's so many of them that they can lead to user fatigue and even if the users are looking at them thick you know they're basically unreadable because you know you're trying to confirm something that a turing-complete computer like we cannot anticipate everything that you've got you just can't so how do we how do we leverage this big decentralize ecosystem all of your creativity in this room and make something that is secure and usable and scale and so that we can all make it together and so that we can you solve this so how do we do it well I'm gonna propose the delegation is a really powerful thing in the hands of a user if you do delegation right it's you don't have any authority by default you have a nice peaceful safe place to start you've got a wallet it doesn't do anything it doesn't risk your funds it's conservative but you're safe but with human readable messengers you can have machine enforceable authorities that themselves can be delegated allowing for large networks of transitive extensibility system to facilitate this you might have seen in the last couple months we really said the IP it's in the draft stage you're welcome to he could help improve it it's our wallet permissions API it's a method by which we propose to suggest users log into websites with a series of machine enforceable permissions that are human readable - and so we're increasingly making that Masco place where it grants no authority by default keeps users perfectly safe but gives them the power to grant authority as they see fit the API looks something like this you've got an RPC method calls reflect permissions and the parameters is an object or you request the functions you want access to which each has a configuration option those options can include limitations self-imposed of maybe get allowance that you need the duration there's really the sky's the limit in terms of the options that we might extend her and so this you know really just the beginning of a standard so well while the permissions are we interested in adding why why are we pursuing this what do we think we can really in because we've been doing a lot of interviews with that builders we're not just doing this in a in a box so what are the most useful ones well people want want privacy people want you know you don't want to ask users to switch the network every time you log in it would make a lot of sense to make that part of the login flow a lot of apps use a signature when they first start but also why not delegated key to give permission to do signatures on the user's that happening decryption you know the ability to establish an intent encrypted channel within at that it would be the beginning of like truly private apps we can have token management we couldn't decentralized route and then each wallet having a a centralized repository where it what tokens are legitimate you could opt into whatever kind of authority for that you need you perceive spending limits obviously and and what else what do we think is maybe the single most important permission and the thing that I'm like really excited to kind of share with you guys today the thing we think close the loop the thing we just renamed five minutes before this thing goes we got a new traffic thanks Christian the permission to add permissions which we call the Damascus snaps this is the most plug-in system about five minutes to go it snaps it's awesome thank you so so what is it what flick on Zack it's just written you can suggest someone adds to their wallet it's JavaScript it's a script that can ask for permissions in the same format that adopt can this script gets no other authorities except for what the user explicitly consents to and this is made possible by the great work metaphoric on their secure ethnic privilege project which allows us to basically evaluate with very explicit and dominance now you know there's obviously caveats you know security is is an ongoing process it's never perfect so we're gonna have like strong user cautions or especially early on into the system but we think that this is the the kind of path that we believe is very right to pursue and the plugins can then provide api's to every website that user visits yeah that's what that was that Luther so so here's security IP 2255 the next generation of the developer missions now one of the wallet permissions you can request it's this kind of weird namespace thing where you say you want wallet plugin and then there's a domain stream in this case I made a plasma dotty let's say that plasma body is a pointer to an IPS ipfs file which is a plugin bundle we'll learn a little bit about that in a minute now when the user sees that they get a confirmation just like a normal login screen but one of the permissions would be the permissions you it connects to this new protocol that you know the uniform Pataki's wants to talk to unit pig Dottie you know and it wants to and then he would also have its own one about permissions who this is I kind of repetitive this one of them so it would maybe want to show custom assets pin it to the network you know and whatever else I didn't have to talk to their protocol this about exactly what would be their authority report so what are a few possibilities we're thinking about for these plugins we think that new asset types are finally in the hands of the developers we think new token standards we're really excited to see subscriptions or we want to see new kinds of collectibles more security tokens that actually keep you safer yep credit lines based 0.04 CBP's in there like why not let your users decide you know I one of my favorite reddit comments ever said if the internet instead of rvg the damascus your inventory so how do we just let the spear in the car just put when we want it and bring your own cryptography we're having an experimental API that's been an EIP for about six months now this get a few proposals so within your plugin context you can get a private key that only your domain has access to and that means we don't you don't have to ask us to merge your encryption or signing method you get to decide you get to define your own cryptography type computer new elliptic curve can use EK start just start whatever you need you build a script that defines just that simon type and you get to expose an API to the websites the user visits so that they can now sign using that type and you'd be able to show up custom confirmations as well this makes layer two suddenly feasible of writing the normal wallet we've there's a lot of great teams doing security audits right as a service but where is the channel to currently show that why why not let the wallet just think well now our job is just to extend the API surface that lets them be useful so we say okay all right guy is the permission to warn you about a dangerous contract now you can ask for the permission to warn a user about a dangerous contract right that's the yeah that's the the pull request you're no longer saying hey can you lock your users into my service and pull in all my dependencies while you're at it no you ask the user if you can just warn them about addresses they're sending to you don't get to see anything else your decode is securely isolated we don't have to merge pull request anymore and and people get to be safer because their permission was they getting more by a whole network dilaudid potentially you could charge for these plugins too we are excited to support view protocols we actually have an example folder we're going to show you in a little bit there's an idea fest example it was like 10 months do you'll be able to make custom confirmations the current beta build that we have just uses alert and confirmed but we are gonna let it be pretty eventually - and new account types there's really an endless number of account types I would figured out the last one the account types to rule them all or maybe maybe even account types deserve to be extensible one of the coolest things about the gnosis savior's it supports add-ons itself so why not make a plugin that accepts plugins perhaps and of course you're getting fewer confirmations because when you delegate some capabilities to a script you can potentially delegate things that you would normally be repetitively confirming and so is just opportunities for reducing user reason okay so then what do you want to see is there anything that I didn't say there is there are the use cases in it is anybody like my thing like finally like I don't have to be our wallet or build a wallet yeah am i governor yeah you got it alone okay okay hit that time you don't have to shame what's that free money free money you can make a free money plugin is analog in the just a memory after wait yeah let's do I gotta make free money in just a minute oh yeah there's a screenshot we have we have a very simple MVP right now here's an example of a contract on a plugin we put this up in an hour this morning so it's incredibly easy for us to add new features that then are just surface area for the ecosystem to extend on this also allows for kind of new onboarding those those confirmations that we use to onboard people they can also be used as onboarding links so we kind of have an idea that in the future if you want to onboard somebody to crypto there could be a single link and it could incorporate both the redirection to get onboard with the wallet but also the configuration of the dependencies that your application believes in that one right so if your if your point of sale requires a certain state channel why not just give a person a single link they suddenly have a wallet the only thing in there all that is your like your stores you know they're dense in the frequent shopper points but that's the only thing they care about so what are they getting into pizza for it but your product right this is this is about what you're building we're always just pin a little on-ramp for you and the ways that we can make it extensionists oh yeah you could we can built this is all JavaScript we could make us a single page thing we could do a burner equivalent of this and gradually progress it and I know there's there's someone calling for that it's kind of a bandwidth hang for us where we're kind of in the spin-off obviously so the way work the process is iterative we added this permission system we're pretty happy about it puts a mirror RPC our pcs are pretty coarse but they will get us started the plug-in system uses the RPC permission system to allow scripts that allow users to request permission and then pass those permissions on the scripts and from here we basically want to know what API surface unleashes your projects the most I gave a lot of examples and you know some of those are accounting for some of those eight guys were making we're show you some docs in a second yeah one who's come to mind yeah curious about like books so how is it that we actually put our plug in to be actually able to modify the user experience beyond just like the confirmation screen error so so initially just yeah we should probably do it too in a little bit later but initially we're looking at very discreet deliberate changes to the user experience where we're still controlling it but we're like permitting parts of it right longer-term as there are more secure options available for extending the user integration in a safe way where we're open exploring that but but I think a very gradual iterative approach is the it's already you I I mean not yet but that's like the kind of conversation we can now have we can say would you would you be interested in the the API to rebrand and take your commission really well you know like well we are going to need dinner at some point but but we can tell you know now now we've elevated the enit conversation from like you know like yeah is your specific protocol and part of the wallet and all while it's not integrated to you cannot find your component and and you can justify the surface area we need to expose to neighborhood and that could be the politic fun good question around like so in theory like long absolutely yes yeah I think like we've been considering that you know we are pre-revenue us like pretty much every while it is it's possible that a curation of a store or something like that could be an alternate but this is the beginning of the developer beta it's but we're not Lagos selling or walling missing audio so yeah we've got we have a lot to cover and I do want to help you guys build already get on time but I'm hoping that we have a majority of the workshop for you guys to actually try it out and the period for questions so I'd like to thank some of the early teams that we gave you we have some feedback from we did some user research some teams even well that some some early prototypes so now to talk a little bit about what a HelloWorld plugin looks like like to welcome to the stage mr. Mars [Applause] now so for my first race let's make this area up here just a little bit more Internet we have two seats over here two seats over here one seat over here please move forward come towards the stage as it were is [Music] although if you happen to have internet and you scan that QR code it will take you to the page where you can download things to actually start building something it's got everything you could scan right yes we're dropping the videos and also exercise yes but anyway I don't have to talk to this mic because I need both my hands so when everyone has finished moving up if they want to get I'm going to say that that's good enough there's like two seasons up here there's just here there's like two more seats here if you want to come sit [Music] but yeah well everything will be uploaded and available later for what you guys have yeah after this presentation will even post it locally anybody can come in okay so so there are first of all we have really just now made public the two relevant repositories for this I'm going to talk about like what a plugin is under the hood for the depths of the roofs who can take this away and start building with it we have a fork of the meta mask extension that supports the plugin system it is at been amassed London Bay though we also have a command-line utility called MN plugin that you can use to build configure watch for file changes has served them locally for testing for local development and we have on the venom house plugin beta repository a wiki that should contain everything you need to get started and so what is so as far as the meta mask extension is concerned a plugin is two things one is a package.json file following the conventions established by NPM which would be super familiar to most of you and second is a source file bundle and we made the tool mm plugin as I said to help you get started with that and on the wiki we also talked about the plug-in API which is the API that the extension exposes to the plug-in context as Dan mentioned we take the plugin bundle we load it into the extension and execute it inside of a cess container that container doesn't get any any sort of Global's by default so we inject some stuff into it by default at the moment such as the fetch API XML HTTP request and so on we are also injecting this global wallet object which represents which basically contains most of the methods that Madame s uses internally to construct our user interface and we yeah it's basically and and also a bunch of provider methods so you can think of it as a superset of the etherium provider and we're we're still changing stuff and we're thinking about like we're definitely going to add methods we may also remove some edits in flux but Brett at the moment a plugin can request basically any method that we use internally except for some super critical key management stuff that nobody should ever be able to request a blanked and request that as a permission to use for whatever it is it's trying to do and for my next trick I'm going to show you how to get started with developing meta best plugins or snaps as that leibrandt's takes and so for me the tool m-f plugin so all i've done here is i've created a folder for my project I'm calling it full of world and we're just going to call me mmm plug-in in it and so the first thing it's going to do is it's just going to walk you through the usual and hit workflow to create the basic package not JSON so we're just for this hello all of us great and so we're gonna draw hands to accept that and now once it's gone through the regular and imminent then we add some more stuff that metamath uses to identify that it is a plugin and how to load it and so on and so we're just going to use the defaults here but I'll just show you what it looks like so we defined a local server port like where we'll host it locally for development an output directory and the initial permissions that the plugin is going to request the puppy football and Bruce me run intercept app and then it did a bunch of stuff but all it really did was that just grow the files that we'll need to work and the inside this folder we have the bundle itself so it just wrote these files with like the most sort of minimal hello world plugin and you might want this a framework for you to get started with and also build it and we can start by taking a look at the package JSON and you'll see that it looks just like a regular package JSON except for this wave 3 wallet property here it contains a bundle property which tells madam s where the bottle is so you have the local which just says like where is the bundle relative to the project root and then the URL which is where it will be hosted and if this were there for production and that would be like the URL where you are hosting the plugin bubble online and we hope to support DNS and and other things with that but for now it's just HTTP and the initial conditions that's just as I said those permissions that it will request when it's installed and so now I'm going to call watch so we can rebuild on change and serve okay here [Music] fresh ah it's the front end half-hour on our planet and inside the and inside the project directory it's just it builds an index.html file just so you have a user interface as you can work with them get a feel for like what it will actually look like in practice and so in my extension here I have the plugin version of meta mask loaded it's going to make sure that my state is clear usually you should not have to do that but we expose we have those buttons just in case for development purposes and then I'm just going to go ahead and then connect and that will initiate this request and this is this request here is the dab saying hey meta mask can I talk to this plugin and also install it if it's not already installed so this is the DAP asking permission to use the plugin and we're going to go ahead and say yes and now this request so we're still working on exactly what this is going to look like but this request is the plugin which we had just now installed saying hey can hide the plugin get the permission to show alerts on the user's page and as Dan mentioned currently we're just using that at browser defaults for alert and confirmed but we're gonna and eventually we want to allow plug-in developers to build their own sort of custom confirmation screens so say that you have some interaction you go to the plug-in for your death the death calls the method of the plug-in and you want to display a custom confirmation screen and that's initiated from inside venom s you'll be able to do that eventually that's the plan but we'll submit that and this plugin being very simple it has on hello method so we're going to send the hello method and that super tiny text says hello localhost and and the big deal we didn't come from the page it came from venomous yes it came from it so it because it uses the alert method that we've defined inside meta mask which is the permission and a sport when it was installed and that's where the notification came from and so the big deal is so the big deal here is that now we've effectively extended the venom s in crazy provider with an RPC method that belongs to a plug-in that's running trustless lis inside masked men amassed in SS container and so if we look under the hood here of what's going on you can start with start with the index.
html so this is the web page we were just looking for our front end as it works as a buttons and stuff and the first thing I want to bring your attention to is this connected to the function of gear so this follows the EIP 22:55 api that damn showed earlier in his slides and so this is again the dab asking for permissions to talk to the plugin and so the method is wallet request permissions and the permission is is plug in origin strings that we construct and so basically and basically what that is it just that takes this permission and namespace prefix and then the plugins origin string and just tacks it on and just add towards them together and that becomes a permission identifying the and then we have the send handler here which again just uses the infeed provider to send a message to meta mask but now the method we use plugin origin as the method which tells better best hey I want to talk to the plug-in that's identified by this string and inside here we send an object that can take whatever shape the plug-in developer wants it to take but we just used like the same RPC request object format and there's one and the method is low and if we look at the plugin source code and his ten lines and we see that it defined the single method called below and it sends back below whatever origin and it came from and the origin here that's the origin of the DAF that sent the request and so to just go over what we have going on here we have this as I mentioned the global wallet up that wallet object which is the API that meta mask exposes to the plugin and this register RPC message handler is what if what you use as a plugin developer to extend the meta mask in to effectively extend the Menem s in-page provider API and so that takes an origin string which is the string of the requesting context like the daps origin and then a request object that can be whatever shape you want it doesn't even have to be an opportunity to be a script it could be whatever but and by convention of Markus it goes on and it just says hello origins string is what it returns and if it doesn't get a method that it recognized it it recognizes it throws an error and so we can very simply alter this and since we're at DEFCON 5 and we'll write the bill and we'll go back the image and now because I rebuilt the plug-in we're going to we're just going to do the Kinect flow again and reinstall it and now if we send below we get from each you want localhost instead thanks if you like that just we didn't see what these examples do and before I do that was there a question in the back what happens when the remote bundle gets changed if you not the in app and so we will have some well-defined way of handling updates to plugins we have yet to define what that's going to look like at the moment since it's been we haven't defined it yet since nothing is in production yet but there will be a way for plug-ins to essentially issue updates to themselves like let users know that they're updated and will also provide a way for my say that you change say that because the plugins can persist their state also and will also expose a way for updating without like erasing in its state its local state inside the users attention yeah but for now there is every time you update you just reinstall it and it wipes everything yes venomoth and local to or your justice so how this is going to work with mobile is we absolutely want it to work with mobile and but how we're going to accomplish that this time yeah yeah no but you're right to ask if you want to go [Music] you mean content the plug-in itself being cooler and probably because the thing is like you try and tell us what errors because yeah we'll talk about that in a second because like what the build script does it will pull in all of your dependencies when you build and then we run them through browserify currently and so there are sometimes issues that arise when your dependencies are being too clever with JavaScript bubbles or when they do dumb stuff that they should in it throws errors yeah it's not a desktop application it's a browser extension yeah eventually be something we would have to go to a native layer and it's beyond this it's not the future we're using what any event thank you for your question and fear for the examples there are a couple we have a number of them we're constantly adding to them hello plugin here is the one you get when you run em and plug it in it and the first one I want to show you is this recipient address officer which is just basically we've added and internally the I amendment that allows you the plugin developer to tell madam asked what is unsafe for a safe address and so if we look at the package.json here the initial permissions requested is new unapproved transaction so that's an event inside the metamath that's fired when a new transaction is created that the user has to approve and then this new address audit is a way for the plug-in to modify that screen and so here we've created this mock audit guide which it looks at whether the final hex character of the recipient mattress is a letter and then from there determines if it's safe and here what then so what this plugin looks like is we say we create a listener for new unapproved transaction and whenever a transaction appears it's we call this an address audit method and it will indicate in the same screen if this particular plug-in to thinks that the recipient is safe or unsafe or where perhaps unknown if the plugin doesn't have an opinion so now we now we can add all sorts of smart like contract security recipients security and plugins with this API the second example is custom tokens or free money this is a lot yeah whoever has that question pay attention so here are our only permission is this wallet manage assets method and if we look at this source we define our own free money token here that we call asset and that this one lives in memory so it won't be very it won't make you rich for very long but we can a man and that you know it's some ERC interface that's uncommon to meta mask but that you the plugin developer know about and so we just find this object that tells men amassed some basic stuff like presumably if it's acid it has some sort of symbol imbalance identifier maybe an image maybe some decimals and then we have a RPC message handler so from the in page the user can never get the balance of this custom token it can bend more of them it convert them and then here in this update UI function it basically keeps track of like what is the status of my of this asset so imagine like if it's actually I'm chained you could query the chain somehow you can actually send a request to meta mask to like read read from the blockchain and see what your asset is doing and then you can update it using this wallet that segment so here is that this is actually the plugin sending an RPC request from inside meta mask to mathematical in order that it should update the the assets and that's and so and that has it will be displayed like in the Tony or in the asset listening cycle and finally one cool thing you can also do is add new forms of cryptography to metamath which previously was hard but now is very easy as you will see that this plug-in has confirmed as a permission just for like the UX purposes for the demo but if we look at the index here we important this pls 12 3 1 library and we use the wallet on get app key that Dan mentioned so I have a case of something we've been researching internally for some time and we essentially we get a a private key we treat the map key as the private key we call the get public key method of this MPLS library and now suddenly we can sign an arbitrary data and do all the usual key pair stuff with this app key and this new an odd public key that we created and if you think that's cool that we have Tom from start with here who is actually doing something useful with this exact eSports hope yes yeah okay so just a quick intro my name is Donna and I'm a protocol research and product manager in start with we our company based in Israel and were development for the position of zero knowledge groups basically starts a first product which Oran which is also here announced today on the main stages are there in tools can a business solution enabled self custody training which hopefully will be live and maintenance married together with a partner say the first fight which was a Phoenix a months ago and then what we're going to show you today is basically a nice basically it's a very nice variation and fearless signer which allows us to give the users the ability to sign elliptic curve parameters I will give a big insert to it so gentlemen troops in order to have efficient proving you have to tweak a bit the curve parameters of the normal is missing we do sign over the secretary 256 which is the normal curve in eternal v-twin it comes very inefficient so you have to pick specific parameters in order to have an efficient option but then it gets very hard to use mandamus for example so what this plug-in system or snap system let us do is very easily create a plugin which I'll show you in a second that allows users to use meta musk with a derived pregnant keen to sign over artistically to turn right so I'm trying to show please tell me if you don't hear hear or don't see anything so I just start first to the black then I can go a little bit I'm going to sit in the - thanks big enough okay so just to remind what we're doing so we're building so we are here in the department directory everything we just filled it and then we can certainly be pleased [Music] okay great now we have it here so this is like some kind of nice you either basically this will be in the client of the exchange right what we want to look like that it would be just a simple client of the exchange will enable us to connect mathematical Simon orders which you want to submit to the exchange so same way that we did the portal connecting to the installing the plugin and then allowing it to conditions with where as head for I don't know like it is and once we have it we can just get the public team just [Music] make sure you understand this is the hockey key based on our ellipse here which was derived from the same metal we're not saying that if they get their public you can sign any message we want specifically in order innocently says I want to buy maybe we don't sell eat to be indifferent right so I want to still die in the recipients and this is the accounts that they have often I won't get into it this is like Dorian deeds and then we'll get a problem you can see it but it says do you really want to sign this message and parameters K we have wants us basically receive this okay yeah yeah where's this pls key back does not realize it's a simple ECDSA sorry where are where's the key backed up as a plugin developer are you responsible for you know the keys inside the minimize and they also quote but yes okay great so first of all we can look at the [Music] justin what we have here so again we've ever only two to close why don't you get a comment just even the public key one at the same message in the nice thing about the way meta must did it and they don't be I can show you India so we previously had our own module for signing over a literature using only the Olympic module meta must've music and once we had it you only needed to import it here and it all gets bundled together in the bundle JavaScript and then whatever you have already you can just incorporated into the plug-in you don't need to do anything you and so once we have our signatures what we need to do is get the public email to it in a second and you just get it from our crypto library and same with the same mice you want to send a message you just mind that you just get the or the message you want to sign and you pull it out of one module okay great anything else do you see okay maybe just he's n equip is there any questions yeah you're like like start so that like adapt those so this has nothing to do with the proofs just we want to allow the user to sign with a slightly different signature scheme right so this is our way to whatever like changing the character to these sign over yeah but in a very simple way so he took us to the other only a couple of hours to do is maybe just the design of the Heartland like the library again turning so you're asking about whether we expose any native noted modules right under there no he's only giving any know the native modules right because we don't inject any authority from environment at browserify I guess does provide some but children I work here because they're only getting booked run and they're only getting bloated at runtime so there's no there's no address today even access at okay time for my Creek goes exactly right so some reservoir in certs a crypto library and so it would I guess get a year right great so the way browserify works if you require crypto it's going to provided and and yeah at the moment I don't know Eric native purposes there our goal is to provide zero and the authority or right now for convenience we do have some API is that we're just kind of leaving in for the sake of convenience because mocking the entire fetch library behind a permission system is a little bit tedious but it's very complicated API but but yeah that's that's where we're headed towards bear anything Gillis okay thank you yes this is awesome I have a lot of plugin ideas that I would want to build like today today with County Schools yeah so you know right now with the remix plug-in system there's no forum or community to to coordinate the creation of the plug-in that's that's fine but I would like to see the best and the most needed plugins put forward and so if the answer is community to create this with your input because I want to see it's like several plugins absolutely awesome just to recant that for anyone who didn't hear because I thought it was really wonderful it was a positive community action in organizing yeah first people in the video yeah that that let's let's get a forum but let's get a community going when we list the plugins that would be most beneficial right now we've got we've got the kind of plug-in repository we also have started a key base team channel called meta master plugin I think with an S which one of them is a fish are probably good by the time I roll we'll get I think it's on the weekend if you're on that on the repo but but yeah I agree we should we should get those we should get bounties on them because things like like a stark signer that's a thing where one person makes it every dub can use it right and bet those accounts are portable between adapts I requested without reminding example that Eric showed where you are listing that sort of criteria that typically users now do made me relate to add joking right so does that actually could that like replace that process so that theoretically a developer let's say you're doing some benefits actions do you want to use your token and that you can kind of add that tokens and understand that Kerina the question is whether the the API were exposing for managing assets could replace the manual process of users adding tokens that's totally the point being the stuff on here actually have it both the IP 747 has the kind of real popular of y'all but it already does that it suggests the API at a time of tokens so you can do that today but this is the way that a whole are going to do it so if you've got like not just one plugin but you've got your a directory or something and also most of those that you guys like that that's that is a rough that is like a proposal right basically all these api sorry IP giraffe giraffe stages like we're traveling it's you as early as we can so we can get feedback and not feel hurt if we change the quality customers okay that's a plugin you get access to upon it no as a plugin you do not get access to the mind what you get is you get the top key that proposal that we're using right the idea that came to it was from RM to go from 0 X protocol it was a very simple and elegant solution I thought we take the your current account for for each account we take its private key combined it with through the plugins domain so it's the most secure identifier we have of it hopefully in the NS name or something can we hash those together so generate a new private key that is exposed to that plugin so your plugin has a private key that is deterministic we generated from the user's seed in a way that only your plugin has access to and that's why you know the get out keys proposal had some kind of a critique when we first posted it because all these keys aren't portable between sites we'll invite the PI to plugins they absolutely are so now a single plug-in can represent a single sign of strategy and every account can have any number of key types associated with yeah what that question it's a plugin ideas is going to be pasted based off of these critical plugin twelve crazy I started yet [Music] so it's not so it's so the key is not based on the source Cobra deployment okay right now it's based on the origin stream which still introduces a problem if you hosted somewhere else which is why we would like to support the MS and that hopefully it could just be hosted at the same place and you at this point it elsewhere yeah and that lets us like these plugins can be updated right now or something like you could imagine a very very secure resilient process for updating them which is something we're envy is a because the Chrome extension store doesn't give us that and they give us very force permissions that we have to request yeah you'll never have to ask for the ability to rewrite everything on the site it's exposing a baby bring the nursing support into the plug-in that you know you know there's there's a definitely a thing that we toy with and now that we've been playing with this is goodbye that we can move our architecture into the plug-in system and and we get this great kind of code isolation for free it's funny because it's kind of a great counterpart to the work that Aaron is doing with lava though where we are procedurally sandbox and all of our dependencies using the exact same order secured at the script assistant so so yeah I think I think it's a really cool opportunity for modularity really tight security between our own infrastructure but yet just connect with that yet for example yeah yeah for example yeah not just tokens but like almost everything that we do yeah so the user prompt was just an alert like an old-school browser like yeah these are going to be yeah yeah so just to reiterate just concerned that we're just exposing the browser alert no that's just MVP we have an opportunity to let you render whatever rich notification you want which seems like a pretty big opportunity there have been a number of different proposals from different wallets how to let daffs propose custom notifications and a lot of the basically the problem with all of them to me the thing that has given the apprehension about every propose that I've seen is they all end up pointing up some central repository and they're just like they're like they're like decentralize magic like yeah once it's a TCR it's not a problem or something here we're saying no very explicitly there is there's gonna be a mechanism for each plug-in to moderate and manage you could have a different governance protocol for each confirmations for you together different confirmation screen for each contract those are that is the kind of conversation that we can have methyls we can say what is the amount of granularity we walk with these conformation which means what would most empowered that's to feel coherent - oh yeah yeah I wanted to just how to wrap this up because uh because this is this is a we're coming up on one of our two hours and art our dream was that we could actually get some of you like cuz I bet a number of you here have like a library like star per head where it's like this thing you might be able to just drop in so I'm gonna just give you a few caveats like current issues that you might want to know when you're using the system oh yeah so so you're gonna you're you might learn through the build system you might get some errors that are strange or new to use these are usually things about your dependencies tried to mutate the prototype of string or tried to change function or try to mess with what promised it and and that's that's what Eric Emily said to club okay if your dependencies are doing things that are downright dangerous and they're basically resemble the same thing an attacker would do it's gonna fail it's gonna fail on the build system it's gonna fail when you try to load it into met amount so it's an opportunity of you get off of insecure dependencies and to push security updates to your dependencies which is a cool side benefit of this if you use our plugins isn't here making your dependencies more secure sweet right we're also gonna add big fat security warnings okay none of these things are perfect we're not claiming that test is perfect it's not a panacea but we should aspire for it to be and this is the kind of thing that the community should rally around helping fund this is this is something worthy of animal walked out of the community should get around formally verifying tools likes tests that let us all benefit from great the increased security okay this is a huge huge community resource and we're gonna give a lots of you guys love this in a very rough but you know it's sorry for the alerts and all that we really just wanted to get it into your hands as soon as possible we're also going to try to incorporate much better signals about whatsoever putable plugin we know that one of the reasons our users don't get fish the very often is that the chrome store has reviews and user accounts we would like to extend the similar opportunities but perhaps in a more decentralized manner obviously we're gonna put up a bug bounties and we're gonna have security audits and all sorts of stuff you can't audit this enough this is about the scariest thing you could do but if we do it right it just could be the coolest and and then of course we're going to improve the performance you've probably noticed that you know the popups are already slowing madam s this did make it a little bit worse we're gonna be tooling and we're gonna be improving and tweaking and all that kind of stuff and then of course we're gonna allow a plugins to specify settings pages because we don't know what you need but you do you can basically already hack it together because your plugin gets the work the requesting origin string so you can basically just say my domain is my set a string and give it special methods it's just kind of a cool side benefit of getting to define your own permissions and yeah a plug-in update visible will be coming that's wave something definitely required before production and before production we're gonna be walking down all global event Authority plugins we have nothing that they didn't explicitly ask for from users we're trying to make the most safe environment we can ever and then we gotta just refine those API beyond all that is just about getting you guys to communicate rally around the plugins that are most effective and the api's that enable those most effective plugins and those can be the things that we've really kind of focus on it's like a community instead it's a group of people so that that is all we have to say to get you kind of started we hope this is a big push on this you can connect to the Wi-Fi metamath right now and point your browser to meta mascot local and you've got all the docs and a little meta mastered supports plugins and the MN plug-in bullets hope you're like really paranoid about how this would happen and yeah other that's canvas if you do have the Internet you'll go to the github wiki three posts open now it's got a video that's very similar than the presentation we just made for the people outside of this room can be learning this right now and yeah so what's the rest of the time yeah that was exactly one hour maybe maybe like five minutes or something like maybe just like a few questions and then you want us to start going in with our whole team full of mathematical misery I was ready to answer your questions actually over or you said you guys researcher who maybe like to say a couple words before you get started so as such back there said that they have that ideas and what I can say on a bit you wanna listen to me on what against you and one of it and why obviously probably talk to us you want to hear you so that you can find out what the most effective is disregard and what we should be building close to death if you don't have an idea of what in my credibility but you can think of what is he missing in the wallet experience for users we also want to hear from you on what is a what in your DNA is missing from from the wallet so that we can think of potential solution for ID and as a travel card and the third thing is if you can think of planet is an application that you might see foresee coming with the system because muttered here a lot but [Applause] what's that just subscription subscriptions subscriptions like to events or subscriptions like around I made it payments right there right yeah yeah but you should group up with this plugin team over here that we're gonna have a little half the time for the next hour groundhogs does subscriptions that I bet you they can drop one in the custom asset thing you can just hack around right now when you click on it you guys are soaking a page so hopefully that's announced it just kind of like children canto yeah cool yeah baby wanna shout out plugins that you're hoping to maybe whip up in this next hour and you can help connect people that seems like a good use of my time yeah any any other plugins that people so University [Applause] you
Automatic transcript — names and jargon may be misspelled.