{"id":13495939,"url":"https://github.com/ethereum/staking-deposit-cli","last_synced_at":"2025-05-15T01:06:09.790Z","repository":{"id":37037959,"uuid":"239465466","full_name":"ethereum/staking-deposit-cli","owner":"ethereum","description":"Secure key generation for deposits","archived":false,"fork":false,"pushed_at":"2024-11-26T14:21:16.000Z","size":1115,"stargazers_count":565,"open_issues_count":124,"forks_count":370,"subscribers_count":47,"default_branch":"master","last_synced_at":"2025-04-13T22:39:36.977Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethereum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-10T08:47:18.000Z","updated_at":"2025-04-09T13:42:30.000Z","dependencies_parsed_at":"2023-02-16T20:46:20.400Z","dependency_job_id":"f17feaeb-b408-474c-ad3c-21d8237c5b4c","html_url":"https://github.com/ethereum/staking-deposit-cli","commit_stats":{"total_commits":380,"total_committers":22,"mean_commits":"17.272727272727273","dds":0.4236842105263158,"last_synced_commit":"fdab65d33a63632e1935e9a9235119a46e37c221"},"previous_names":["ethereum/eth2.0-deposit-cli"],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fstaking-deposit-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fstaking-deposit-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fstaking-deposit-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fstaking-deposit-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereum","download_url":"https://codeload.github.com/ethereum/staking-deposit-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254040,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:01:39.928Z","updated_at":"2025-05-15T01:06:09.729Z","avatar_url":"https://github.com/ethereum.png","language":"Python","funding_links":[],"categories":["Python","Smart Contract Platforms"],"sub_categories":[],"readme":"# staking-deposit-cli\n\n[![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/ethereum/staking-deposit-cli/badge)](https://www.gitpoap.io/gh/ethereum/staking-deposit-cli)\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [staking-deposit-cli](#staking-deposit-cli)\n  - [Introduction](#introduction)\n  - [Tutorial for users](#tutorial-for-users)\n    - [Build requirements](#build-requirements)\n    - [For Linux or MacOS users](#for-linux-or-macos-users)\n      - [File Permissions](#file-permissions)\n      - [Option 1. Download binary executable file](#option-1-download-binary-executable-file)\n        - [Step 1. Installation](#step-1-installation)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json)\n          - [`language` Argument](#language-argument)\n          - [`--non_interactive` flag](#--non_interactive-flag)\n          - [Commands](#commands)\n          - [`new-mnemonic` Arguments](#new-mnemonic-arguments)\n          - [`existing-mnemonic` Arguments](#existing-mnemonic-arguments)\n          - [Successful message](#successful-message)\n          - [`generate-bls-to-execution-change` Arguments](#generate-bls-to-execution-change-arguments)\n      - [Option 2. Build `deposit-cli` with native Python](#option-2-build-deposit-cli-with-native-python)\n        - [Step 0. Python version checking](#step-0-python-version-checking)\n        - [Step 1. Installation](#step-1-installation-1)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json-1)\n          - [Language Argument](#language-argument-1)\n          - [Commands](#commands-1)\n          - [Arguments](#arguments)\n          - [Successful message](#successful-message-1)\n      - [Option 3. Build `deposit-cli` with `virtualenv`](#option-3-build-deposit-cli-with-virtualenv)\n        - [Step 0. Python version checking](#step-0-python-version-checking-1)\n        - [Step 1. Installation](#step-1-installation-2)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json-2)\n          - [Language Argument](#language-argument-2)\n          - [Commands](#commands-2)\n          - [Arguments](#arguments-1)\n      - [Option 4. Use Docker image](#option-4-use-docker-image)\n        - [Step 1. Build the docker image](#step-1-build-the-docker-image)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json-3)\n          - [Arguments](#arguments-2)\n          - [Successful message](#successful-message-2)\n    - [For Windows users](#for-windows-users)\n      - [Option 1. Download binary executable file](#option-1-download-binary-executable-file-1)\n        - [Step 1. Installation](#step-1-installation-3)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json-4)\n          - [Language Argument](#language-argument-3)\n          - [Commands](#commands-3)\n          - [Arguments](#arguments-3)\n      - [Option 2. Build `deposit-cli` with native Python](#option-2-build-deposit-cli-with-native-python-1)\n        - [Step 0. Python version checking](#step-0-python-version-checking-2)\n        - [Step 1. Installation](#step-1-installation-4)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json-5)\n          - [Language Argument](#language-argument-4)\n          - [Commands](#commands-4)\n          - [Arguments](#arguments-4)\n      - [Option 3. Build `deposit-cli` with `virtualenv`](#option-3-build-deposit-cli-with-virtualenv-1)\n        - [Step 0. Python version checking](#step-0-python-version-checking-3)\n        - [Step 1. Installation](#step-1-installation-5)\n        - [Step 2. Create keys and `deposit_data-*.json`](#step-2-create-keys-and-deposit_data-json-6)\n          - [Language Argument](#language-argument-5)\n          - [Commands](#commands-5)\n          - [Arguments](#arguments-5)\n  - [Development](#development)\n    - [Install basic requirements](#install-basic-requirements)\n    - [Install testing requirements](#install-testing-requirements)\n    - [Run tests](#run-tests)\n    - [Building Binaries](#building-binaries)\n        - [Mac M1 Binaries](#mac-m1-binaries)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Introduction\n\n`deposit-cli` is a tool for creating [EIP-2335 format](https://eips.ethereum.org/EIPS/eip-2335) BLS12-381 keystores and a corresponding `deposit_data*.json` file for [Ethereum Staking Launchpad](https://github.com/ethereum/staking-launchpad).\n\n- **Warning: Please generate your keystores on your own safe, completely offline device.**\n- **Warning: Please backup your mnemonic, keystores, and password securely.**\n\nPlease read [Launchpad Validator FAQs](https://launchpad.ethereum.org/faq#keys) before generating the keys.\n\nYou can find the audit report by Trail of Bits [here](https://github.com/trailofbits/publications/blob/master/reviews/ETH2DepositCLI.pdf).\n\n## Tutorial for users\n\n### Build requirements\n\n- [Python **3.12+**](https://www.python.org/about/gettingstarted/)\n- [pip3](https://pip.pypa.io/en/stable/installing/)\n\n### For Linux or MacOS users\n\n#### File Permissions\n\nOn Unix-based systems, keystores and the `deposit_data*.json` have `440`/`-r--r-----` file permissions (user \u0026 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`.\n\n#### Option 1. Download binary executable file\n\n##### Step 1. Installation\n\nSee [releases page](https://github.com/ethereum/staking-deposit-cli/releases) to download and decompress the corresponding binary files.\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun the following command to enter the interactive CLI and generate keys from a new mnemonic:\n\n```sh\n./deposit new-mnemonic\n```\n\nor run the following command to enter the interactive CLI and generate keys from an existing:\n\n```sh\n./deposit existing-mnemonic\n```\n\n###### `language` Argument\n\nThe Launchpad offers many language/internationalization options. If you wish to select one as a CLI argument, it must be passed in before one of the commands is chosen.\n\n| Argument | Type | Description |\n| -------- | -------- | -------- |\n| `--language` | String. Options: `العربية`, `ελληνικά`, `English`, `Français`, `Bahasa melayu`, `Italiano`, `日本語`, `한국어`, `Português do Brasil`, `român`, `简体中文`. Default to `English` | The language you wish to use the CLI in. |\n\n###### `--non_interactive` flag\n\n**Warning: with this flag, there will be no confirmation step(s) to verify the input value(s). Please use it carefully.**\n\n| Argument | Type | Description |\n| -------- | -------- | -------- |\n| `--non_interactive` | Flag | Run CLI in non-interactive mode. |\n\n###### Commands\n\nThe CLI offers different commands depending on what you want to do with the tool.\n\n| Command | Description |\n| ------- | ----------- |\n| `new-mnemonic` | (Recommended) This command is used to generate keystores with a new mnemonic. |\n| `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. |\n\n###### `new-mnemonic` Arguments\n\nYou 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.\n\n| Argument | Type | Description |\n| -------- | -------- | -------- |\n| `--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. |\n| `--mnemonic_language` | String. Options: `简体中文`, `繁體中文`, `český jazyk`, `English`, `Italiano`, `한국어`, `Português`, `Español`. Default to `English` | The language of the mnemonic word list |\n| `--folder` | String. Pointing to `./validator_keys` by default | The folder path for the keystore(s) and deposit(s) |\n| `--chain` | String. `mainnet` by default | The chain setting for the signing domain. |\n| `--execution_address` (or `--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 [ERC-2334 format](https://eips.ethereum.org/EIPS/eip-2334#eth2-specific-parameters). |\n\n###### `existing-mnemonic` Arguments\n\nYou 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.\n\n| Argument | Type | Description |\n| -------- | -------- | -------- |\n| `--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.|\n| `--num_validators`  | Non-negative integer | The number of new signing keys you want to generate. Note that the child key(s) are generated via the same master key. |\n| `--folder` | String. Pointing to `./validator_keys` by default | The folder path for the keystore(s) and deposit(s) |\n| `--chain` | String. `mainnet` by default | The chain setting for the signing domain. |\n| `--execution_address` (or `--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 [ERC-2334 format](https://eips.ethereum.org/EIPS/eip-2334#eth2-specific-parameters). |\n\n###### Successful message\n\nYou will see the following messages after successfully generated the keystore(s) and the deposit(s):\n\n```text\nCreating your keys:               [####################################]  \u003cN\u003e/\u003cN\u003e\nCreating your keystores:          [####################################]  \u003cN\u003e/\u003cN\u003e\nCreating your depositdata:        [####################################]  \u003cN\u003e/\u003cN\u003e\nVerifying your keystores:         [####################################]  \u003cN\u003e/\u003cN\u003e\nVerifying your deposits:          [####################################]  \u003cN\u003e/\u003cN\u003e\n\nSuccess!\nYour keys can be found at: \u003cYOUR_FOLDER_PATH\u003e\n```\n\n###### `generate-bls-to-execution-change` Arguments \n\nYou can use `bls-to-execution-change --help` to see all arguments. Note that if there are missing arguments that the CLI needs, it will ask you for them.\n\n| Argument | Type | Description |\n| -------- | -------- | -------- |\n| `--bls_to_execution_changes_folder` | String. Pointing to `./bls_to_execution_changes` by default | The folder path for the `bls_to_execution_change-*` JSON file(s) |\n| `--chain` | String. `mainnet` by default | The chain setting for the signing domain. |\n| `--mnemonic` | String. mnemonic split by space.  | The mnemonic you used to create withdrawal credentials. |\n| `--mnemonic_password` | Optional string. Empty by default. | The mnemonic password you used in your key generation. Note: It's not the keystore password. |\n| `--validator_start_index` | Non-negative integer | The index position for the keys to start generating withdrawal credentials in [ERC-2334 format](https://eips.ethereum.org/EIPS/eip-2334#eth2-specific-parameters). |\n| `--validator_indices` | String of integer(s) | A list of the chosen validator index number(s) as identified on the beacon chain. Split multiple items with whitespaces or commas. |\n| `--bls_withdrawal_credentials_list` | String of hexstring(s). | A list of the old BLS withdrawal credentials of the given validator(s). It is for confirming you are using the correct keys. Split multiple items with whitespaces or commas. |\n| `--execution_address` (or `--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 [ERC-2334 format](https://eips.ethereum.org/EIPS/eip-2334#eth2-specific-parameters). |\n| `--devnet_chain_setting` | String. JSON string `'{\"network_name\": \"\u003cNETWORK_NAME\u003e\", \"genesis_fork_version\": \"\u003cGENESIS_FORK_VERSION\u003e\", \"genesis_validator_root\": \"\u003cGENESIS_VALIDATOR_ROOT\u003e\"}'` | The custom chain setting of a devnet or testnet. Note that it will override your `--chain` choice. |\n\n#### Option 2. Build `deposit-cli` with native Python\n\n##### Step 0. Python version checking\n\nEnsure you are using Python version \u003e= Python3.12:\n\n```sh\npython3 -V\n```\n\n##### Step 1. Installation\n\nInstall the dependencies:\n\n```sh\npip3 install -r requirements.txt\npython3 setup.py install\n```\n\nOr use the helper script:\n\n```sh\n./deposit.sh install\n```\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun one of the following command to enter the interactive CLI:\n\n```sh\n./deposit.sh new-mnemonic\n```\n\nor\n\n```sh\n./deposit.sh existing-mnemonic\n```\n\nYou can also run the tool with optional arguments:\n\n```sh\n./deposit.sh new-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --mnemonic_language=english --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n```sh\n./deposit.sh existing-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --validator_start_index=\u003cSTART_INDEX\u003e --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n###### Language Argument\n\nSee [here](#language_argument) for `--language` arguments.\n###### Commands\n\nSee [here](#commands)\n\n###### Arguments\n\nSee [here](#new-mnemonic-arguments) for `new-mnemonic` arguments\nSee [here](#existing-mnemonic-arguments) for `existing-mnemonic` arguments\nSee [here](#generate-bls-to-execution-change-arguments) for `generate-bls-to-execution-change` arguments\n\n###### Successful message\nSee [here](#successful-message)\n\n#### Option 3. Build `deposit-cli` with `virtualenv`\n\n##### Step 0. Python version checking\n\nEnsure you are using Python version \u003e= Python3.12:\n\n```sh\npython3 -V\n```\n\n##### Step 1. Installation\n\nFor the [virtualenv](https://virtualenv.pypa.io/en/latest/) users, you can create a new venv:\n\n```sh\npip3 install virtualenv\nvirtualenv venv\nsource venv/bin/activate\n```\n\nand install the dependencies:\n\n```sh\npython3 setup.py install\npip3 install -r requirements.txt\n```\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun one of the following command to enter the interactive CLI:\n\n```sh\npython3 ./staking_deposit/deposit.py new-mnemonic\n```\n\nor\n\n```sh\npython3 ./staking_deposit/deposit.py existing-mnemonic\n```\n\nYou can also run the tool with optional arguments:\n\n```sh\npython3 ./staking_deposit/deposit.py new-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --mnemonic_language=english --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n```sh\npython3 ./staking_deposit/deposit.py existing-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --validator_start_index=\u003cSTART_INDEX\u003e --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n###### Language Argument\n\nSee [here](#language_argument) for `--language` arguments.\n\n###### Commands\n\nSee [here](#commands)\n\n###### Arguments\n\nSee [here](#new-mnemonic-arguments) for `new-mnemonic` arguments\nSee [here](#existing-mnemonic-arguments) for `existing-mnemonic` arguments\nSee [here](#generate-bls-to-execution-change-arguments) for `generate-bls-to-execution-change` arguments\n\n#### Option 4. Use Docker image\n\n##### Step 1. Build the docker image\n\nRun the following command to locally build the docker image:\n\n```sh\nmake build_docker\n```\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun the following command to enter the interactive CLI:\n\n```sh\ndocker run -it --rm -v $(pwd)/validator_keys:/app/validator_keys ethereum/staking-deposit-cli\n```\n\nYou can also run the tool with optional arguments:\n\n```sh\ndocker run -it --rm -v $(pwd)/validator_keys:/app/validator_keys ethereum/staking-deposit-cli new-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --mnemonic_language=english --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\nExample for 1 validator on the [Holesky testnet](https://holesky.launchpad.ethereum.org/) using english:\n\n```sh\ndocker run -it --rm -v $(pwd)/validator_keys:/app/validator_keys ethereum/staking-deposit-cli new-mnemonic --num_validators=1 --mnemonic_language=english --chain=holesky\n```\n\n###### Arguments\nSee [here](#arguments)\n\n###### Successful message\nSee [here](#successful-message)\n\n----\n\n### For Windows users\n\n#### Option 1. Download binary executable file\n\n##### Step 1. Installation\n\nSee [releases page](https://github.com/ethereum/staking-deposit-cli/releases) to download and decompress the corresponding binary files.\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun one of the following command to enter the interactive CLI:\n\n```sh\ndeposit.exe new-mnemonic\n```\n\nor\n\n```sh\ndeposit.exe existing-mnemonic\n```\n\nYou can also run the tool with optional arguments:\n\n```sh\ndeposit.exe new-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --mnemonic_language=english --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n```sh\ndeposit.exe existing-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --validator_start_index=\u003cSTART_INDEX\u003e --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n###### Language Argument\n\nSee [here](#language_argument) for `--language` arguments.\n\n###### Commands\n\nSee [here](#commands)\n\n###### Arguments\n\nSee [here](#new-mnemonic-arguments) for `new-mnemonic` arguments\nSee [here](#existing-mnemonic-arguments) for `existing-mnemonic` arguments\nSee [here](#generate-bls-to-execution-change-arguments) for `generate-bls-to-execution-change` arguments\n\n#### Option 2. Build `deposit-cli` with native Python\n\n##### Step 0. Python version checking\n\nEnsure you are using Python version \u003e= Python12 (Assume that you've installed Python 3 as the main Python):\n\n```sh\npython -V\n```\n\n##### Step 1. Installation\n\nInstall the dependencies:\n\n```sh\npip3 install -r requirements.txt\npython setup.py install\n```\n\nOr use the helper script:\n\n```sh\nsh deposit.sh install\n```\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun one of the following command to enter the interactive CLI:\n\n```sh\n./deposit.sh new-mnemonic\n```\n\nor\n\n```sh\n./deposit.sh existing-mnemonic\n```\n\nYou can also run the tool with optional arguments:\n\n```sh\n./deposit.sh new-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --mnemonic_language=english --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n```sh\n./deposit.sh existing-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --validator_start_index=\u003cSTART_INDEX\u003e --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n###### Language Argument\n\nSee [here](#language_argument) for `--language` arguments.\n\n###### Commands\n\nSee [here](#commands)\n\n###### Arguments\n\nSee [here](#new-mnemonic-arguments) for `new-mnemonic` arguments\nSee [here](#existing-mnemonic-arguments) for `existing-mnemonic` arguments\nSee [here](#generate-bls-to-execution-change-arguments) for `generate-bls-to-execution-change` arguments\n\n#### Option 3. Build `deposit-cli` with `virtualenv`\n\n##### Step 0. Python version checking\n\nEnsure you are using Python version \u003e= Python3.12 (Assume that you've installed Python 3 as the main Python):\n\n```cmd\npython -V\n```\n\n##### Step 1. Installation\n\nFor the [virtualenv](https://virtualenv.pypa.io/en/latest/) users, you can create a new venv:\n\n```cmd\npip3 install virtualenv\nvirtualenv venv\n.\\venv\\Scripts\\activate\n```\n\nand install the dependencies:\n\n```cmd\npython setup.py install\npip3 install -r requirements.txt\n```\n\n##### Step 2. Create keys and `deposit_data-*.json`\n\nRun one of the following command to enter the interactive CLI:\n\n```cmd\npython .\\staking_deposit\\deposit.py new-mnemonic\n```\n\nor\n\n```cmd\npython .\\staking_deposit\\deposit.py existing-mnemonic\n```\n\nYou can also run the tool with optional arguments:\n\n```cmd\npython .\\staking_deposit\\deposit.py new-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --mnemonic_language=english --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n```cmd\npython .\\staking_deposit\\deposit.pyexisting-mnemonic --num_validators=\u003cNUM_VALIDATORS\u003e --validator_start_index=\u003cSTART_INDEX\u003e --chain=\u003cCHAIN_NAME\u003e --folder=\u003cYOUR_FOLDER_PATH\u003e\n```\n\n###### Language Argument\n\nSee [here](#language_argument) for `--language` arguments.\n\n###### Commands\n\nSee [here](#commands)\n\n###### Arguments\n\nSee [here](#new-mnemonic-arguments) for `new-mnemonic` arguments\nSee [here](#existing-mnemonic-arguments) for `existing-mnemonic` arguments\nSee [here](#generate-bls-to-execution-change-arguments) for `generate-bls-to-execution-change` arguments\n\n## Development\n\n### Install basic requirements\n\n```sh\npython3 -m pip install -r requirements.txt\npython3 setup.py install\n```\n\n### Install testing requirements\n\n```sh\npython3 -m pip install -r requirements_test.txt\n```\n\n### Run tests\n\n```sh\npython3 -m pytest .\n```\n\n### Building Binaries\n**Developers Only**\n##### Mac M1 Binaries\n\n👋This is not the section you are looking for.👋\nIf you are trying to **build the binary** on macos with an M1 Mac and you are using pyenv to manage your python version. You'll probably need to reinstall a given python version using:\n```\nenv PYTHON_CONFIGURE_OPTS=\"--enable-framework\" pyenv install 3.10.3\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fstaking-deposit-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereum%2Fstaking-deposit-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fstaking-deposit-cli/lists"}