Remy and Yorick demonstrate how to setup a machine for the Kiln testnet with eth-docker

EthStaker Workshops and Technical Guides · January 2021 · 25:42

Presented as a temporary test network for the then-upcoming merge, Kiln is used here to demonstrate configuring a validating node with eth-docker, including Docker, merge-branch setup, client selection, source builds and key import. The walkthrough distinguishes immediately spendable priority fees from issuance rewards awaiting withdrawals, and warns that its internet-connected mnemonic handling is unsuitable for mainnet. It recovers from a mistyped keystore password, but the demo key is never deposited and the node still requires peers and synchronization.

Topics

From EthStaker Workshops and Technical Guides, hosted by Eth Staker.

Transcript

hello everyone uh my name is remy i'm part of the eat sneaker crew we're here today with uh yorick um who's gonna do a nice little demo of um eve docker but more uh to be more precise we'll do a demo on how to set up a node using the kill network so kiln is this new test net um that's being um launched uh for everyone to test the merge so the merge is this next a big protocol upgrade on ethereum and we want to make sure it works so the best way to test that it works is just trying it trying different clients trying

different setup um trying a different configuration and we'll do one today with uh yorick uh yorick uh tell us a little about a little bit about uh what we're gonna do today um what's the plan here all right so we are going to use the f docker tooling to quickly spin up a node on the kiln merged test network if you are already staking then this is really useful for you because right now you're running on mainnet most likely and you'll want to know what does this behave like with the merge right kiln is your first

opportunity to really see this in action and get familiar with how the clients behave together it'll be very similar to what you're running today and after that we also expect prata and gurley those two together to be merged together and then sepolia to get a new proof of stake network can also be merged with itself and those you know hopefully plans are still being finalized um gurley and sepolia will live after merge and will be the long-running test nets kiln should die with merge so that's a it's a network that we're using until the merge so the assumption on that was that kiln was gonna be run

even after the merge maybe i don't know i'm not sure um what i've heard right now i mean that this is still being discussed right but i'm what i heard previously was kiln is the is the merge network until the merge um gurley will survive sepolia will survive there's also discussions right now because of the craziness with um bots on the girly faucets to kill gurley and do a girly v2 we don't know right so [Laughter] as as with all things ethereum things change on a week-to-week basis absolutely yes they do okay so what do we need um let me go and share your screen here

so that people can see what's going on there you go right so we need a couple things to get going with this demo we need a metamask installed with a throwaway account i'll get to that in a minute we need this kiln.the merge.dev site that gives us a bunch of links to click on from the ethereum foundation here we need a educators docker github here um and we're gonna go to the merge branch and for people who are already asking we'll share all those links in the description

yes yes we shall access and then in the merge branch you want to click on this kiln.md or you can scroll all the way down and click on quickstart and those are the instructions we're going to follow right so let's take a look create a throwaway ether dress in metamask i already did this so here's my metamask and over here i could say create account and create a throwaway account right yeah um yes you can do this from your main account but come on you know you're doing some testing keep your main account safe do a throwaway account and privately yeah definitely private right fund this

address with kilneth using the faucet so or faucet or faucet right so if we click on this here and say open link we get a little faucet lovely little picture low supply currently only available for ens domains so that's not going to work with a throwaway account plus yes there are supply issues so i don't know what to say we have a discord where we have some other faucets available um specific to kiln if you want to do this with something with an else domain instead and ignore everything i just said about throwaway

accounts um you need some kilneth the esteka discord will help with this yeah right and we have general support as well so if you have any issue just come to the testing the merge channel on eve stickers discord and we'll be able to help you guys with anything you have issue with and then prerequisites you need a linux or a mac os box to run this by the way shout out to the bezo team they're the reason this runs on macos they tested that and it worked great so what i'm going to do here is i'm going to show this on linux first we need docker because all this runs in docker for automation purposes so i'm just going to copy paste this

this thing already has docker but just so you see what this would look like yep i have a suita password one second okay so it just does its thing here then we need to clone this tool and get it get into the merge branch so just copy paste all this and that will bring the eth docker tool in which is the wrapper around the official images right like this yeah yeah yeah

i thought i removed it so this is a machine which was used before so like yeah i've already used this for for testing if you want to use a clean machine or a clean install of like ubuntu or any debian then you won't have an issue you can also run this alongside your minute node if you really want to you'll just have to make sure the ports don't conflict and i can show that here in a minute it's not in the quick start but i'll show it in this we are getting there now configure this with sd config if docker has some wrapper scripts to make configuration easy

