Prepare Operator
After installing the Operator Service, you need to generate validator keystores for your Vault. These keystores contain the cryptographic keys that your validators will use to sign attestations and propose blocks on the Ethereum network.
You will also need to create and upload a deposit data file to connect your node to the Vault, and set up a hot wallet for the Operator Service to handle validator registrations.
The Operator Service provides built-in functionality to generate all of the above. Alternatively, you may use external tools such as Wagyu Keygen ↗ to generate keystores, and existing wallets like MetaMask ↗ or MyEtherWallet ↗ for the Operator wallet.
This section walks you through the validator key generation process using the Operator Service built-in tools.
🤖 Prepare Operator📝 Initialize Mnemonic ↓ 🔐 Generate Validator Keys → 📁 Keystores + 📄 Deposit Data File ↓ ✅ Import Keys to Consensus Client ↓ 💼 Create Hot Wallet ↓ 📤 Upload Deposit Data File to Vault ↓ 🚀 Run Operator Service
Step 1: Initialize Mnemonic
Initialize Configuration
Run the init command to set up your mnemonic used to derive your validator keys.
For example, if running Operator Service from binary:
./operator init
Follow the command prompts.
Example Output
Enter the network name (mainnet, hoodi, gnosis, chiado) [mainnet]: hoodi
Enter your vault address: 0xf27...10ad9
Choose your mnemonic language (chinese_simplified, chinese_traditional, czech, english, italian, korean, portuguese, spanish) [english]: english
This is your seed phrase. Write it down and store it safely, it is the ONLY way to recover your validator keys.
where town man expand behind ...
Press any key when you have written down your mnemonic.
Please type your mnemonic (separated by spaces) to confirm you have written it down
: where town man expand behind ...
done.
Successfully initialized configuration for vault 0xf27...10ad9
Important Security Notice
Keep your mnemonic safe. It is the only way to recover your validator keys.
Step 2: Generate Validator Keys
Generate validator keystores from your mnemonic using:
./operator create-keys
Follow the command prompts.
Example Output
Enter the vault address: 0xf27...10ad9
Enter the number of the validator keys to generate: 3
Enter the mnemonic for generating the validator keys: where town man expand behind ...
Creating validator keys: [####################################] 3/3
Generating deposit data JSON [####################################] 3/3
Exporting validator keystores [####################################] 3/3
Done. Generated 3 keys for 0xf27...10ad9 vault.
Keystores saved to /Users/user/.stakewise/0xf27...10ad9/keystores file
Deposit data saved to /Users/user/.stakewise/0xf27...10ad9/deposit_data.json file
This command generates the following files in your Vault directory (~/.stakewise/[vault address]/):
config.json- Configuration file for your Vault.deposit_data.json- Contains validator registration information including public keys, withdrawal credentials, and cryptographic signatures. This file must be uploaded to your Vault (Step 5: Upload Deposit Data File →) to authorize the Operator Service to register your validators.keystores/directory containing: validator keystores andpassword.txtfor all generated keystores.
Note
- Per-keystore option: Use the
--per-keystore-passwordflag to generate individual password files for each keystore (e.g.,keystore-001.txt,keystore-002.txt, etc.)
Important
Protect your password files as carefully as your keystores — anyone with access to them can decrypt your keys. This applies to both the single password.txt file and individual per-keystore password files.
Add Validator Keys to Vault
You can always add more validator keys to your Vault:
- Generate new validator keys and deposit data as described in the step above
- Upload the deposit data file to your Vault as described in Step 5: Upload Deposit Data File →
Important
Uploading a new deposit data file will overwrite the existing file and consequently overwrite previously unused validator keys. This can be done at any point, but only by the Vault Admin or Keys Manager.
Alternative Key Management
Validator keystores don't need to be stored locally. You can instead use:
- Remote Signer → — Sign deposit/exit messages via a remote signer
- HashiCorp Vault → — Load keys from a remote Vault instance
- API Mode → — Run Operator as API service with external key management
Step 3: Import Validator Keys
Upload your keystores into your validator client:
- Locate your keystores in
~/.stakewise/[vault address]/keystores - Follow your consensus client's guide for importing keys
- Use the password from
password.txtfile - Start the validator client with attached validator keys.
Step 4: Create Hot Wallet
Run the create-wallet command to create your hot wallet using your mnemonic.
Note
This mnemonic can be the same as the one used to generate the validator keys, or a new mnemonic if you desire.
./operator create-wallet
Example Output
Enter the vault address: 0xf27...10ad9
Enter the mnemonic for generating the wallet: where town man expand behind ...
Done. The wallet and password saved to /Users/user/.stakewise/0xf27...10ad9/wallet directory. The wallet address is: 0x9A739D3...E4921685
Wallet Balance Warning
Fund your wallet with ETH (or xDAI on Gnosis) to cover gas:
- Each validator registration costs ~0.01 ETH at 30 Gwei gas price
- Check current gas prices at Etherscan Gas Tracker ↗
- Monitor balance regularly to prevent registration failures
Step 5: Upload Deposit Data File to Vault
Once you have created your validator keys, deposit data file, and hot wallet, you need to upload the deposit data file to the Vault to allow the Operator Service to register validators on your behalf.
Multiple Operators
If your Vault has multiple node operators, you must first merge all operator deposit data files into a single file using the merge-deposit-data command before uploading.
The deposit data file can be uploaded through the StakeWise UI or via the Operator Service. Only the Vault Admin or Keys Manager can perform this action.
- StakeWise UI
- Operator Service
- Connect your wallet and navigate to the Operate page ↗
- Select your Vault from the list
- Click Settings in the upper right corner and open the Deposit Data tab
- Upload your deposit data file by dragging and dropping it, or clicking to browse your files
- Click Save and confirm the transaction in your wallet
The deposit data file will be uploaded once the transaction is confirmed on the network.
If you cannot use the UI, you can upload the deposit data using the Operator Service.
First, calculate the Merkle tree root of your deposit data:
./operator get-validators-root
Enter the vault address: 0xf27...10ad9
The validator deposit data Merkle tree root: 0x6048426ae17705a90603d7a544378bc5eb0a4ae80bb23543e0e48b323081f2b8
Next, find your Vault version by calling the version method on your Vault contract.
For Vault version 1:
- Call the
setValidatorsRootmethod on your Vault contract
For Vault version 2 or higher:
- Call the
setDepositDataRootmethod on theDepositDataRegistrycontract
Contract Addresses
DepositDataRegistry contracts:
- Ethereum:
0x75AB6DdCe07556639333d3Df1eaa684F5735223e↗ - Gnosis:
0x58e16621B5c0786D6667D2d54E28A20940269E16↗
You can interact with these contracts via Etherscan or CLI tools like eth-cli ↗. The ABI is available here ↗.
Steps via Etherscan:
- Navigate to the
DepositDataRegistrycontract address for your network - Select the Contract tab, then Write Contract
- Connect your wallet (must be Vault Admin or Keys Manager)
- Find the
setDepositDataRootfunction - Enter your Vault address and the Merkle tree root from the command above
- Click Write and confirm the transaction
Next Steps
🎉 Your Operator Service is now set up! Continue to Start Operator → to launch your Operator Service.