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]