- Introduction
- Tutorial for users
- Build requirements
- For Linux or MacOS users
- For Windows users
- Development
deposit-cli is a tool for creating EIP-2335 format BLS12-381 keystores and a corresponding deposit_data*.json file for Ethereum 2.0 Launchpad.
- Warning: Please generate your keystores on your own safe, completely offline device.
- Warning: Please backup your mnemonic, keystores, and password securely.
Please read Launchpad Validator FAQs before generating the keys.
You can find the audit report by Trail of Bits here.
On Unix-based systems, keystores and the deposit_data*.json have 440/-r--r----- file permissions (user & group read only). This improves security by limiting which users and processes that have access to these files. If you are getting permission denied errors when handling your keystores, consider changing which user/group owns the file (with chown) or, if need be, change the file permissions with chmod.
See releases page to download and decompress the corresponding binary files.
Run the following command to enter the interactive CLI and generate keys from a new mnemonic:
./deposit new-mnemonicor run the following command to enter the interactive CLI and generate keys from an existing:
./deposit existing-mnemonicThe CLI offers different commands depending on what you want to do with the tool.
| Command | Description |
|---|---|
new-mnemonic |
(Recommended) This command is used to generate keystores with a new mnemonic. |
existing-mnemonic |
This command is used to re-generate or derive new keys from your existing mnemonic. Use this command, if (i) you have already generated keys with this CLI before, (ii) you want to reuse your mnemonic that you know is secure that you generated elsewhere (reusing your eth1 mnemonic .etc), or (iii) you lost your keystores and need to recover your keys. |
You can use new-mnemonic --help to see all arguments. Note that if there are missing arguments that the CLI needs, it will ask you for them.
| Argument | Type | Description |
|---|---|---|
--num_validators |
Non-negative integer | The number of signing keys you want to generate. Note that the child key(s) are generated via the same master key. |
--mnemonic_language |
String. Options: chinese_simplified, chinese_traditional, czech, english, italian, korean, portuguese, spanish. Default to english |
The mnemonic language |
--folder |
String. Pointing to ./validator_keys by default |
The folder path for the keystore(s) and deposit(s) |
--chain |
String. mainnet by default |
The chain setting for the signing domain. |
--eth1_withdrawal_address |
String. Eth1 address in hexadecimal encoded form | If this field is set and valid, the given Eth1 address will be used to create the withdrawal credentials. Otherwise, it will generate withdrawal credentials with the mnemonic-derived withdrawal public key in EIP-2334 format. |
You can use existing-mnemonic --help to see all arguments. Note that if there are missing arguments that the CLI needs, it will ask you for them.
| Argument | Type | Description |
|---|---|---|
--validator_start_index |
Non-negative integer | The index of the first validator's keys you wish to generate. If this is your first time generating keys with this mnemonic, use 0. If you have generated keys using this mnemonic before, use the next index from which you want to start generating keys from (eg, if you've generated 4 keys before (keys #0, #1, #2, #3), then enter 4 here. |
--num_validators |
Non-negative integer | The number of signing keys you want to generate. Note that the child key(s) are generated via the same master key. |
--folder |
String. Pointing to ./validator_keys by default |
The folder path for the keystore(s) and deposit(s) |
--chain |
String. mainnet by default |
The chain setting for the signing domain. |
--eth1_withdrawal_address |
String. Eth1 address in hexadecimal encoded form | If this field is set and valid, the given Eth1 address will be used to create the withdrawal credentials. Otherwise, it will generate withdrawal credentials with the mnemonic-derived withdrawal public key in EIP-2334 format. |
You will see the following messages after successfully generated the keystore(s) and the deposit(s):
Creating your keys: [####################################] <N>/<N>
Creating your keystores: [####################################] <N>/<N>
Creating your depositdata: [####################################] <N>/<N>
Verifying your keystores: [####################################] <N>/<N>
Verifying your deposits: [####################################] <N>/<N>
Success!
Your keys can be found at: <YOUR_FOLDER_PATH>
Ensure you are using Python version >= Python3.7:
python3 -VInstall the dependencies:
pip3 install -r requirements.txt
python3 setup.py installOr use the helper script:
./deposit.sh installRun one of the following command to enter the interactive CLI:
./deposit.sh new-mnemonicor
./deposit.sh existing-mnemonicYou can also run the tool with optional arguments:
./deposit.sh new-mnemonic --num_validators=<NUM_VALIDATORS> --mnemonic_language=english --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>./deposit.sh existing-mnemonic --num_validators=<NUM_VALIDATORS> --validator_start_index=<START_INDEX> --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>See here
See here for new-mnemonic arguments
See here for existing-mnemonic arguments
See here
Ensure you are using Python version >= Python3.7:
python3 -VFor the virtualenv users, you can create a new venv:
pip3 install virtualenv
virtualenv venv
source venv/bin/activateand install the dependencies:
python3 setup.py install
pip3 install -r requirements.txtRun one of the following command to enter the interactive CLI:
python3 ./eth2deposit/deposit.py new-mnemonicor
python3 ./eth2deposit/deposit.py existing-mnemonicYou can also run the tool with optional arguments:
python3 ./eth2deposit/deposit.py new-mnemonic --num_validators=<NUM_VALIDATORS> --mnemonic_language=english --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>python3 ./eth2deposit/deposit.py existing-mnemonic --num_validators=<NUM_VALIDATORS> --validator_start_index=<START_INDEX> --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>See here
See here for new-mnemonic arguments
See here for existing-mnemonic arguments
Run the following command to locally build the docker image:
make build_dockerRun the following command to enter the interactive CLI:
docker run -it --rm -v $(pwd)/validator_keys:/app/validator_keys ethereum/eth2.0-deposit-cliYou can also run the tool with optional arguments:
docker run -it --rm -v $(pwd)/validator_keys:/app/validator_keys ethereum/eth2.0-deposit-cli new-mnemonic --num_validators=<NUM_VALIDATORS> --mnemonic_language=english --folder=<YOUR_FOLDER_PATH>Example for 1 validator on the Prater testnet using english:
docker run -it --rm -v $(pwd)/validator_keys:/app/validator_keys ethereum/eth2.0-deposit-cli new-mnemonic --num_validators=1 --mnemonic_language=english --chain=praterSee here
See here
See releases page to download and decompress the corresponding binary files.
Run one of the following command to enter the interactive CLI:
deposit.exe new-mnemonicor
deposit.exe existing-mnemonicYou can also run the tool with optional arguments:
deposit.exe new-mnemonic --num_validators=<NUM_VALIDATORS> --mnemonic_language=english --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>deposit.exe existing-mnemonic --num_validators=<NUM_VALIDATORS> --validator_start_index=<START_INDEX> --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>See here
See here for new-mnemonic arguments
See here for existing-mnemonic arguments
Ensure you are using Python version >= Python3.7 (Assume that you've installed Python 3 as the main Python):
python -VInstall the dependencies:
pip3 install -r requirements.txt
python setup.py installOr use the helper script:
sh deposit.sh installRun one of the following command to enter the interactive CLI:
./deposit.sh new-mnemonicor
./deposit.sh existing-mnemonicYou can also run the tool with optional arguments:
./deposit.sh new-mnemonic --num_validators=<NUM_VALIDATORS> --mnemonic_language=english --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>./deposit.sh existing-mnemonic --num_validators=<NUM_VALIDATORS> --validator_start_index=<START_INDEX> --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>See here
See here for new-mnemonic arguments
See here for existing-mnemonic arguments
Ensure you are using Python version >= Python3.7 (Assume that you've installed Python 3 as the main Python):
python -VFor the virtualenv users, you can create a new venv:
pip3 install virtualenv
virtualenv venv
.\venv\Scripts\activateand install the dependencies:
python setup.py install
pip3 install -r requirements.txtRun one of the following command to enter the interactive CLI:
python .\eth2deposit\deposit.py new-mnemonicor
python .\eth2deposit\deposit.py existing-mnemonicYou can also run the tool with optional arguments:
python .\eth2deposit\deposit.py new-mnemonic --num_validators=<NUM_VALIDATORS> --mnemonic_language=english --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>python .\eth2deposit\deposit.pyexisting-mnemonic --num_validators=<NUM_VALIDATORS> --validator_start_index=<START_INDEX> --chain=<CHAIN_NAME> --folder=<YOUR_FOLDER_PATH>See here
See here for new-mnemonic arguments
See here for existing-mnemonic arguments
python3 -m pip install -r requirements.txt
python3 setup.py installpython3 -m pip install -r requirements_test.txtpython3 -m pytest .