Skip to main content

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)
Key Security

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
Custom Chain

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:

  1. Choose a language: Select your preferred language
  2. Create a withdrawal address: Enter your Inception address for withdrawals
  3. Create a password: Strong password to encrypt your keystore files
  4. Confirm the mnemonic: Write down and confirm your 24-word mnemonic phrase
Mnemonic Security

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)
Backup Keys

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
Password Security

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.

  1. Visit the Inception Launchpad (see Transparency & Addresses page for URL)
  2. Connect your wallet with 32+ INCP
  3. Upload your deposit_data-[timestamp].json file
  4. Review the deposit details carefully
  5. Confirm the transaction
Verification Checklist

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

Verify 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

  1. Go to Inception Explorer
  2. Search for your transaction hash
  3. Verify the transaction succeeded
  4. 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:

  1. Transaction Confirmation: 12-128 seconds (~1-10 blocks)
  2. Deposit Recognition: A few minutes for beacon chain to recognize
  3. Activation Queue: Depends on queue length (can be hours to days)
  4. Validator Active: Start earning rewards and performing duties
Activation Queue

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
  • 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

Avoid Slashing
  • 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

  1. Mnemonic: Multiple physical copies in secure locations
  2. Keystore files: Encrypted backups in multiple locations
  3. Wallet password: Secure password manager or physical backup
  4. 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:

  1. Submit a voluntary exit message
  2. Wait in the exit queue
  3. 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

Additional Resources