[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