Integrating with third-party wallet, ethdo

This section explains how to configure a new wallet with the popular third-party wallet ethdo for Prysm's validator client. At the time of writing, this guide is made for ethdo v1.6.1. Ethdo offers a command-line tool that allows advanced stakers to manage HD wallets, sign deposits, perform validator exits, as well as other robust features relating to wallets and validating keys that are not currently present within Prysm.

This is the only recommended way to use Ethdo with Prysm

This guide is the only recommended way to use ethdo with Prysm, which will always be supported by our client.

Installation

It is recommended to work with a fresh Prysm installation, and simply import existing validator keys after ethdo is configured.

To begin, follow the instructions to fetch and install Prysm for your operating system.

Next, make sure you install ethdo.

Create an ethdo wallet

If an ethdo wallet already exists, this step can be skipped, and the usage documentation in ethdo itself can be referenced for the most up-to-date information on available options; but at the most basic level, creating an ethdo wallet goes as follows:

  1. Create a new wallet:
ethdo wallet create --wallet="mywallet"
  1. Create new accounts with:
ethdo account create --account="mywallet/myfirstaccount" --passphrase="foo"

The --passphrase="foo" should be replaced with a strong password.

Import validating keys into Prysm

You can find the location of the newly created wallet with the following command:

ethdo wallet info --verbose --wallet="mywallet"

Based on your operating system, you will see a location folder being printed. Copy this directory path. Import your validating keystores into Prysm with the following commands, operating system depending:

Using the Prysm installation script

./prysm.sh validator accounts import --keys-dir=<PATH_TO_ETHDO_WALLET>

Using Docker on GNU/Linux and macOS

To import your keys with a Docker installation of Prysm, issue the command:

docker run -it -v <PATH_TO_ETHDO_WALLET>:/keys \
-v $HOME/Eth2Validators/prysm-wallet-v2:/wallet \
-v $HOME/Eth2:/validatorDB \
--name validator \
gcr.io/prysmaticlabs/prysm/validator:latest \
accounts import --keys-dir=/keys --wallet-dir=/wallet --datadir=/validatorDB

Using Docker on Windows

docker run -it -v <PATH_TO_ETHDO_WALLET>:/keys -v %LOCALAPPDATA%\Eth2Validators\prysm-wallet-v2:/wallet gcr.io/prysmaticlabs/prysm/validator:latest accounts import --keys-dir=/keys --wallet-dir=/wallet

Using Bazel

To import your keys with a Bazel installation of Prysm, issue the command:

bazel run //validator:validator -- accounts import --keys-dir=<PATH_TO_ETHDO_WALLET>