Step-by-step Self-Staking Guide for DAppNode Users

Generating mnemonic and validator keystores with the official Ethereum Launchpad to validate Ethereum 2 on DAppNode

Pol Lanski
DAppNode
7 min readNov 27, 2020

--

DAppNode has been around as FOSS since the end of 2017 and started selling pre-installed hardware boxes in 2019 in order to make running nodes and DApps even easier.

You can leverage its decentralized repository and GUI to deploy nodes and install DApps with a couple of clicks and abstract most of the complexity of running them directly via Command Line.

In the same way, DAppNode offers users the possibility of running Ethereum 2 validators easily and to keep updating the client implementations in order to abstract the complexity of running a validator.

Nevertheless, there is a crucial step that we have decided to leave to the user: the generation of a mnemonic and the validator keys.

Why not generate the keys on the DAppNode?

The reason behind this decision is that this is a crucial security step where users must choose the best setup for themselves. It is considered best practise to generate the above mentioned keys completely offline and in a different machine other than the one where the validators are going to be running, so no key generation packages in the DAppNode would be secure enough.

In this way, users can choose the security measures they want to take to protect their mnemonic — which derives the withdrawal key needed to withdraw the funds at phase 1.5.

DAppNode users are then redirected to the official Ethereum Foundation Launchpad, but they might need to adapt the steps they need to take!

Launchpad, step-by-step:

1. READ EVERY STEP IN THE OVERVIEW SECTION

Seriously. Read it. And click the links to get more information on what you are not absolutely crystal clear about. Entering the validator set at such an early stage carries big risks and only those with enough knowledge about these risks should do so.

2. DO NOT SKIP any section! Read it all!

I’m dead serious. You are the only responsible of your ETH. Don’t come crying or say “I didn’t know”.

3. Ethereum 1 Client selection

As a DAppNode user, you can skip this step. DAppNode will manage your nodes and dependencies. Neat!

4. Eth2 client selection

You can skip this one too! Yay! DAppNode offers the Prysm client implementation at the moment but we plan to include more after the genesis. We will maintain these packages with the team’s updates to their software.

5. Generate Key Pairs

Now we need to choose how many validators you will deploy — this will prepare the commands that you will later have to type on the terminal. Don’t worry, you can add more later!

Then, pick the OS of the system where you will be running the key generation software. If you will run it in your main computer, then choose the OS of your main computer. In my case, I will do it in another, offline computer.

Download the appropriate software from github (the version for the OS you need), and run it in following the instructions written on the launchpad.

You must run the program from the console / terminal — double-clicking on it might not work!

You might be unfamiliar with the command line, but it is really easy! Open the terminal/command line on the right folder and run the command that is provided by the launchpad website.

You should probably run the key generation process in an offline computer. How I did it: I have an old laptop where I have reinstalled linux from scratch. I downloaded the script from github on my main computer, moved it to the offline computer via USB key and ran the script to generate the mnemonic and the validator keystores. Via the same USB key, I’ve moved the deposit data and the validator keystores to my main computer and continued the process in the launchpad. Then I burned the old laptop in a gasoline fire. Joking, but I reinstalled the OS again, wiping the all data.

6. Uploading deposit file

Yup, do that. You will have generated two files with the script — here you only need to put the deposit-data(...).json

7. Connect wallet

The moment of dropping the ETH into the contract is close!

Choose your wallet and follow the specific instructions to connect it to the web app. Yes, this is the wallet right now holding the ETH you want to deposit into the contract.

8. Review your information

Read the warnings. If you don’t understand or you are not aware of any of the aspects the launchpad is telling you you should be aware — go back and learn about it.

You will not get this ETH back until phase 1.5 or later.

You can be slashed.

If you lose your mnemonic, you will never be able to withdraw your funds again.

Be paranoid. Backup.

Make sure you are depositing into the right deposit contract.

Only if you are super sure, then continue.

9. Do it.

Are you really sure?

Think about it, the deposit contract has reached the minimum amount already. Maybe let the first fools get slashed with some client implementation bug? Whoever you are, wherever you are… can you afford losing these 32 ETH? It could happen, you know? You are the only responsible for this.

If you are, do the transaction.

Hopefully your deposit can be retrieved from the

Over to your DAppNode

A. Install the Prysm DAppNode Package (DNP)

Be careful, there are two packages with the Prysm client! Do test everything here in testnet before you do it on mainnet - but for this article we’ll choose the real deal.

B. Install and choose your Ethereum 1 client

When you click install it will prompt you to choose an endpoint from an Eth1 node. You should have it synced, but if not just click on the links and install the package.

Note: I friggin love TurboGeth, but right now I would recommend any of the other options as they are more stable.

C. Open the UI

Prysm comes with its own UI. To access it, you have these two links on your DNP:

D. Create a new wallet

To put the keystores we have created in the previous step, we’ll need to choose the “Imported Wallet” option.

In here, we will drag and drop our keystore-(...).json file. NOT THE deposit-data(...).json ! We will get an error if we do that.

We need to unlock this keystores with the password we chose during the generation with the launchpad tool.

Then choose a password for the WebUI:

And another password for encrypting your wallet. Tired yet of passwords? I hope you’re keeping them safe!

Warning! The wallet password has tricky requirements that are not properly specified in the UI. User @adidasboy517 reports here that the password works for him in the following way:

I’ve found that a min of 7 letters (at least 1 uppercase), min of 3 numbers, and 1 special character works. Going down to 6 letters or 2 numbers (sometimes) doesn’t seem to work.

E. The “Internal Server Error”

Yes, it will throw an error. But do NOT worry. This will be fixed as soon as the deposits are read from the Ethereum 1 chain — which should take around 30 minutes to a couple of hours. This error:

  1. Will always happen if your Eth1 is not synced
  2. Even if it is synced, it takes time to process.

Hopefully this red UI warning can be changed to something more explanatory soon.

Note: User @BTCBlade reports that since after some time the dashboard wasn’t recognizing their deposits, restarting the Eth1 Node seemed to fix it. It might work, but I only recommend taking this route after waiting — with the Eth1 node fully synced—for several hours. Restarting the Eth1 node might throw it out of sync and you might have to sync again, which might only make your problem worse.

After that… you are ready to go!

Try not to eat your shoes waiting for Genesis!

--

--

Pol Lanski
DAppNode

Passionate about a better world and technology. #DAppNode #Blockchain4Good