Generate Validator Keys and Make Deposit
This guide walks you through generating validator keys and making the required 32 INCP deposit to activate your validator.
Prerequisites
Before starting, ensure you have:
- Execution layer installed and synced
- Consensus layer installed and synced
- 32 INCP in a wallet you control (plus extra for gas fees)
- Secure computer for key generation (preferably offline)
Your validator keys control your 32 INCP deposit. Treat key generation and storage with extreme care. Consider using an air-gapped machine for maximum security.
Install Staking Deposit CLI
The official Ethereum Staking Deposit CLI is used to generate validator keys.
Download Pre-built Binary
# Create directory
mkdir -p ~/staking-deposit-cli
cd ~/staking-deposit-cli
# Download latest release
# Check https://github.com/ethereum/staking-deposit-cli/releases for latest version
wget https://github.com/ethereum/staking-deposit-cli/releases/download/v2.7.0/staking_deposit-cli-fdab65d-linux-amd64.tar.gz
# Extract
tar -xvf staking_deposit-cli-fdab65d-linux-amd64.tar.gz
cd staking_deposit-cli-fdab65d-linux-amd64
Build from Source (Alternative)
# Install dependencies
sudo apt install python3 python3-pip
# Clone repository
git clone https://github.com/ethereum/staking-deposit-cli.git
cd staking-deposit-cli
# Install
pip3 install -r requirements.txt
python3 setup.py install
Generate Validator Keys
Generate Keys
Run the deposit CLI to create your validator keys:
./deposit new-mnemonic \
--num_validators 1 \
--chain inception \
--execution_address YOUR_INCEPTION_ADDRESS
If "inception" is not recognized as a chain, you may need to specify the chain config manually. Check Inception documentation for the correct parameters.
Parameters:
--num_validators
: Number of validators to create (1 for most users)--chain
: Network name (use "inception" or provide custom config)--execution_address
: Your Inception address where validator rewards will be sent
Follow the Prompts
The CLI will ask you to:
- Choose a language: Select your preferred language
- Create a withdrawal address: Enter your Inception address for withdrawals
- Create a password: Strong password to encrypt your keystore files
- Confirm the mnemonic: Write down and confirm your 24-word mnemonic phrase
Your 24-word mnemonic is the MASTER KEY to your validator. Write it down on paper, store it securely offline, and never share it with anyone. If you lose it, you cannot recover your 32 INCP.
Output Files
After successful generation, you'll find these files in ./validator_keys/
:
- deposit_data-[timestamp].json: Contains deposit information for the deposit contract
- keystore-[pubkey].json: Encrypted validator signing key (one per validator)
Make multiple backups of these files and store them securely in different physical locations. Consider using encrypted USB drives or hardware security modules.
Import Keys to Prysm
Import your validator keys into Prysm:
# Import keystore
./prysm.sh validator accounts import \
--keys-dir ~/staking-deposit-cli/validator_keys \
--wallet-dir ~/prysm-data/wallet \
--accept-terms-of-use
# You'll be prompted for:
# 1. Wallet password (create a new one)
# 2. Keystore password (the one you created during key generation)
Save Wallet Password
Create a password file for the validator service:
# Create password file
echo "YOUR_WALLET_PASSWORD" > ~/prysm-data/wallet-password.txt
# Secure permissions
chmod 600 ~/prysm-data/wallet-password.txt
Keep the wallet password secure. Anyone with access to both the keystore files and the password can control your validator.
Make the 32 INCP Deposit
Now you need to deposit 32 INCP to the Inception deposit contract to activate your validator.
Using the Launchpad (Recommended)
- Visit the Inception Launchpad (see Transparency & Addresses page for URL)
- Connect your wallet with 32+ INCP
- Upload your
deposit_data-[timestamp].json
file - Review the deposit details carefully
- Confirm the transaction
Before submitting your deposit:
- Verify you're on the official Launchpad URL (check Transparency & Addresses)
- Confirm Chain ID is 1805
- Verify deposit amount is exactly 32 INCP
- Check deposit contract address matches official documentation
- Ensure your withdrawal address is correct (cannot be changed later!)
Using Command Line (Advanced)
You can also submit the deposit directly to the deposit contract:
# Install web3.py
pip3 install web3
# Use a script to submit deposit
# (Script will be provided in official documentation)
Deposit Contract Address
Always verify the deposit contract address from official sources:
- Transparency & Addresses page
- Official Inception documentation
- Verified on the block explorer
- Announced on official channels
Never trust deposit contract addresses from unofficial sources or social media.
Check the Transparency & Addresses page for the verified deposit contract address (TBA).
Verify Deposit
After submitting your deposit:
Check Transaction Status
- Go to Inception Explorer
- Search for your transaction hash
- Verify the transaction succeeded
- Confirm 32 INCP was sent to the deposit contract
Check Validator Status
# Using Prysm
./prysm.sh validator accounts list --wallet-dir ~/prysm-data/wallet
# Check on beacon chain explorer
# Visit: https://beacon.inceptionera.com (if available)
# Search for your validator public key
Activation Timeline
After making your deposit:
- Transaction Confirmation: 12-128 seconds (~1-10 blocks)
- Deposit Recognition: A few minutes for beacon chain to recognize
- Activation Queue: Depends on queue length (can be hours to days)
- Validator Active: Start earning rewards and performing duties
Validators are activated at a rate of 4 per epoch (~6.4 minutes). If many validators are joining, you may wait in queue.
Start Your Validator
Once your deposit is confirmed, start the validator client:
# If using systemd
sudo systemctl start prysm-validator
# Check logs
sudo journalctl -u prysm-validator -f
# Look for successful attestations
What to Look For
In the validator logs, you should see:
- "Validator activated": Your validator is now active
- "Submitted new attestations": Successfully performing duties
- "Submitted new block": Successfully proposed a block (occasional)
Important Reminders
Key Security
- Never share your mnemonic phrase with anyone
- Never enter your mnemonic on any website
- Never take digital photos of your mnemonic
- Never store your mnemonic in cloud storage
Slashing Risks
- Never run the same keys on multiple machines simultaneously
- Never import your keys to a second validator without proper migration
- Always ensure only one instance is running with your keys
- Use proper shutdown procedures before restarting
Backup Strategy
- Mnemonic: Multiple physical copies in secure locations
- Keystore files: Encrypted backups in multiple locations
- Wallet password: Secure password manager or physical backup
- Configuration files: Backup systemd services and scripts
Monitoring Your Validator
Check Performance
- Beacon Chain Explorer: Monitor your validator's performance online
- Logs: Regularly check validator logs for issues
- Alerts: Set up alerting for downtime or missed attestations
- Metrics: Consider running Prometheus and Grafana for detailed metrics
Expected Performance
A healthy validator should:
- Attest every epoch (~6.4 minutes)
- Have >99% uptime
- Occasionally propose blocks (randomly selected)
- Participate in sync committees when selected
Troubleshooting
Deposit Not Recognized
- Verify transaction succeeded on explorer
- Check you sent exactly 32 INCP to the correct contract
- Ensure beacon node is fully synced
- Wait a few epochs for the deposit to be processed
"Invalid deposit signature"
- Verify you're running on the correct network (Chain ID 1805)
- Ensure deposit data matches your keystore
- Check for any INCEPT vs INCP ticker inconsistencies
Validator Not Attesting
- Ensure beacon node is synced
- Verify validator client is running
- Check keys were imported correctly
- Confirm deposit was recognized and validator activated
Withdrawing and Exiting
Voluntary Exit
When you want to stop validating:
- Submit a voluntary exit message
- Wait in the exit queue
- Once exited, your 32 INCP + rewards become withdrawable
Withdrawal Address
Funds will be automatically withdrawn to the execution address you specified during key generation. This address cannot be changed, so ensure it's correct!
Next Steps
- Monitor your validator performance
- Join the Inception validator community
- Stay updated on network upgrades
- Review the Protocol documentation
- Check the Status page regularly