CLI for generating of Bahamut chain and Ethereum 2.0 keys written in Golang
-
make
-
go v1.23.3
git clone https://github.com/VIWET/GoDepositCLI.git && cd GoDepositCLI
makegit clone https://github.com/VIWET/GoDepositCLI.git && cd GoDepositCLI
make NETWORK=ethereum-
Config form terminal UI
-
Colorschemes
-
Mnemonic input refactoring
-
Password generating
-
Execution and Consensus layer clients
-
--start-indexAliases:
--index,--start,--from,-iDefault:
0The starting key index for generating deposits, keystores, or BLS to Execution messages. For example, if you previously generated
Nkeys using a mnemonic, use--start-index=Nto generate the next batch. -
--numberAliases:
--num value,-nDefault:
1The number of deposits and keystores, or BLS to Execution messages to generate, starting from
--start-index. -
--amountsAliases:
--amount,-aThe amount of Ether to deposit. You can specify amounts per key index using
--amount=<key_index>:<amount>or set a default amount for all deposits with--amount=<amount>.Examples:
-
Single-line format (comma-separated values):
--amounts="<amount_1>,<key_index_2>:<amount_2>,..." -
Multi-line format:
--amount="<amount_1>" \ --amount="<key_index_2>:<amount_2>"
Amount values support
GWEI,FTN, orETHprefixes. If no prefix is provided, the default isFTN/ETH. -
-
--withdrawal-addressesAliases:
--withdrawal-address,--withdraw-to,--wWithdrawal addresses for deposits. Similar to
--amounts, you can specify a unique address per key index (--withdraw-to="<key_index>:<address>") or set a default withdrawal address (--withdraw-to=<address>). Addresses must be 20-byte hex strings. -
--contracts(only for Bahamut chain)Aliases:
--contract,-cContract addresses used for validator activity calculations. Unlike
--amountsand--withdrawal-addresses, this flag does not support a default value unless--number=1. The format is--contract="<key_index>:<contract>". Contract values must be 20-byte hex strings. -
--validator-indicesAliases:
--validator-index,--indices,--viSpecifies validator indices in the format
--validator-index="<key_index>:<validator_index>". All indices must be explicitly defined, except when--number=1. -
--directoryAliases:
--dir,-dDefault:
./validators_dataDirectory where all generated data will be stored.
-
--keystore-kdfThe key derivation function used for keystore generation. Supported values:
scrypt,pbkdf2. -
--chainAliases:
--networkDefault:
mainnetThe blockchain network configuration used for signing domain calculations.
-
Bahamut: Supports
mainnet,sahara, andhorizon. -
Ethereum: Supports
mainnetandholesky.
If specifying an unknown network,
--genesis-forkand--genesis-validators-rootmust be provided. -
-
--genesis-forkA unique 4-byte hex string used for signing domain calculations.
-
--genesis-validators-rootA unique 32-byte hex string used for signing domain calculations.
-
--passwordThe password used for keystore encryption. If not set,
staking-cliwill prompt you to enter it.Note: If using
--non-interactive, this flag is required. -
--configAliases:
--cfgPath to a configuration file for generating deposits and keystores.
Example:
-
Deposit config
{ "start_index": 0, "number": 4, "chain_config": { "name": "devnet", "genesis_fork_version": "0x00004242", "genesis_validators_root": "0x4242424242424242424242424242424242424242424242424242424242424242" }, "mnemonic_config": { "language": "english", "bitlen": 256 }, "amounts": { "default": 8192000000000, "config": { "0": 256000000000, "1": 4096000000000 } }, "contract_addresses": { "config": { "0": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001", "1": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0002" } }, "withdrawal_addresses": { "default": "0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead", "config": { "0": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0003", "1": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0004" } }, "directory": "./my_keys", "kdf": "scrypt" } -
BLS To Execution config
{ "start_index": 0, "number": 3, "chain_config": { "name": "devnet", "genesis_fork_version": "0x00004242", "genesis_validators_root": "0x4242424242424242424242424242424242424242424242424242424242424242" }, "mnemonic_config": { "language": "english", "bitlen": 256 }, "validator_indices": { "config": { "0": 0, "1": 1, "2": 2 } }, "withdrawal_addresses": { "default": "0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead", "config": { "0": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001", "1": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0002" } }, "directory": "./my_bls_to_execution" }
-
-
--mnemonic-bitlenAliases:
--strength,--bitlen,--bl,-sDefault:
256The bit strength of the seed phrase. Options:
128,160,192,224,256. This affects mnemonic length (12,15,18,21, or24words). -
--mnemonic-languageAliases:
--language,--lang,-lDefulat:
englishThe language for the mnemonic phrase. Supported languages: English, Chinese (Simplified & Traditional), Czech, French, Italian, Japanese, Korean, Portuguese, and Spanish.
-
--mnemonicThe seed phrase used for key generation. If not set, staking-cli will prompt you to enter it.
Note: If using
--non-interactive, this flag is required.
./bin/staking-cli deposit \
--start-index=0 \
--number=4 \
--chain="devnet" \
--genesis-fork="0x00004242" \
--genesis-validators-root="0x4242424242424242424242424242424242424242424242424242424242424242" \
--directory="./my_keys" \
new-mnemonic \
--amount="8192" \
--amount="0:256FTN" \
--amount="1:4096000000000GWEI" \
--contract="0:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001" \
--contract="1:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0002" \
--withdraw-to="0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead" \
--withdraw-to="0:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0003" \
--withdraw-to="1:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0004" \
--bitlen=256 \
--password="password" \
--language="english"./bin/staking-cli deposit \
--start-index=4 \
--number=4 \
--chain="devnet" \
--genesis-fork="0x00004242" \
--genesis-validators-root="0x4242424242424242424242424242424242424242424242424242424242424242" \
--directory="./my_keys" \
existing-mnemonic \
--amount="8192" \
--amount="4:256FTN" \
--amount="5:4096000000000GWEI" \
--contract="4:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0005" \
--contract="5:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0006" \
--withdraw-to="0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead" \
--withdraw-to="4:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0007" \
--withdraw-to="5:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0008" \
--password="password" \
--mnemonic="abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" \
--language="english"./bin/staking-cli bls-to-execution \
--start-index=0 \
--number=3 \
--chain="devnet" \
--genesis-fork="0x00004242" \
--genesis-validators-root="0x4242424242424242424242424242424242424242424242424242424242424242" \
--validator-index="0:0" \
--validator-index="1:1" \
--validator-index="2:2" \
--withdraw-to="0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead" \
--withdraw-to="0:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001" \
--withdraw-to="1:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0002" \
--directory="./my_bls_to_execution" \
--mnemonic="abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" \
--language="english"