Developers, Developers, Developers – Ethereum for all your networks!
Devcon·Sun, Oct 7, 2018, 12:00 AM
Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on IPFS and more. https://archive.devcon.org/archive/watch/3/developers-developers-developers-ethereum-for-all-your-networks Péter Szilágyi gives their talk titled, "Developers, Developers, Developers – Ethereum for all your networks!" Speaker(s): Péter Szilágyi Skill level: Intermediate Track: Developer Infrastructure Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum Learn more about devcon: https://www.devcon.org/ Learn more about ethereum: https://ethereum.org/ Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. Devcon 3 was held in Cancún, Mexico on Nov 1 - 4, 2017 Devcon is organized and presented by the Ethereum Foundation, with the support of our sponsors. To find out more, please visit https://ethereum.foundation/
Transcript
so unlike many of the crypto projects out there aetherium isn't really an end-to-end product it's it has always been a platform by developers for developers and as such our kind of our primary task is to make developers happy so that in their turn there can make their end users happy now for to achieve this one of my opinion one of our most important roles is to either aid the existing tooling developer tooling out in the community or maybe fund or create new ones that the ecosystem is currently lacking and my talk would be about one such tool that we wrote but before we dive in let's see what the actual pain point are usually when the developers to approach it even for the first time they start playing around with remix it's browser solidity playground they get the hang of solidity they start prototyping their contract now unfortunately quite fast they realize that developing in a web browser is cumbersome so they switch to more sophisticated tools such as truffle which can do automated repeatable testing and also aided by proof of authority change or instant transactions now after developers actually finished writing their code usually the procedure is that they deploy it on a test net either robson or an alternative because that's really nice it's a real world environment many users etc now the problem is that this perfect testing environment often goes belly-up and the reason is one of the reasons is that the test networks are can be really heavy either due to spam attacks or to large projects such as raid on doing intensive tests these can be unstable from time to time usually because somebody figures it would be fun to reorganize the chain and lastly it can often be unfriendly because you have this awesome project you want to deploy but you don't have tests either and that's knowing and the truth is that if you are a small project than running tests on the test that is fine but if you're a bit larger projects such as radon or maybe have many projects such as consensus or perhaps you want to run a hackathon then the life does not or isn't really ideal so the ideal solution is actually to run your own network now this might seem like a good idea at the beginning since its light stable you have unlimited funds you can share with everybody but when you actually start configuring your private network horror strikes in so it's actually quite a nightmare to configure because it has the zillions of different moving components and so we've been working for quite long on a tool called puppet and the goal our primary goal with puppet was actually to run the rinkeby test not on it but we kind of realized that it will be an amazing tool for at least we hope an amazing tool for other projects too so we kind of polished it up and gave it out to the community and for the rest of my talk I'm going to do something really crazy I would like to demonstrate what it takes to actually create an entire ethereal network with bells and whistles live on stage so first up if you want to actually start your ethereal Network obviously you need to configure the Genesis block the shared initial accounts the balancers and you have to define what precompiled contracts you have what fees they have now there are different for cruise that you need to take care of and if this wasn't horrible enough if you have to do this for the five primary clients that's about four hundred and fourteen configuration values and that's just a snippet from parity is really expensive list so that's not really a pleasant experience however if we try puppet now puppet is a command-line tool but kind of a command-line wizard to help you so the first thing it just greets you with a nice message and asks what network would you like to manage we just type Def Con that's a nice network and then as what would you like to do well we don't have Network yet so we don't kind of shown that for statistics but we can configure the Genesis block so let's just switch that and what kind of concerns this engine well we have proof of Authority for click but since we want to actually across client that's what let's stick to ET hash nice do we want to fund initial account No and do we want asbestos chain Network chains well if you run a public network maybe it's worth I know for now we just do random and that was about it we actually managed to configure an entire Genesee state for five different clients without doing anything now of course if you actually want to run your own network then the genesis is just step one you will need to get some nodes online but one of the biggest problems that we see with people getting those online is that they have absolutely no idea what the nodes are doing so you really need to monitor the node somehow and really want to do that via them each stat so running each stats which isn't really easy to do but I see how puppet can help so what would you like to do puppet asks us what we'd like to deploy a new network component it gives us a choice let's stick to it's it's fat and which server well that's connector server we have a server called DEFCON Network it's a registered domain name oh yeah and yay Wi-Fi works awesome so we managed to connect that's why you don't do live demos do we trust this yes we trust the remote host now what where do you want to deploy it half since we want to deploy possibly multiple websites here let's deploy it on port 80 and do we want to share the port 8 with others yes sure now when we actually say we want to SharePoint port 80 purpose will deploy a reverse engine X proxy automatically configure everything without us having to do anything and what domain do we want to host this it eats that's page one dot DEFCON Network okay and what's the easiest password hello hello it doesn't matter yeah it's fine now it in theory public now runs in the background starts up entirely it's fast and everything and now not only will it start it up it also lists us that yes we a server connected the IP address and what services it's running and now if you load up a web browser and look at the actual domain name then hopefully yep we have a nice test running and you can you can see it is actually not an image it's alive that page okay now we have a you can monitor the thing but we actually have to boot up the network so let's deploy now boot node yeah that's sometimes the console is funky now again we have a small scan so let me know what we're up to and that's deployment and where do we want to deploy it well usually don't want your boot not to go down if somebody's dusting your website so let's just switch to a new server let's call it boot DEFCON Network and yes we connected a new server that's fine we can manage multiple servers at the same time where do you want to store the data directory let's call it DEFCON server what UDP port one we'll just you go with the default configurations they aren't even that interesting and what we want to call the booted on this past page that's called that seems about as dumb as it can get and again pop it does it's funky magic in the background and if we I think we can I can even close this yep and if we now stack I checked our stats page then yep fair enough we have our boot notes register maybe it's not a bit tiny but we have a boot running and it's immediately linked to the Status page we didn't even have to configure everything cool now we have a static chain that doesn't do anything obviously we need to mine on the chain to make it progress so we can again ask startup puppet ask it to connect to our new little network and let's see how what it takes to deploy our mining node now we want to deploy a new network component let's deploy a mining order sealer again miner kind of takes a kick out of the network machine so let's do put it on the miner dot DEFCON Network machine yep and yeah yeah where do should we store the data DEFCON Minor and we should destroy ET hashtags DEFCON and the remainder can be the connectivity strings can be simple and we want to register it on the et hash page as a listas page as the minor now what ether base should ooh that was fancy what address such a minor use we'll just copy paste this here and what gas price and gas targets we'll just stick to the default it's not that important and the game puppet is pushing out the mining note to our remote server and it should finish booting any moment it does a quick health check it actually checks whether the ports are reachable we have a nice dump of everything we configure until now and if we look at the stats page fingers crossed yep we actually have already four blocks mind and not only that I'm really hoping that the boot node will connect soon to the mining node but since time is limited we'll just check it in the next slide yep they've connected cool so of course now you actually have an entire network up and running but if you tell your friends that here I have this awesome Network they will just go okay and how do we use it and then you kind of start scratching your head so it would be really nice if well first thing first you could see what the network is doing so for that obviously we need kind of a block Explorer which currently for example there is no open source block Explorer that supports Goethe reham as a back-end but however there is one that supports parity now can we actually deploy a parity note so easily well sure let's try you want to deploy on your network component let's do an explorer where do we want to deploy it well we will put everything all our web sites on the same machine so let's use DEFCON Network as the machine yes we want to porch share port 80 and that's the network where should the data be stored and the defaults let's call it on explore on the stats page and again it's pushing it out fairly fast hopefully I'm just waiting for the node to finish booting yeah I'll just close it and that's it does it actually work fingers crossed yep we have our block Explorer up and running and we have already 11 blocks mind and you can check that our miner already has 42 ether that's a nice number and of course if you check the network stats then again you already have three machines running without actually configuring too much okay now we have we know what the chain is doing from the inside and from the outside can we ask our friends to use it well sure but it's kind of hard to use it for a simple client so let's try to give them a web wallet now of course everybody knows the most sophisticated web wallet currently out there is my Easter wallet so let's just deploy my service to our little custom test Network so that's just deploying you network component you want to deploy a wallet to our website website server yes you want to share port 80 and call it Network why should we store them and the default a bit and that's cool our wallet on the Status page since that one's also back and no let's just call it wallet and the campus is just configuring everything in the background for us and it is pushing out the data and if we check our wallet now this is something that takes usually the most time to boot up yeah boom we have our wallet and that UK as you can see it is actually configured for the DEF CON Network it deployed a back-end node to connect to we have the front-end and everything seems to work nicely cool so that one kind of was easy enough to deploy all the components but if you share this with your friend then he'll say that okay I want either and you will be the one who has to give them ether all the time which boring really fast so we really need a faucet that you can just start up and it just runs there and everybody can request ether and to do that we have actually go a theorem has a faucet built in or support for it based on the light client so let's ask Papa to deploy that yep we want to deploy a new network component and let's do faucet that's our sixth on the list and we want to deploy it again onto our web server we deployed everything there faucet DEFCON that work domain name sorry port 81st and then thank you okay how many do we want to the faucet to release well one if there is fine for 50 minutes we want three tiers if you wait more you get more ether do we want recapture protection against bots no it's the test Network here for DEFCON we don't care about robots where should we store the data DEFCON Fawcett sounds about right and just pick a different port for this one what shouldn't possibly code on a static page of course if I run a faucet I do need a private key so that the faucet can actually fund its stuff out of so we have a private key paste it in here we have to unlock it for the faucet boom it's unlocked and do we allow unauthorized requests well since it's a Def Con and we don't care about the life time of the this whole network so much yes we authorize anyone to request funds and that's nice and now comes the moment of truth can we actually as you say again we have a nice dump of all the configurations now can we actually load up the faucet yep is it yep we have a Def Con authenticated faucet and if we request funds now into an ether address give me one ether yep the faucet accepted our funding request and if the minor manages to mine us a few blocks yep we just mined it and we have our account funded and we can also check the stats page that everything that we deployed on till now have indeed appeared on the Status page now finally you deployed everything but you don't even know what your Genesis block is you don't know how to connect to it and it's just a mass of different websites on different domains so you really want to deploy everything on a single host or at least on a single place that your users could find it and the only way to do that is to have a nice dashboard and that is actually the last thing that what that can do currently let's just try to do that we're just having a nice yep deploy a new network component and find a piece of the puzzle is a dashboard let's deploy it to our website and let's use a root domain DEFCON Network for it and then it will ask which services do I want to list yeah I want to list the stat page I want to list the block Explorer I want to list the web wallet and I want to list the faucet and we want the East a secret to be public yes let's make it public and pocket again crunches everything makes the configuration files deploys a web server for us and if everything worked correctly I should be able to load up nice dashboard yep and we have the first page we have the eat stat on the left-hand side we have a nice sidebar many where we can switch between the eat stat we have the block as well that we just configured we have our web wallet that we can play around with we have the faucet to request all the funds that you owe people are requesting funds amazing and and beside beside all of these services as we configure we also have detailed guide on how to connect go etherium in archive node full node live client or embedded for embedded machines we have details on how to connect mist and serum wallet we have details on how to connect Android and iOS devices and finally if you really don't prefer goethe reom as your client of choice then we also have details on how to connect c++ etherium a theorem harmony parity and by if app and ladies and gentlemen that was the puppet Network [Applause] [Music]
Automatic transcript — names and jargon may be misspelled.