Developers, Developers, Developers
Ethereum for all your networks!
2 November 2017 Devcon 3, Cancún
Péter Szilágyi
Ethereum Team Lead
Birth of a DApp
Early hacking via Remix or similar tools
Quick prototyping Solidity playground
Slow compilation, cumbersome workflow ¹
Test driven via Truffle or similar tools
Repeatable automated testing in code
Instant testing via testrpc or PoA dev nodes ²
Integration of a DApp
Deployment on Ropsten or similar network
Real-world behavior, multi-user environment
Live integration, user feedback, launch preparation
Perfect environment... until it goes boom 💥
Heavy chain due to frequent spam attacks ¹
Unstable chain due to occasional reorg attacks ²
Unfriendly chain due to limited test ETH availability ³
¹ Raiden 😇 ² Rinkeby / Kovan ³ Faucets
Run your own network?! 😱
Mixed bag of treats
Yay – Light, stable, unlimited and shareable
Noo – Need to deploy, monitor and maintain
Omg – Genesis (per client ), ethstats (auth, bans )
OmG – Bootnodes (firewall ) and signers (accounts )
Omfg – Explorer, wallet, faucet, guides, website, proxy
Uhm... yeah... hmm...
Puppeth
Chapter I – Genesis™
Define genesis state and protocol rules
Determine initial accounts and balances
Determine precompiled contracts and fees
Homestead, Tangerine, Spurious, Byzantium...
Repeat for all desired clients (5)
414 lines of configs at minimum
Parity config snippet (20 lines out of 155) 😱
$ puppeth (demo)
$ puppeth (live)
x
Chapter II – Eyes in the Sky™
Deploy network monitoring daemon
Configure and build ethstats via nodejs
Configure and deploy an nginx reverse proxy
Reconfigure login secret and IP blacklist
$ puppeth --network=devcon (demo)
http://stats.devcon.network (demo)
$ puppeth --network=devcon (live)
http://stats.devcon.network (live)
x
x
x
Chapter III – Birth of a Nation™
Deploy entry point into the network
Build and deploy Geth bootnode via Go
Configure private chain and stats reporting
Maintain, reconfigure and redeploy upon need
$ puppeth --network=devcon (demo)
http://stats.devcon.network (demo)
$ puppeth --network=devcon (live)
http://stats.devcon.network (live)
x
x
x
Chapter IV – The Gold Rush™
Deploy transaction processor for the chain
Build and deploy a Geth mining node via Go
Configure chain , bootnode and stats reporting
Reconfigure block limits and gas prices
$ puppeth --network=devcon (demo)
http://stats.devcon.network (demo)
$ puppeth --network=devcon (live)
http://stats.devcon.network (live)
x
Demo: f18ab66f095bff24a6de4fcd0bbcf00f655a2244
x
x
Chapter V – Raiders of the Lost Block™
Deploy blockchain exploration service
Configure and build etherchain via nodejs
Configure and deploy a Parity archive via Rust
Configure a new or link existing nginx reverse proxy
Configure chain , bootnode , stats and node/explorer link
$ puppeth --network=devcon (demo)
http://explorer.devcon.network (demo)
http://stats.devcon.network (demo)
$ puppeth --network=devcon (live)
http://explorer.devcon.network (live)
http://stats.devcon.network (live)
x
x
x
x
x
Chapter VI – WALL·E™
Deploy user friendly online wallet
Configure and build MEW via nodejs
Configure and deploy Geth RPC node via Go
Configure new or link existing nginx reverse proxy
Configure chain , bootnode , stats and node/wallet link
$ puppeth --network=devcon (demo)
http://wallet.devcon.network (demo)
http://stats.devcon.network (demo)
$ puppeth --network=devcon (live)
http://wallet.devcon.network (live)
http://stats.devcon.network (live)
x
x
Demo: 0xf18ab66f095bff24a6de4fcd0bbcf00f655a2244
x
x
x
Chapter VII – El Dorado™
Deploy public test funding service
Build and deploy a Geth Faucet via Go
Configure chain , bootnode , stats and funds
Configure new or link existing nginx reverse proxy
Reconfigure funding policy and auth providers
$ puppeth --network=devcon (demo)
http://faucet.devcon.network (demo)
http://stats.devcon.network (demo)
$ puppeth --network=devcon (live)
http://faucet.devcon.network (live)
http://stats.devcon.network (live)
x
{"address":"f18ab66f095bff24a6de4fcd0bbcf00f655a2244","crypto":{"cipher":"aes-128-ctr","ciphertext":"805ef7beb9412232a74e0bfcdbf9e7453fb4e3b4f82e9dc82c281ab626aac4f2","cipherparams":{"iv":"4e4f8f2f9a633f8410d52cd45055fee9"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"174fad840d15214f32b76d2222987d2ea0462e1d49e2d7dfbe747c73930d5e88"},"mac":"f72c4d936d4fac85db312bbef482cc06be4f2a263506c241185435673089a31f"},"id":"53b966b2-dfb3-478f-89af-0b8c5f51331b","version":3}
x
x
x
x
Chapter VIII – Inside Out™
Gather all services and guides together
Host all web services under single umbrella
Maintain connectivity guides for different clients
Configure a new or link existing nginx reverse proxy
Update available services and expand guides
$ puppeth --network=devcon (demo)
http://devcon.network (demo)
$ puppeth --network=devcon (live)
http://devcon.network (live)
x
x
Thank you
Gophers drawn by Renee French
Puppeth drawn by Alex Van de Sande
"This is fine" drawn by Ashley McNamara
Use the left and right arrow keys or click the left and right
edges of the page to navigate between slides.
(Press 'H' or navigate to hide this message.)