> For the complete documentation index, see [llms.txt](https://bitnet-whitepaper.gitbook.io/developer-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bitnet-whitepaper.gitbook.io/developer-docs/setup-and-configuration/run-a-validator.md).

# Run a Validator

### How to Run a Validator Node on BitNet

This section provides a step-by-step guide for setting up and running a validator node on BitNet.

#### Prerequisites

Before you begin, review the **Validator Overview** and **Validator Security Guidelines**. Ensure your system is configured in **UTC timezone** to avoid consensus errors like `LastResultsHash` mismatches that may halt your node.

#### Step 1: Generate Your Validator Key

Your validator's consensus public key is required to register a validator on the BitNet network. To retrieve this key, run:

```bash
bitnetd tendermint show-validator
```

{% hint style="danger" %}
**Important**: Do not use testnet keying backends for generating mainnet keys. This can expose your validator to critical security risks, including unauthorized access to signing keys via RPC endpoints.
{% endhint %}

#### Step 2: Create the Validator

To register your validator on the network, use the command below. Adjust values based on your validator’s intended settings:

```bash
bitnetd tx staking create-validator \
  --amount=1000000abnc \
  --pubkey=$(bitnetd tendermint show-validator) \
  --moniker="YourValidatorName" \
  --chain-id=bitnet-mainnet \
  --commission-rate="0.05" \
  --commission-max-rate="0.10" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="1000000" \
  --gas="auto" \
  --gas-prices="0.025abnc" \
  --from=<wallet_name>
```

* **Commission Parameters** define validator earnings.
* **Min Self-Delegation** enforces a minimum stake the validator must maintain at all times.
* Validators must rank in the top active set to start validating blocks.

#### Step 3: Add Public Description

You can personalize your validator by providing a public-facing profile:

```bash
bitnetd tx staking edit-validator \
  --moniker="YourValidatorName" \
  --website="https://yourdomain.com" \
  --identity=YOUR_KEYBASE_ID \
  --details="Trusted validator focused on uptime and security." \
  --chain-id=bitnet-mainnet \
  --from=<wallet_name>
```

{% hint style="success" %}
Use [Keybase](https://keybase.io/) to add a verifiable identity and profile image to your validator. This helps build credibility and trust with delegators.
{% endhint %}

#### Step 4: Check Validator Status

Confirm your validator’s registration:

```bash
bitnetd query staking validator <your_validator_address>
```

You may also track your validator’s block-signing activity using:

```bash
bitnetd query slashing signing-info <validator_pubkey>
```

#### Step 5: Unjail If Slashed

If your validator was jailed (due to downtime or misbehavior), you can rejoin the active set using:

```bash
bitnetd tx slashing unjail --from=<wallet_name> --chain-id=bitnet-mainnet
```

Ensure your node is synced before sending the unjail transaction.

#### Step 6: Halt Gracefully (Optional)

For planned upgrades or maintenance, halt your validator gracefully at a specific height:

```bash
bitnetd start --halt-height=<desired_height>
```

#### Common Issues

* **Zero Voting Power?**
  * You may be jailed. Restart your node and submit an `unjail` transaction.
* **Too Many Open Files?**
  * Increase file limit:

    ```bash
    ulimit -n 4096
    ```
  * For systemd:

    ```ini
    [Service]
    LimitNOFILE=4096
    ```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://bitnet-whitepaper.gitbook.io/developer-docs/setup-and-configuration/run-a-validator.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