so we're going to use the kill merge test net if you don't see this if you see ethereum mainnet and parata here you're not in the merge branch and um start over right it needs to be the merge branch not the main branch our choices here are an ethereum node which has a validator client and just an rpc node without a validator client we will do this with a validator client the color scheme of this ui makes it hard for me to read it but hopefully people on video will be able to see i hope so too yeah that's a good point i don't actually know whether i can change the color scheme of what i'm using here but um i'll look into it that's a that's a really good feedback thank you

so um we now need a consensus client and a execution client the consensus client was previously also called the beacon client or the eth2 client and the execution client was sometimes called the eth1 client remy uh your choice what should i choose let's go with nimbus nimbus as the consensus client okay and then it asks me for graffiti um anything you like this is just for fun up to 32 characters right yep and what execution client would you like to see let's go with aragon let's go with aragon perfect do we want to use grafana dashboards why not

sure okay and then what this is new right this is kiln what address do you want transaction rewards to be sent to raymie do you want to tell people what the transaction rewards are what is being said here so with the merge uh validator is going to take the role of what miner used to do in terms of selecting transaction including them into blocks and proposing those blocks and so they will be the one getting the rewards instead of the minor and so in order to get the reward they'll have to specify a proper wallet address to receive the reward into and so this is this configuration here so make sure to select a wall address that you control so you can get

the the tips from all those transactions exactly yeah if you want to be very nice you can also send it to remy.eth but no that's a good question that's a good suggestion there please do it right no i'm kidding uh so these are the um these are the priority fees in particular that go directly to an eth address and are immediately spendable and do not have to wait for withdrawals whereas even after merge your your rewards your issuance rewards which come from the chain itself which is rewards for validation and rewards for creating blocks those still go into the balance of your validator and you'll

need to wait for withdrawals before you can get at those but this is the priority fee that does not come from the chain it comes from the users when you send a transaction on ethereum uh through say a meta mask you say you know what metamorph says for you this should be my priority fee you know two three way whatever per per unit of gas um goes to the miner and this priority fee will go to validators and that's where it goes to this address all right good so now this is done um it tells me that i have a compose file nimbus space eric and jabel grafanayamo deposit cli that i have a rewards address here and

let's see what i need to do next see whether my instruction is actually any good docker compose build okay so i need to talk about this because these um because these clients are in rapid flux on the kiln network we're actually going to do a source build we're gonna build this on your machine from source code and it looks and i'm it actually does this no it doesn't okay great i did that previously i was hoping it would just use the cache um and it did because otherwise we'd be here for half an hour this will take a minute um

depending on the type of client it can take between 10 minutes and an hour to build lighthouse for example takes a lot longer than other clients right because it's rust go go do something else and then come back to it you know i mean you can stare at if you if you like to but for the most part just walk the dark and i believe you can also use the if the tool to build your clients right uh this is basically um the the ethy tool yes can be used but it would be the same it would be if the command build like this yeah yeah let's do that again and it goes through and builds it right um so yes you could

so now we are going to create ourselves let me just look at this here i am actually running here the deposit cli.yaml um so i need to say about this for testnet this is fine we're going to run the deposit cli directly here right the the mnemonic that means the mnemonic is on a machine that you actually is connected to the internet this is not something you should do in production in on mainnet and mainly this should be a air-gapped machine where you run deposit cli manually and we can link to a video

where i show what that looks like with say an ubuntu or you can do a tails live or anything like that don't run the basically what i'm saying is in mainnet stay air-gapped on test net it's fine because who cares right if the mnemonic gets and like just so that people know a little more about this this is mainly for security issues right you don't want anyone to be able to steal your mnemonic or your key stores and and you want those to be private and that's just a way to make it more secure but since we're on a test net it's less important right okay and since we're demoing here you will see the mnemonic and we'll throw it away

after and not worry about it so now i'm running this command here and you see i'm putting in a withdrawal address again this is 100 optional you can leave this entire eth1 withdrawal address out i'll briefly talk about what it does if it's here then when withdrawals are enabled they will only go to this address so this should ideally be in mainnet to something like a ledger right or a trezor so a hardware wallet um this also means that anyone who has your mnemonic including you cannot change this withdrawal address the worst they can do is get you slashed

or initiate a withdrawal but they cannot get at the funds themselves they will always go to the withdrawal address if you leave that out then you would set the withdrawal address later so this is the standard staking deposit cli tool as it comes from the ethereum foundation and there's a few questions that you have to answer right so you're basically saying first what is my language that i want this to be shown in then second what's my mnemonic language there's only a few available here right so you see for example while this can be

