# Become a Validator

This guide outlines the journey to becoming a validator, a crucial role that contributes to the network's security and governance.

## Who are Validators?

Validators are network participants who validate transactions and blocks, ensuring the integrity and security of the blockchain. They play a vital role in the consensus mechanism and, in return, receive rewards for their contributions.

## Install `galactica`

Start by preparing your environment according to the official documentation. Refer to the [Installation Guide](/galactica-developer-documentation/validator-guide/installation.md) for detailed steps.

## Hardware Recommended Specifications:

| Component            | Specification                                                                  |
| -------------------- | ------------------------------------------------------------------------------ |
| **CPU**              | Modern 4-core (or higher) processor, 2.5 GHz minimum clock speed               |
| **Memory (RAM)**     | 16 GB minimum, 32 GB or more recommended for high transaction volumes          |
| **Storage**          | SSD with at least 500 GB, NVMe SSDs preferred for faster data transfer rates   |
| **Network**          | Stable and fast internet connection with at least 100 Mbps up/down speeds      |
| **Operating System** | Recent version of Linux, e.g., Ubuntu 20.04 LTS, with regular security updates |

These specifications serve as a guideline. Adjustments may be necessary based on network conditions and individual use cases.

## Steps to Validatorship

1. **Initialize Your Node**: Initialize your node with a unique moniker.

   ```sh
   galacticad init [your-moniker] --chain-id [appropriate_chain_id]
   ```
2. **Configure Your Node**: Set up the node configuration to communicate with the blockchain.

   ```sh
   galacticad config node [RPC_node_URL]
   ```
3. **Generate a Private Key**: Create a new private key for your validator.

   ```sh
   galacticad keys add [your-key-name]
   ```
4. **Set Up Genesis and Seeds**: Download the genesis file and configure seed nodes.

   ```sh
   wget [genesis_file_url] -O ~/.galactica/config/genesis.json
   ```

   Configure your `config.toml` with seed nodes:

   ```sh
   # download the seeds.txt file:
   wget [seeds.txt_file_url] -O ~/.galactica/config/seeds.txt

   # set seeds in the config.toml file
   seeds=$(cat ~/.galactica/config/seeds.txt | tr '\n' ',' | sed 's/,$//')
   sed -i '' "s/seeds = \"\"/seeds = \"$seeds\"/" ~/.galactica/config/config.toml
   ```

   You can find the seed nodes in the genesis file or the [network-specific documentation](#network-configurations).
5. **Register as a Validator**: Submit a `create-validator` transaction.

   ```sh
   galacticad tx staking create-validator \
    --chain-id=[appropriate_chain_id] \
    --amount=[amount_agnet] \
    --pubkey=$(galacticad tendermint show-validator) \
    --moniker="[your-moniker]" \
    --details="your-details" \
    --identity="id-from-keybase" \
    --website="https://your-website" \
    --security-contact="your-email" \
    --commission-rate="0.05" \
    --commission-max-rate="0.1" \
    --commission-max-change-rate="0.02" \
    --min-self-delegation="1" \
    --gas="300000" \
    --gas-prices="100agnet" \
    --from=[your-key-name]
   ```

   Replace `[amount_agnet]` with the amount of tokens you wish to stake in `agnet`. For example `100 GNET equals 100 * 10^18 agnet = 100000000000000000000agnet`. To produce blocks on the testnet, your node's stake+delegation needs to raise to the [top 100, the validator set](https://explorer-pingpub-reticulum.galactica.com/galactica-reticulum/staking).
6. **Delegate Tokens**: Optionally, delegate tokens to your validator.

   ```sh
   galacticad tx staking delegate \
    $(galacticad keys show [your-key-name] --bech val -a) \
    [amount_agnet] \
    --gas="300000" \
    --gas-prices="100agnet" \
    --from=[your-key-name]
   ```
7. **Launch Your Validator Node**: Start your node to begin validating.

   ```sh
   galacticad start --chain-id [appropriate_chain_id]
   ```
8. **Change RPC Node URL**: If you wish to change the client's RPC node URL to your local node, run the following command:

   ```sh
    galacticad config node tcp://localhost:26657
   ```
9. **Check node status**: Check the status of your node by running the following command:

   ```sh
   galacticad status
   ```

## Network Configurations

For network-specific details like chain IDs and node URLs, please refer to the designated pages:

* [🧪 TestNet: Reticulum](/galactica-developer-documentation/testnet-reticulum.md)
* [🧪 DevNet: Andromeda](/galactica-developer-documentation/devnet-andromeda.md)

This guide provides a general overview. Dive into the world of Galactica Network and contribute to its growth and security as a validator.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.galactica.com/galactica-developer-documentation/validator-guide/become-validator.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
