mirror of
https://github.com/wealdtech/ethdo.git
synced 2026-01-07 21:24:01 -05:00
92 lines
4.9 KiB
Markdown
92 lines
4.9 KiB
Markdown
# Conversions
|
|
|
|
Converting from mnemonics to keys can be confusing. Below are commands that allow you to convert from one thing to another.
|
|
|
|
## I have a mnemonic
|
|
|
|
A seed is a 24-word phrase that is used as the start point of a process called hierarchical derivation. It can be used, in combination with a path, to generate any number of keys.
|
|
|
|
### I want to be able to create accounts from the mnemonic
|
|
|
|
The first thing you need to do is to create a wallet. To do this run the command below with the following changes:
|
|
|
|
- put your mnemonic in place of the sample `abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art`
|
|
- pick a suitable passphrase for your wallet in place of `secret`. You will need to use this in all subsequent commands
|
|
- rename the wallet to something other than `Wallet` if you so desire. If so, you will need to change it in all subsequent commands
|
|
|
|
```
|
|
$ ethdo wallet create --type=hd --mnemonic="abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art" --wallet=Wallet --wallet-passphrase=secret
|
|
```
|
|
|
|
### I want an account with a specific public key.
|
|
|
|
To create an account with a specific public key you need to have both the mnemonic and the derivation path. A derivation path looks something like `m/12381/3600/0/0` and is used by `ethdo` to generate a specific private key (from which the public key is in turn derived).
|
|
|
|
You should first create a wallet as per the previous step. To then create an account run the command below with the following changes:
|
|
|
|
- rename the account to something other than `Account` if you so desire. If so, you will need to change it in all subsequent commands.
|
|
- put your path in place of `m/12381/3600/0/0`
|
|
- pick a suitable passphrase for your account in place of `secret2`. you will need to use this in all subsequent commands
|
|
|
|
```
|
|
$ ethdo account create --account=Wallet/Account --path=m/12381/3600/0/0 --wallet-passphrase=secret --passphrase=secret2
|
|
```
|
|
|
|
At this point you should be able to view your account info with:
|
|
|
|
```
|
|
$ ethdo account info --account=Wallet/Account
|
|
Public key: 0x8f5758ff144be9b09d02858522887fccd8dd2a0404ec43439b0f6978909c2128491951486dcaee0f5794262e46f76738
|
|
Path: m/12381/3600/0/0
|
|
```
|
|
|
|
This process can be repated for any number of paths by changing the `path` and providing a different account name each time.
|
|
|
|
### I want an account's private key.
|
|
|
|
To obtain the private key of an account follow the steps above, then run:
|
|
|
|
```
|
|
$ ethdo account key --account=Wallet/Account --passphrase=secret2
|
|
0x20e3bf019224fec58b27a9774891704646005d6da7a45d4f35032c1c9b501296
|
|
```
|
|
|
|
### I want the _i_th withdrawal and validator keys
|
|
|
|
[EIP-2334](https://eips.ethereum.org/EIPS/eip-2334) defines derivation path indices for withdrawal and validator keys. For a given index _i_ the keys will be at the following paths:
|
|
|
|
- withdrawal key: m/12381/3600/_i_/0
|
|
- validator key: m/12381/3600/_i_/0/0
|
|
|
|
Note that the first index is 0, the second is 1, _etc._
|
|
|
|
To recreate these as `ethdo` accounts run these commands with the following changes:
|
|
|
|
- put your index in place of `_i_`
|
|
- pick suitable passphrases for your account in place of `secret2`
|
|
|
|
```
|
|
$ ethdo account create --account=Wallet/Withdrawal_i_ --path=m/12381/3600/_i_/0 --wallet-passphrase=secret --passphrase=secret2
|
|
$ ethdo account create --account=Wallet/Validator_i_ --path=m/12381/3600/_i_/0/0 --wallet-passphrase=secret --passphrase=secret2
|
|
```
|
|
|
|
### I want to recreate the deposit data for my _i_th validator
|
|
|
|
To recreate the deposit data for a given validator you can run this command, using whatever changes to the default information you may have carried out previously:
|
|
|
|
```
|
|
$ ethdo validator depositdata --withdrawalaccount=Wallet/Withdrawal_i_ --validatoraccount=Wallet/Validator_i_ --depositvalue=32Ether --passphrase=secret2
|
|
```
|
|
|
|
If you wish to be able to provide this information to the launchpad you can add `--launchpad` to the end of the command.
|
|
|
|
If you wish to have this data for a particular test network you will need to supply the fork version with `--forkversion`. Details on the fork versions of various testnets can be found in the subdirectories of the [testnet site](https://github.com/goerli/medalla).
|
|
|
|
### I want keys without creating wallets and accounts
|
|
|
|
It is possible to derive keys directly from a mnemonic and path without going through the interim steps. Note that this will _not_ create accounts, and cannot be used to then sign data or requests. This may or not be desirable, depending on your requirements.
|
|
|
|
```
|
|
$ ethdo account derive --mnemonic="abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art" --path=m/12381/3600/0/0
|
|
```
|