 So we have a special session today, so thanks for coming to this workshop. So basically I think Defcoin is also a good time for us to explain to you and share with you people we met in this field and which projects we are working on and basically to do an update of our job. And the thing is that last year we met kind of a lot of people. We had this release program initiative, a good opportunity to just meet with developers and work with developers for building plugins. So this workshop is kind of focused a bit on the release plugin but we also worked a lot with the great team for having a Linux desktop application and we had also some nice talk with Christian which is the best of all there. So yeah. So we will go quickly around with the schedule today. So I will do a quick introduction on the remix but I guess some of you already know it or used it. So with who here already used it, can you just, yeah. Because that's good, maybe I can just skip this part. So then Rayal is here, he's part of the great team and basically we work with the great team for having this Linux desktop app and then it was also a good opportunity to see how we can integrate Linux with great. So for having like a better depth of development for developers. So we will talk about that. Then we have Christian right here. So I think we might have already talked about this in the previous workshop. Everything is about publishing data and source code to APFS and then verifying it. So for sure we talk about how we plan to have distributed and this control to Rayfire. I think that's a big step that we have to reach at one point. Then we have, yeah, the famous how to bring Linux in five years. So there's no five years here because I'm not sure it will work. So basically it's kind of, it's very easy now to develop the plugins and then we want to share with you how to do that and how it can be now easy to develop and test the plugins in a Linux. So moving towards the plugins framework, we would like to present to you two plugins that we are developing with developers. So we have the Zocartes plugins. I think you might already know about Zocartes. It basically is against Narcon et al. And we have now a plugin that Dev can use for writing Zocartes code and for testing it and for basically doing all the stack of the use of the Zocartes on a Linux then. And then since four months we are also not working on workshops and we have now a plugin which can be used for creating and for doing workshops. So Chris will explain what is this plugin and then how this plugin can be integrated inside all the educational stuff that we are doing on the EF. And then we will have a brainstorm session with nice people that are here now. Thanks for coming. Rob Stupé, Jean-Pied, Alessandro Vanessan, Philippe Slange, Edson Akala, Eskala, François Gézangard here and Yorgitam. So basically we have this plugin initiative framework which is quite centralized now. So we are deciding which plugin can get in and which plugins will get out and we are auditing the code and basically we are maintaining everything and we don't want to do that for long so we want to find a way to centralize this. So the question is should we keep it centralized, should we centralize it and how, how we through and there is a bunch of questions need to answer that. So we will try to figure out maybe one step today. So thanks. Do I need to do the first part? No? Who does not know Remix at all? Okay, so thanks. So let's move to the super important and yeah. So it's Grid and Remix. Hey everyone. So my name is Nune Project this year. We were working on MIST and Grid is kind of an evolution of the developer experience. So we like to think of Grid as bringing Ethereum to your OS and what we wanted to do is with all these kind of CLI based apps build a unified UX that developers can rely on to run Ethereum tools and nodes that make things a little easier. I think we've all experienced between running Gap and Parity UI. The files are different and you always have to turn toward the documentation. So this is kind of how it's, yeah. So when you start Grid it starts with the menu bar app. If you don't have it installed, any of the plugins when you turn on, there's a one click start that determines the release. This is what Grid looks like. The about page starts with links to documentation and information about the plugin. We have a version list that we're really excited about that helps you kind of switch between different versions really quickly. Can we turn it around to speaker maybe? Turn around. Should I stand somewhere else? Yeah, a little less? Okay. I can talk about that. So with Grid we tried to build sensible defaults. You saw kind of the settings page that we went through. It helps you kind of understand the range of the features and functionality. Then when you turn it on, this is the terminal console output all in one place. And then at the top we have a node indicator that kind of tells you where your node is. The syncing status will walk you around to give you a visualization of where you're at. So we like to think of Grid kind of a mix between an app store and a launchpad. Meaning app store is around discovery, securely installing, knowing where things come from, making sure checksums are proper. Launchpad, easy to configure, it's your friction to run, all in one place and one home. The ecosystem's evolved a lot. We started with just a few different types of nodes and clients and now there's loss and loss. So Grid is based around plugins, the plugin architecture. And as you saw through the preview, these are all the types of things that we are trying to bring into one unified interface to make kind of the developer experience easier and more unified. These are some of the plugins we have now. And now I'll do a little demonstration of how Grid can make working with Remix a lot easier. We actually initially developed Remix as a Grid app, but then when they wanted to develop their own Remix standalone app, we thought it was a really great way to kind of show the interoperability between. So in Grid, down here for this demo, we're using the flags dev to connect Remix to a Grid dev instance, opening the RPC API and then also opening up the, with this here, we're opening up the debug set of endpoints so we can step through it and see. So we'll turn on gif. We're also going to turn on IDFS because Remix has some great IDFS integrations. So our goal with Grid was to, you know, just click any switches. It's a lot easier than going to the terminal and remembering, kind of bringing up documentation, remembering all the things you have to configure with Grid. Everything is kind of saved. So in your previous state, you just open it back up in your app. So this is the Remix desktop app. It's new, like Tron-based, and it's really great to have Remix kind of in a format where you can open on your desktop. First, I'll show deploying this contract, the example ballot contract to the developer instance of gif that we started in Grid. If you have any Wi-Fi, you can come. So now I'll show how you can, so when we started gif, one of the settings we had was to open up the RPC API. So here we'll use the Web-3 provider to connect to the default port, 8.45. It's now connected. And then if we were to deploy the contract, it's going to be here. It's, like, went through. If you go back to Grid, it's in the terminal here. So I'm going to block with that transaction and show the debug. So if we set it delegate and move the debug down to the bottom here. So here you can see Remix's debugging mode now that we're talking to Geth and you can walk through the code and see the process reach. So that's exciting. And then kind of as a last step, if you wanted to publish your contracting details on IPFS here, publish on IPFS, right now the way the app is set up is it'll publish to the Enfura gateways. The IPFS server held in the Berlin office and also if you're running a local node, it'll publish to local node. So now if we go to show that it's now being hosted on my local node that I've started with Grid, you can do, so what this shows here is that in your local references of your hashes, it has the contract details. So yeah, that's good. So please, Christian, can you go? So now we take a look at how this contracts and verify if I can work. Will it work? That browser? Browser. Sure. Yeah. Yeah, so you just used that button, publish on this forum company here, that's great. The thing is, it's a tiny button, but it's part of a big mission, and the big mission is to make the Teres happy this evening here, because almost four years ago, the first thing he did in the Ethereum space was developing a feature for the Solidity compiler that nobody's using. And I want to change that. Okay, how do I switch? You can use that browser. Can you use that browser? Want to click on it? This is a condensed version of a longer talk. What is full-screen shortcut here in this browser? F11? Oh, that was fast. Okay, I'll skip some stuff here. So, when you are using MetaMask currently to confirm a sign-in transaction, it shows a screen like that. It's terrible. It has been planned from the very beginning to show something very different here, but as I said, this has not happened. So you know why it's terrible, right? Or don't you think it's terrible? Okay, good. Because these are the reasons why it's terrible. Okay, and so the way to change this is bytecode metadata, and this is one of the things that are published in Remix when you click on this published IPFS published on Swarm. And it has been a feature of Solidity since 047. And it's mostly unused, as I said. And so if you take a look at the contract bytecode, then the end of the deployed bytecode always contains this metadata hash. It's not at the end here, because that's not the deployed bytecode, that's the creation bytecode, which also contains the constructor parameters at the end. So this is a so-called C4 encoded data. And if you decode it, it decodes it to this here. So it contains a Swarm hash, and the version of the Solidity compiler, binary, or kind of byte encoded. The first byte is the major version. The second byte is the minor version. The third byte is the patch version. Only looking at the bytecode, you already know what the Solidity version used to compile this was. But more important is the Swarm hash we have here. In the future, this will also be an IPFS hash, but currently we're using Swarm. And if you follow this hash to the file it hashes from, you get the so-called beta data. And it contains the full version of the compiler, the language used. It contains the full ABI of the contract. It contains the development documentation, and it contains the user documentation, also known as ethio-natural-language-specification aspect. And this is an example where, yeah, there's a function called renounce ownership. I think it's from ENS. And the documentation says renouncing to ownership will leave the contract without. So it tells you what the function does if you call it. And that is the string that has to be shown to the user when they sign the transaction. And the ABI that is also there allows you to decode, so to take this long hex string and decode into values that make sense to the user. Or there's even more. Namely, all the things you need to have to recompile the smart contract, all the settings that went into the compiler when it was run, and also hashes to the source files that were used. So the catcher cache, the swarm hash, and the idea for the set. And I... So the problem is that we have all this data. It's cross-linked. But the problem is it is not available. People do not publish it. And even if they publish it, for example, using this button in Remix, publish to swarm, publish to IPFS, it will not stay there because swarm and IPFS are not there yet to keep files. And because of that, I want to start an initiative to, yeah, create a service that just keeps those files on IPFS. So all the source codes that are correspond to deploy contract only for the team. And once you have that service, and once the state is available, you can run this tiny script here. And you don't see that the script is tiny, but it is. And when it runs, you give it the address of a smart contract. That's the first text string. And the second text string are the parameters that are, for example, shown in Meet MS. And then it first retrieves the bytecode. From the bytecode, it retrieves this metadata hash. Then it retrieves the actual metadata file from swarm. And in that file, there are IPFS and swarm links to the source code. It retrieves the source code. And then it downloads the matching compiler that was used when this contract was compiled. It recompiles everything, checks that it results in exactly the same bytecode, and then it takes a look at the data that is present. There's the second string here, and looks up the function that is caught in the Nuts back and the ABI, and tells you what it would do. And, yeah, so this is the service I would like to build. I'm not sure if I'm going to go into detail because it's not fully unrelated to me. But I think it will be fun, and I hope we can get to a situation where, for example, Meet MS, and of course, all other wallets do not look like the one on the left here, but rather on the right, where you see which function you're calling and what it will do. This needs a cooperation between people who are writing diploma tools, people who are working on wallets, and people who are working on blogging spurs, and if you want to help in some way, also if you want to help working on this service that publishes stuff, please talk to me. I have a question. The information that is stored in IPFS includes the ABI source code. Which is what? The information that you store in IPFS includes the ABI source code? Yes. Thank you. All right, thanks. So, let's start talking about creating some ratings. NCC, I think we did the first presentation about those plugins with a new interface. So, I hope you like the new interface because we haven't seen it yet. And you have a preview of the new logo of Remix by the way with Remix desktop, so if you have it, this is quite new. And today, who here built plugins in Remix already? One. Nice. Great. So, for those who haven't, I just want to take five minutes to show you how easy it is to actually build the plugins with Remix. So, I just want to be sure. Do you hear me at the end? Yeah, perfect. So, I want to show you I'm doing it the right way. So, I will clear the local storage. Everything here in my browser. Okay, that's good. Here, okay, I have a clean workspace. Okay, nothing here, no fights. I will start running the plug and after five minutes, I will have a running plugin on my computer. Okay, so just for letting you the last time I did it, I failed. So, I will not push around me, okay? So, okay, let's go. So, putting some Remix work inside Nightframe. So, basically, what you need is an index.html file. So, let's create it. And you can try to do it at the same path as you want. I just created the index.html file because that does the part of it. So, what I'm going to do now I'm going to go on github.com. Remix, which is the library we build to interact with Remix. So, we have an NPM package, but for the sake of the demonstration I'm going to use a CDN. So, here we'll pass the CDN. I'll create the script and go back to the documentation. And from here, it says that I need to create what we call a client. Basically, class is going to call to talk from the Nightframe to Remix ID. So, I'm doing that here and then I'm going to create a necessary function called say hello. So, my calling is basically going to create a new file on a Remix bar system and display hello world because that's the easiest thing to do. So, for that I'm going to look at the documentation again. So, here you have everything that you need to know about this and here you have all the native plugin that we expose. So, here which native plugin should I use to write something in the crisis lab? Come on, that is running out. Try manager. Okay. Let's go. So, I go there all the methods that are exposed. I won't ask you this time. So, first I need to wait that the client is actually loaded. And then I will do client.call. This is to call the client manager. And then here I'll give the method which is set file. File is going to be inside brother slash that file. So, that's how the text is hello world. And then I'm going to do the same and just change the file so we can see it's correct. Switch file. Let me stay here. Hello, the TXT. Perfect. And now I just need a button to trigger the function and by default we inject bootstrap. So, just for you to know you don't even need to inject it because we want every plugin to look the same. So, just say hello. So, now I will run ntx live server go back to remix here inside file manager I can connect to a local plugin and here I give the name of the plugin camera case say hello. This is the display name, say hello. HTTP proposed 8080 for me. Here I have my new plugin that's arrived. I have my say hello with the bootstrap I click here, ask me because it's my system you don't want to give access to everything here I want to accept it, tells me and accept it. BAM! I did it. Yeah! Sorry? Now I have some experience this one I was working on it because last time it was for me. I really wanted to show you how it is to connect to this of course this is a hell of a world you can use whatever framework you want we have example with react view and draw, delete element whatever you want we can build some for you to show you how it works and also with this plugin you can call, so this is like all the quotation but all those are exposed by default and we also have a new way which is like external API for example we have this freebox plugins built by API here and it's exposed all the freebox interface directly inside remix so even your plugins extend the remix API this kind of thing and I want to talk a little bit about this project so everything about this plugin engine that we are building and I want to say that it's actually a two layer of interoperability so this is how it works right now you have remix IT you have the plugin engines that are inside it and you can plug any plugins you want so this is that type of plugins but what we really want to do that's anyone any project that wants to be able to decentralize application or ID can use actually this plugin engine and we made everything possible so that any project that has a web view because it's here iFriends can create integrate remix engine and we really want to make an open call to anyone that wants to try to use this plugin engine please come to us so like that if you build plugins it's not going to work on your remix it's going to work on all the applications that are running this plugin engine but if we go a little bit deeper so that was the first step application layer but we want also to be able to have an API layer because if we have a lot of wallets we're going to have a lot of wallets right so what we want to do is we don't want the plugin developer to say ok i just want my plugin to work with methamask or 2 with this wallet and specifically we want them just to say that i want to work with other wallets and then it's up to the user to choose which wallet they want to use and for that we are working on a common API and common interface so that totally agnostic for the user when they are to developer plugins if they want to integrate to add a wallet like that so the idea that you can of course use methamask but you could use also whatever wallets you want and this is our next step and we really appreciate any project that work on this kind of standardization of interfaces because we want to be able to accept a lot of different plugins and try to make it as interoperable as possible so thank you and now i think this is a product plugin so please welcome my name is Zeddy and Darko here will help me with the workshop part later on today the idea is to showcase this plugin these amazing guides to help the implementation itself and we brought it to Remix so you can hack and play with it basically the idea is to make this the usage and the creation and the verification part as easy as possible so you as a solenoid dev or dev that isn't familiar with zk snipe syntax can use this and test it on the Remix plugin so basically we are going to take a look at the user perspective here what do you do you actually write high level code you compile that code and what you get is set of conditions or the plugin code next we can have two steps either setup or compute but in this demo we are going towards setup we generate a sprow and a verification key and then from that verification key you get the verification smart contract that we are going to deploy in JavaScript or inside the Remix and on the other side we can create a witness front flatten code and so on but I will show you that also for those who want to track you can open your laptops and just open Remix so you we can test together with this so basically let's go it's a bit hard to track so basically what we are going to do we are going to activate three plugins first one is zk snipe the second one is solenoid compiler and the third one is loid and reference sections oh ok thank you I have a special thank you Florian a big applause for him please so now when we activated this plugin we are going to show you a simple example so we are going to click on an example file accept all that the Remix was from us I will probably give my kidney away but it's ok so here we have an example of the combo what this code does is actually pretty simple you see this code so we have two fields private field A and public field B private and public will be important later and we will say what that means but basically result is A equals B then it's 1 else is 0 so basically E squared is equal to B and we will see if that is true or not or that is 0 or 1 so basically the first step as we mentioned before is the compilation so from this high level code we will have a set of conditions we are going to use the compile you get this basically we can copy that bytecode and download it if you want to use it offline this version is also compatible with CLI so you can take this what you generated here and move it to CLI once we did this compilation we got this flattened code what we will do next is the setup I won't get into too much details now because I just want to show high overview then we can later talk about what each step does so the setup we will create is two keys, verification and proving key we are going to run that part and here we can see that we gained two keys that is proving a verification key that we are going to use later on so on this setup part we have generated that and the next step in this, if I am going too fast just stop me at this so it's really just do that and on the next step generate the solidity contract from this verifier I am going to use AVI version 2 because it's the latest version and this is moving towards that so we are going to use that and we are going to do the export what we just done here is we have created a solidity contract that we can deploy and then verify using it this is an average contract and what we are going to talk about now is this verifier transaction because it's important so basically here we generate a contract that we are going to deploy and we are going to send a proof and to UN to that contract so input parameters and the proof itself so let's deploy that let's first compile it we'll take some time I hope the internet is good and once it's compiled inside JavaScript we have is this the file for you or is this ok ok, awesome so basically we are going to take this contract verifier and deploy it here so here we have just one function where we are going to input some stuff that we are going to generate in the next step so basically just to recap quickly we had this high level code which we compiled this setup which generated proof and verification key and from verification key with export verifier we gained this smart contract which we deployed in our JavaScript VM and now we are going to do this path on the left so basically on this path compute witness does what it does is basically from this input arguments it generates the field that you can input inside here and as we can see this is a private field so private field A is private and that would be important because of the privacy feature of the ZK start that in the next step we will see how so basically we will say someone give me an example of which number square is some other number 4, 16, oh yes so 4, 16 here oh that's 15, 16 let's compute that so basically witness is computed and we are going to generate the proof now that we are going to use there but first let's open that proof open it here and we get something like this so ZK start works that way that these three points are elliptic curve points for ZK start and these are the inputs as we have seen on the compute witness okay this may be a bug it's alpha so sorry for that that's the most solid so basically as we can see in the inputs what we have here is only 10 which is 16 this V part and we have 1 which is the result of the function but we don't have 4 anywhere why because it's the privacy feature of the ZK start so basically we don't have to show the private fields in this proof to be able to verify the proof itself so basically that's it and now we are going to take the general proof copy those parameters take that here and verify the transaction let's run that, let's wait a bit it will take some time I guess for five seconds we'll see about two okay I'll submit fast now let's open it and we go down there to the code and it says true so we managed to verify the proof so basically that's the short flow the high overview of it what would happen if for example if we did this so 4 times 4 is 16 but what we say what if we said it's 9 what will happen we can compute witness, we can generate the proof let's then again copy the parameters and let's verify that for a second let's wait a bit to show you here on this part it's waiting it takes a lot of time but it's good basically now we'll again verify that it's true but what is actually true we verified as we make it open this that's everything we're going to say that 4 times 4 and 9 as result is not equal so basically we've again verified that we know the private values of this so basically even if it doesn't satisfy even if 4 times 4 isn't 9 if we say that it's invalid then we verify so basically you don't need to have it's not just arguments that satisfy this condition are true that are 1 but also those that satisfy 0 as a result can also be verification of this so basically that's it for sure do you have any questions or should I go into some detail in some spot is it show like a signal error in the socrata yeah we can make an error let's do it like this so let's make some result that's the conclusion again and this says that if our result is undefined and stuff like that we can do something else but basically you will get a line where it's the error so basically that's how it's made any other questions does this run inside remix or are you going back to the external yeah it's a complete inside remix it's way as a base so it's all inside so that's written rust so you can find that web assembly that's right there is one version that is cvi it's multi-treaded and cvi uses another version and this is similar to everybody else so basically this is a bit slower but it's more user friendly and it's pretty good okay any more questions yep you got how much gas oh good yes more water so it's all tried with optimizer yeah we can run it bugger plug yeah probably add some we have to make something good we need to activate it also and again we can this is 7000 5607000 yeah that's okay and in fact it's going to be much better after Istanbul so we see basically a third of it that's basically if you have any more questions feel free to ask us later on and thank you guys now we have two more items we talked about the remix workshop pre-initiation with Chris once and then we can switch to a brainstorm session where we talk about how to curate the release and how to add more simplification on our plugins but just watch out yeah let's take it to center stickers are there yeah yeah thanks I'm going to show you something we did but due to various technical issues problems alpha software so one thing one thing one thing we're going to try and do with the foundation of lot more between here and next there's a lot more focus on education and on boarding and documentation probably for a lot of people in this room this may not be so important but if we want to do what Geraldine described as the next million devs then it will be very important so one thing I've always been a big fan of is documentation and people can also interact with and that's kind of what the workshop plugin lets you do so somewhat limited right now but there is this new workshop plugin you can activate from the homepage too and we will start adding curated workshops to this but also you can create your own where we see the internet is you can either manually create them by adding steps and then linking to files and I'll show you the structure of that in a minute but that's a little bit tedious so one of the other steps now is to import and follow a certain path and that's what I'll quickly show you so in the salinity documentation is this introduction to smart contracts example and one thing I tried to do was recreate this as a workshop plugin and if you ever used any kind of interactive education tool before then you have things like I'll show you very quickly description the code to play around with and then you test what you've done and if it's correct you go to the next step if it's wrong it tells you what's wrong you fix it etc etc this is currently using the kind of error handling feature of salinity things like revertness, require and assert so we can't test it at the moment but as far as I've promised me we're going to look at other ways to figure out how to test some of that stuff for example in this smart contract example it tells you about a fragment version, we need to figure out a way to test that for example and it basically looks like something like this, this gets too slow I'll switch to a local copy each step is defined in a folder and the file name is important especially if you want to import from github because then it will just match all the files it needs from that file name and if I jump into one that is a little bit more there's everything in there you'll see a markdown file which contains the text the text you just saw could you please increase a little bit the size it's also a tiny hit I can barely see what I'm doing is that better there we go so there's a markdown file that's the explanation and one thing I will say for anyone who's interested in this writing converting normal documentation to something like this that's very bite sized is actually really really hard so actually possibly the hardest bit of this is figuring out how to explain in very few words concepts in that side panel I wouldn't say this is still too long it probably needs a bit more work but it's actually quite difficult and then you have a basic solidity file don't forget this should be the solidity file without the thing that you want people to add so it's kind of its current state and then here is the test and at the moment we have a little need to figure out how to test this properly because the explanation maybe introduces a concept so you have something to test because you need something to test and that's pretty much it so actually just creating the content is probably the most complicated part of the whole thing and then you get an interface much like you saw we had this we had this we had this we had this we had this we had this we had this we had this interface much like you saw with the steps that people can work their way through and complete a course complete a small workshop and we have been testing this and Rob is going to run a workshop using this in Paris in about a month as well so we tried it out and it works quite well so if you have tutorials you would love to add in please do or you can add them yourself and just run them and this sort of fits into a lot of other things we are trying to do I don't know if any of you saw in Ios Kino there was a little thing about Studio.Athu.org coming soon that's actually a similar product to Remix that was built by a team in Spain called Superblocks and that adds the ability to test things like the HTML and Web3.js JavaScript to build a full stack DR but the nice thing is both of them are using Markdown and Smart Contracts and then HTML and JavaScript in the case of Superblocks so you can actually share content between them as well and with the plugin infrastructure the eventual aim in the long run will be to hopefully kind of make one plugins of the infrastructure on top so yeah that's just some of the things we are working on in terms of some interactive education tools and hopefully in the future we might also better make this embeddable somehow so it can actually be directly in the documentation too so yeah please give it a go we know there are some limitations right now but it's certainly something to try and experiment with and figure out how to teach people the wonderful world of civility program so now let's move to the brainstorm session so basically now we want to discuss and I think it should be like an open discussion so I would actually like to just raise your hands and if you want to come you can also come here to just exchange stuff and share ideas together and the starting point of the discussion is about plugins and to see whether we need to complete some highlights and how we should then go beyond this and what will be the brokers and etc so yeah please Alex I think like which would be the arrow that should be boarded and I'm not sure please just come up here and then talk with us please so then I pose a question why why does it need governance in the beginning it is better just to have in the beginning just like a central trust server with you yeah that's a good question but I'm not sure if I'm the right one to answer that but I would say that you say it in the beginning in the north south it's not the beginning and for me it was the right time to move to the centralized movement but it looks like this thing and maybe right we do it with more and that's basically it's not the right time so it's like from that talking about yeah what we're discussing now okay so let me just introduce this thing so we have this remix of the plugin from work now which means that any developer can propose plugins and can develop plugins it's at the case of edgy for the fastest plugin and at the case of edson here for the best provider plugins so we know those guys it's fine for us to have their plugins inside remix but if there is multiple people coming and saying okay we want our source to have this plugin and we want to have it in the remix and we're doing all this push to make everyone do a plugin but are you doing a good plugin, is it just a silly one or is it a malicious one I have a question so like is remix getting in some plugin dog food like the salivary compiler is that what remix is using or are you using the salivary product plugin when you're compiling yeah so basically we have a bunch of plugins made by us like as doping just a plugin and we make salivary plugins I would just ask you a question so just to Alex's question I mean doing that it's in early stages you want a final list of plugins that actually work the last thing that you want is a long list of things that do not work and that's how no one can decide what to use so we definitely need in day one I would say governments just like with Ethereum you can't just send free transactions you need a host with it with governments I do have a technical question it's okay it's not a lifted the government's aspect but one thing we're trying to add to our plugin is a field so we have a get point get point from the transaction access another field beyond what's defined in the regular transaction format that you have so from two we added an extra field that gets stripped out before it's sent to public mail is there a way to create plugins that allows us to do that right now I would say no because I think it's something that's done directly inside remix source code so this is one thing that we're trying to do is for a steel concept this plugin engine we want you to be sure that it's worth spending time on that I think it is because there are a lot of developers that are interested into it I would say most of the plugins are fake plugins right now because they're just like the file system for example that is directly inside the code of remix and we need time to remove it and try to improve this kind of thing but it's going to be possible but right now it's not well, Zacherty's now it's also part of the remix code so that's external plugin that's why I think I want to develop an external plugin that allows me to customize the list of fields that are being passed through but running around transaction is still naked and we should probably extract this out so we can use it but we don't have it now I think this conversation we're having right now is really interesting it shows you that people actually want more API how do you govern that? that's actually a good question something that we're doing right now we have opened a GitHub and opened all the common API that we have right now our goal as I explained is like to have common APIs and it's actually more difficult than I thought at the beginning because there are already a lot of software and the only standard API that I know right now is like the web-free provider which is the only thing on file system that you just know but everything else is like super difficult to know and we need like working groups of people from the industry to talk about that but still we need to not just talk we need to produce something because you have this kind of issues so the way we are doing right now is just taking the current API from Linux and put in exposing it just like that but I think it needs to be created at some point so always the same proper concept and then we try to make it most standard as much as possible with all the people So we prefer of course just to fill up here I prefer even though there are others that might want to ask for new APIs I prefer to send the same same transaction but customize the builds that can be faster because that makes it compatible with all the other clients, lighting and we don't need to create something custom especially if you have also this thermal API that's using here or other applications then we don't have to create them Yeah I have I guess it would be nice to have to define certain rules for instance I want to extend certain API let's say I'm using TypeScript and I want to extend the types so probably define certain rules and guidelines to do it basically Yeah so what kind of guidelines do you respect? Something that's inside that checks before exposing the plugin or is it a runtime or is it just guidelines under documentation? Yeah I mean just for instance I'm a plugin creator and then someone else is coming to create a new plugin and he wants to look into the code of my plugin and everyone has different ways of doing certain things but if you start looking at people like you want to extend the types or you want to do something else you can do it in this way so the mental model of the next person is going to be the same as he's going to know how do you do it internally in your team and you propose new API or new changes like for this entire plugin system did you create a proposal and you just got it in your team? No basically it was like more we take the code like it's currently used and we just export it No I mean internally how do you communicate with your project? For the API it's more like for example it's a test profile and at some point you will need to access the login information so we told us okay I want to be able to get the trace to have a new API for getting the trace so we just say okay so we can just extract this from our code and then we will make an API for a new to access it I mean it's more like if one in there wants a new API we just see it makes sense to have it and then we just Okay so it's still very centralized I know it's centralized When you're project management you create a little sub-project from that and how do you summarize what you want to do? It's not that formal it's more like what do we need right now? Are you going to be able to do this if you open it up? Like if you open it up to the more community and they're going to sit there and communicate with you and chat with them all the time emails and then you're going to make policies or are you going to organize proposals like make a proposal make a comment modify the proposal you have to create more process like creating a branch on the GitHub see if people want to command the branch that kind of thing or whatever, yeah I mean we shouldn't solve it now but you have to know that the more people you have involved the more structures you can have to login them to like stakes or ether and you can make all that That can fund security review Actually yesterday we were speaking about one of the things that Dan mentioned is like ok let's have some development you go you create a proposal and I have this idea so people can come they can vote let's say automatically you will sign a voting from the community to start voting but one of the things that Dan mentioned was what about the long term we can what is going to happen if these things don't work so I like the idea of always taking something maybe you can even talk about a plugin and people can donate and things like that But again, you don't want to create a huge thing to govern for governance to govern like 50 plugins right? So it only starts making sense when you are talking about tens of thousands plugins because if you have like under a thousand plugins you probably can just use social just in the sense of like I trust him to review, I trust him to review and things like that Maybe you should look at what others are doing for plugins like there is plugin for Argon, GL and Green for them for them it's also very internal and I think we have reached the point that now we need to know because right now if you want to add a plugin you need to pull requests on Remix ID and we are trying to switch to something more external from us so now you can just pull requests with another repository and attach our code so it's the first thing to extract from Remix ID but at some point we need to find we have to validate everything that's how we do that You can use a plugin without registering it right? So if I like publish one and I just like to register it I should be able to do this Can you load it? You can load it locally but you can't It's actually a local host or can I connect to it? You can But it's more for death purposes where you want to develop something Yeah, because otherwise every time you refresh you have to I think if I may say something here that I cannot see that so we started working on this plugin that's here just after deathcore 4 and then basically a sound that you would have to take less time to reach the point where we need to go I think it's a question of timing it's falling towards the time to push this but it looks like we have now 15 plugins What's that like to your team to have 15 plugins? What is it like for your team with 15 plugins? Is it a lot of work to review all that stuff? Like what is that doing to your team? How much work is that? Basically AG is doing the Zocata plugin At the moment we don't review it It's written in alpha version we know it's not ready yet So for my part I'm maintaining 5 plugins and it's already a lot of work and I review also this which is not even written it's written in react I don't know so much react So you know it's kind of issues that we thought and a lot of people don't know what framework we're using but yeah if like we have pipeline pipeline is written in few it's huge core base so it's super difficult for us to maintain this kind of thing and each time there is a new update we need to review again new updates will bring some new every time the upgrade Is it possible to make the ID in a way that the plugins are sitting in a separate repository then anyone can just get the remix and then just install the plugins then you don't need to maintain any plugins if it's that architecture you just like to have a remix someone gets the plugin there is a plugin repository to even to govern anything so people are just like really choosing whatever plugins they want to install those things are going away So do you expect people to go to the repository and look at the code and say ok this is the grid code I mean I don't expect them to do that I expect people to just have a look if it's like a highly valued or whatever the team has created and they pass this team this is up to them whoever is going to use these plugins do they want to use it or not so basically there is no single point of deciding so it's like I mean there are different signals I don't know can you use a few keywords for that keywords oh keywords like two weeks for validation of the plugins jurors are training and then the end of the plugin is using your remix I mean it's made public and how can so how can if I want to be part of jurors we have to engage like people so the case is I mean I'm not an expert of jurors but I think this could be an idea to deal with this mass needing of reviewers because reviewers are on money and what project good outcome on the case so it could be a balance to have less work for you I have a question so I see what is the trend model right but I see two types of bad looking right the first one it's just a plugin that breaks it doesn't work and it sucks it never feels low it's just a bad thing and it only affects me the second trend so it's a bad thing it actually changes the source code of the contract when it's deployed but then you could argue that like you should not use a company the final thing that you should trust is the contract that is on the liter scan on the blockchain you should go there and verify it there so that's if you're using if you make a contract and publish it on the on the blockchain then you should verify the source code there not in your relinks local fame the thing like from what I see there you in some plugins have access to the file system and for example you don't create an active and done plugin and change some that I can access the file system I can be malicious in the file system then you can test because you can test source code of plugin but integration with other plugins malicious stuff like that that's hard again in this scenario it seems like we're still not clear on which APIs we're going to need what sort of features we're going to need so before we start thinking about the threat model that we need to protect against we probably need to define all of the features at least a good number of features that we want to introduce and start building and then we can start thinking how we're going to protect against malicious plugins I was going to say it depends a lot on what the plugins can actually do and what they have access even if it's limited I think in the future it's going to be more and more it might make sense to expose it because there might be some plugins that do need access to it to make some sort of function in the future and the threat model that really worries me is what we see and my question is like from plugins and things like that which is a plugin that gets really really popular and someone just goes to the developer with a lot of cash and says I want to buy it and the developer just transfers the next update there's like a thousand models I think this kind of thing it's not really about thousands of plugins if it's like 50 or it's already a lot for us to be able to reveal that there are every update check if there's anything malicious finding solutions about the brand just think about it there's a lot of reactions yeah so basically now before you can just update as you want because we're just on the CDM so now we are traditional so we are on the KFS so we have the hash so each time you update there's a new hash so I guess we can know that the version is different but it's just a way of warning people it's not a do you have any roadmap like the concepts of monetizing those high quality plugins we don't we don't have any roadmap right now for monetizing for building a market place for those kinds of plugins I think the monetizing is up to which plugin for example the Metix plugin has a film version if you update you will have access to more possibilities so it's possible already now you mean yeah I mean this is a nice frame right you can do whatever you want it's just that we don't say if you pay that much of effort or if you didn't select that much of effort you don't have access to the plugin everything is decentralized you can use it you can even get the source code you can do it for example you don't need to program it for that monetization I mean it's not on our roadmap for sure and I don't think we are yes I don't know if anyone said it but I looked at it and explored and I got that significant upgrade from where it was yeah it helped us making it better and that's why we run for this discussion today because it's something that we want to talk about speaking with the community and know what you expect and I really heard your point about having more view on what we are going to do make it more organized because right now it's like we have a concept right do you think the point about making it more organized can just help us figure out what's the important plugin to put in the list or is that just it's to create structure to the process then you can start to create rules for the process it's just too much of an open fluid conversation about what people want and you know different communications generally for that it can be difficult so you look at say the EIP process or you look at for example like Apple Store there's all these very formal steps and pipelines to these processes so you might learn from that from an outsider because I'm not inside your team and that's a place of both API and you know when people submit requests to your project like what principles are you using to evaluate that for API changes and to plug in participation participation the point also we have this history and the point is just for people to propose API and to reach the point where we will not be just deciding all the API and for me I think it's a good thing but at the same time if we throw down everything then we have to wait for weeks for API to be approved or for the API your is a bureaucracy but at the same time we have to do this but if I know it's okay until you meet a threshold so my point of view personally now is a good time to build like a working group with some few people outside of Remix so we can start having work on what should be added the roadmap of this kind of thing we can work on this history it's really this place where we can all add these key tabs so every developer knows how it works and also discussion every two weeks or something like that to know where we are going and this kind of thing I really I know that we are seeing the guys from Microsoft today and they really want to do that they might want to use this inside a PS code so if you want to be part of this working group that we are starting to build please come and see us just like that so we can organize this working group can be like a ring in traditions and research it could be all sorting to measure but focus on this subject maybe you have a better experience and what would be the best amount of people to manage at our very early stage it's difficult with working groups because people might be enthusiastic at first and then they might move on to other projects and the team really needs like a good organizer to constantly look after and keep it going and constantly ping the members and have phone call or conference calls or chat as you know your community of people who are giving you feedback you need an organizer what do you think Nick you are doing this SPM what do you think about the potential feedback I mean in the SPM I can stop something so we have like the federated registry so model where everyone maintains their own on-chain registry so it's trust is like all of it I can't prevent anyone from releasing a malicious package so it's just like the user has to trust the registry they're interacting with I don't expect you guys to maintain security of the components interact with it I expect you guys more like I'd rather you guys pull it or something but if there's a malicious one malicious one what's the mechanism of knowing that like we should help each other knowing better or to be like metadata who maintains it immediately to their community or like their twitter who makes everyone knows just have a report we can improve you I report directly from the community yeah review every plugin yeah how do you get someone to review it someone needs to review it you're right in the value zone there are people using your tools to deploy family assets corporate assets if you can't interact don't know how to interact with blockchain well people well yeah users don't are putting huge value you have to assume the user doesn't isn't a total expert because they can just open up your tool copy paste something and put a multi-sig in there and put the whole family in well then put like a warning or something that we have not review this if you don't know what you're doing for the beginning I would suggest a combination of what we have now and what ProBase was suggesting so there would be maybe two buckets like one bucket is the trusted plugins for now that bucket would be like go and experiment on your own risk maybe even two, three of them I don't know with the time but still it would be a good start with red titles any style you would prefer but also to be changing the subject slightly for the last couple minutes I also wanted to have a session of people coming up with ideas from plugins plugins like if there's a developer experience problem in the ecosystem that you think might be solved with a plugin can I change the front? that's the theme but that doesn't work yeah it's a theme is a plugin so it doesn't expose like add a new theme yet but do it for real cause now it's like my font I like yeah also I think that I want to have a right panel in the right side of panel the right side right now you can only position the plugin in the left side bottom but one idea that I have is I really would like to have a real time storage visualization so that I am writing a contract and I can immediately see how this is dropped like this so I think for learning purposes it will be really useful to put that in the same place we just changed the UI and he wants us to go back to the previous one I see I love it I think it's we have three minutes thank you which list would you like to use just go towards this oh yeah yeah and if there isn't a date of patient I mean both of you are saying like not very high gear because the plugins are very high which would be nice for me yes making it like close to be a full idea like a desktop version with configuration files like being able to use them in some way that it can be configured and then the whole team is just using the IDE like an easy because now it's more like a web phase one which I'm mostly using as if I need to experiment on something but we are not able to switch to remix completely for our like code development because of like I'm not sure what is it now like at the state but like having a configuration file for which includes some like for example chat for a soul cover etc etc is it possible now with remix or not I'm not sure so I think basically the thing is that remix was used like two years ago as learning platform and turns out that many people use it for like improvement just for you can I use a sodium like a plugin and then have a configuration file on my like disc and then the remix for this configuration file differently you can have like a plugin and then you can I mean you could with RemixD connect to your mobile yeah that's what I mean it's like a complicated setup going through the remixD to get I think it would be because to have access to the file system but again there is a lot of issues with the remix as access to the file system and with it expose it in the plugin API then it's not like just changing the code before deploying things it's like changing the file system what the users are but let me say this it's a VS card yes but I don't know what is the security in VS for that they also have plugins they have a review system they don't have they don't have wallets they don't but they have like a solid like contract development with that I think the kind of thing we have to discuss with them like version control would be quite useful when I look at them you know you write some control then you go to give them and you change it there or you have to go to log-line then you need to change it yes she is 76 months old she wants that perfect, thanks the issue itself is 3 years old the issue itself is 3 years old it's fine yeah we have to level it okay great okay