> For the complete documentation index, see [llms.txt](https://zugchain.gitbook.io/zugchain/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zugchain.gitbook.io/zugchain/validator-operations/generating-validator-keys.md).

# Generating Validator Keys

The ZugChain Deposit CLI is a secure, offline tool used to generate your cryptographic validator keys and deposit data. This step is required before you can run a node.

{% hint style="danger" %}
Keep Your Mnemonic Safe: Always generate your keys on a secure machine. NEVER share your 24-word mnemonic phrase with anyone. Official Deposit Contract: The ONLY official ZugChain Beacon Deposit Contract address is <kbd>0x00000000219ab540356cBB839Cbe05303d7705Fa</kbd>. Always verify this exact address before making your validator deposit!
{% endhint %}

{% tabs %}
{% tab title="Linux" %}

1. #### <mark style="color:$primary;">Download & Extract</mark>

Download the latest Linux binary (<kbd>zugchain-deposit-cli-linux-amd64.tar.gz</kbd>) from the [Official Releases Page](https://github.com/ZugChainLabs/zugchain-deposit-cli/releases). Open your terminal and extract it:

```bash
wget https://github.com/ZugChainLabs/zugchain-deposit-cli/releases/download/v1.1.0/zugchain-deposit-cli-v1.1.0-linux-amd64.tar.gz
```

```bash
tar -xzf zugchain-deposit-cli-linux-amd64.tar.gz
```

```bash
cd zugchain-deposit-cli-linux-amd64
```

2. #### <mark style="color:$primary;">Run the Generator</mark>

*Execute the generation wizard:*

```bash
./deposit new-mnemonic --num_validators=1 --chain=zugchain
```

Follow the interactive prompts to create your password and write down your 24-word seed phrase safely.
{% endtab %}

{% tab title="Windows" %}

1. #### <mark style="color:$primary;">Download & Extract</mark>

Download the latest Windows executable (`zugchain-deposit-cli-windows-amd64.zip`) from the [Official Releases Page](https://github.com/ZugChainLabs/zugchain-deposit-cli/releases). Extract the `.zip` file to a folder on your computer.

2. #### <mark style="color:$primary;">Run the Generator</mark>

*Open PowerShell inside that extracted folder and run the generation wizard:*

```bash
.\deposit.exe new-mnemonic --num_validators=1 --chain=zugchain
```

Follow the interactive prompts to create your password and write down your 24-word seed phrase safely.
{% endtab %}

{% tab title="macOS" %}

1. #### <mark style="color:$primary;">Prepare Ubuntu Environment</mark>

Native macOS binaries are coming soon. For now, we will securely generate the keys using the Linux binary inside an Ubuntu Virtual Machine. Paste this command into your Mac Terminal to check if Ubuntu is installed, install it if missing, and log in:

{% code title="# Check if Multipass is installed, install if not" %}

```bash
if ! command -v multipass &> /dev/null; then
    echo "Multipass not found. Installing via Homebrew..."
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew install multipass
fi
```

{% endcode %}

{% code title="# Check if our ZugChain VM exists, launch if not" %}

```bash
if ! multipass info zugchain-node &> /dev/null; then
    echo "Launching Ubuntu VM..."
    multipass launch ubuntu --name zugchain-node
fi
```

{% endcode %}

{% code title="# Enter the Ubuntu environment" %}

```bash
multipass shell zugchain-node
```

{% endcode %}

2. #### <mark style="color:$primary;">Download & Run the Generator</mark>

*Now that you are inside Ubuntu, download the Linux binary and run the wizard:*

```bash
wget https://github.com/ZugChainLabs/zugchain-deposit-cli/releases/download/v1.1.0/zugchain-deposit-cli-v1.1.0-linux-amd64.tar.gz
```

```bash
tar -xzf zugchain-deposit-cli-linux-amd64.tar.gz
```

```bash
cd zugchain-deposit-cli-linux-amd64
```

```bash
./deposit new-mnemonic --num_validators=1 --chain=zugchain
```

{% endtab %}
{% endtabs %}

#### <mark style="color:$primary;">📂 Output Files</mark>

After successfully running the wizard, a `validator_keys` directory will be created containing two distinct file types:

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><mark style="color:$primary;">deposit_data-[timestamp].json</mark></td><td>Upload this file to the ZugChain Launchpad to register your validator and securely make your 32,000 ZUG deposit.</td></tr><tr><td><mark style="color:$primary;">keystore-m_...json</mark></td><td>Import this file into your server's Validator Client. Keep it extremely safe, as it authorizes your node to participate in consensus.</td></tr></tbody></table>