shown in arabic here or in greek these are not available as mnemonic languages and that's you know because the word lists only exist in these options here and then how many new validators do i want in this case one rounded waiter validator is 32 eth i want to run one i will need a password for it and this is just for the validator key store if you ever lose this password you can just run this again with deposit cli existing and put them to mannequin okay i got that wrong let's try again man if i could type

there we go so write down your mnemonic we're going to throw this one away so i don't care i'm not going to write it down i'm just going to copy paste it and it will create key stores for me lovely all right um next deposit for this key at the launch pad do we want to show this so become a validator i'm going to next next finish here but for minute please do read all this this is all important if you get it wrong you get slashed absolutely etc you know um tells you you choose your execution

clients this will talk you through how to install those you don't need to do that because we all we just installed them using if docker right yes i'm keeping all my keys safe and i've written down my mnemonic phrase lies i have not and now i need to upload this file so let's take a quick look the generated files have been copied to dot eth validator keys okay cat meow what dot ether keys and here it is key store nope deposit data i want the deposit data not the key

store so i'm actually just going to take this and stick that into a file on my desktop so i can load it easier than just copying the file for you i guess yeah i could just copy the file as well right now it's for this test here it's super easy to just make a file right but yes i could also just copy this file so deposit json if i were to copy it however when i get it off my linux box i can use like a

winscp or any kind of scp which is a secure copy i can use if it's a physical machine i have nearby i can use like a usb stick anything i like right nothing in deposit.json is in any way uh security conscious it's all um public data that will end up on the blockchain continue and we're gonna use metamask here and it tells me i have enough test net eth and continue and now again i have dire warnings that if i get this wrong and show my mnemonic just like i just did i'm screwed and send this deposit

in this particular case i will actually not confirm because we're going to throw this away but that's what you would do you would click confirm here right and then it will deposit into the deposit contract for you and that thing is ready to go so i'm going to reject the deposit okay now we need to take this key and import it into our client so we'll do an sd key import and i need [Music] password that i had given for the key story earlier and if you don't remember the password

you can always recreate the key store but it should be the password that you entered during the um i love it i actually managed to bat finger my password and i don't know what it is anymore um not a problem we still have in the scroll back my mnemonics so now we're going to re-pick this thing we'll be able to show the the other path actually yeah you forget the password nice i love it okay this is great okay so we're now going to do deposit cli existing put them in on again again

my index here is zero so from the beginning zero one validator and try again with the password okay now in this case because i have one that i just um forgot the password for i will need to remove this right the old one uh key store two that one is the old one let's try this again with import three times the charm

okay good i knew at this time i had the right so now the key store is imported and now the only thing we need to do is start the stack and then i can look at the logs of this stuff so let's take a look at the execution client which i think was aragon here actually in the case of aragon it's f aragon and i see this thing running i did have this synchronized earlier just so that you know we can

we can see this running but typically what would happen here now is it would start synchronizing the chain and then the same for consensus actually that one might not be that one might not be synchronized yet okay so this is complaining right now that it can't get and the question is why yeah test nets that's one of the reason why we run them we want to see if we if our tools works yes um

i'm actually not entirely sure but what i'm gonna do is i might have confused these things by having them previously synchronized differently and now they're like you know i don't i don't know what's going on so we're gonna start over we're gonna prune everything i'm gonna import the keys one more time and then we're going to see what happens if we restart it if this genuinely doesn't work between numbers and aragon that would be a good

result as well because we could report it to the teams eventually and maybe there's a bug in some of these yep yeah this is weird i would expect it to try and synchronize the chain there we go okay so it is starting this now number equals zero okay it needs it needs to find peers this thing is unhappy obviously because they can't find the deposit contract

block which is fine because the you know aragon isn't synchronized so this isn't going to do anything until that thing is synchronized and from here this is mostly a waiting game this is now a waiting game and we're not going to wait for it and then bought you know now you wait for this to be um active and then you can look at beacon chain kiln the merge dot dev here uh to look up your your validator so in this particular case see whether it showed me the the

validator um does not cut dot so detect keys and i actually didn't deposit for this so you're not going to find the thing in this particular case right but you would take the public key here it is and stick this in here and say go find this for me it's not going to find it because we didn't deposit for it but that's that's essentially it okay on the beacon chain explorer you can also find your deposit using the wallet address you deposited from correct yes you could do that um in fact if i do that i should actually find

a deposit for one that i did deposit for there we are so this validator key here um currently not active because i shut down my test right you can see here i'm missing attestations when we started recording um and i shut down my test and and we did this instead so that that is uh findable through the um through the address from that we deposited from yeah i think that's it for the demo man