> 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/bitnet-ops-handbook/testnet.md).

# Testnet

### Joining the BitNet Testnet

This guide explains how to connect to the **BitNet testnet**, configure your node, and become a testnet validator.

***

#### 1. Select the Testnet

Choose the testnet version by setting the appropriate **Chain ID** and retrieving the corresponding genesis file and seed peers. You can find these in the [BitNet testnet repository](https://github.com/bitnet/testnets).

{% hint style="danger" %}
Ensure your **server timezone is set to UTC**. Misconfigured timezones may cause `LastResultsHash` mismatches that halt the node.
{% endhint %}

***

#### 2. Install the BitNet Binary

Install the BitNet CLI binary (`bitnetd`) following the [official installation instructions](https://github.com/bitnet/bitnet).

Ensure you install the correct version for the current testnet. Run:

```bash
bitnetd version
```

***

#### 3. Save Chain ID (Optional)

To avoid passing `--chain-id` in every CLI command, you can set it globally:

```bash
bitnetd config chain-id bitnet_testnet_9000
```

***

#### 4. Initialize the Node

Initialize your node:

```bash
bitnetd init <your_moniker> --chain-id bitnet_testnet_9000
```

{% hint style="success" %}
Moniker must contain only **ASCII characters**.
{% endhint %}

***

#### 5. Add Genesis File

Download the testnet `genesis.json` and place it into your config folder:

```bash
wget -P ~/.bitnetd/config https://archive.bitnet.org/testnet/genesis.json
bitnetd validate-genesis
```

***

#### 6. Configure Seed and Persistent Peers

**Add Seeds**

Open `~/.bitnetd/config/config.toml` and set:

```toml
seeds = "<node_id>@<ip>:<port>"
```

Or auto-configure using:

```bash
SEEDS=$(curl -sL https://raw.githubusercontent.com/bitnet/testnets/main/seeds.txt | awk '{print $1}' | paste -s -d, -)
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" ~/.bitnetd/config/config.toml
```

**Add Persistent Peers**

```bash
PEERS=$(curl -sL https://raw.githubusercontent.com/bitnet/testnets/main/peers.txt | sort -R | head -n 10 | awk '{print $1}' | paste -s -d, -)
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" ~/.bitnetd/config/config.toml
```

***

#### 7. Start Your Node

```bash
bitnetd start
```

Once two-thirds of testnet validators are online, block production begins.

***

#### 8. Create a Validator (Optional)

After getting testnet tokens from the faucet, submit a validator creation transaction:

```bash
bitnetd tx staking create-validator \
  --amount=1000000abnc \
  --pubkey=$(bitnetd tendermint show-validator) \
  --moniker="BitNetTester" \
  --chain-id=bitnet_testnet_9000 \
  --commission-rate="0.05" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="1" \
  --gas="auto" \
  --gas-prices="0.025abnc" \
  --from=<key_name>
```

***

#### 9. Resetting or Restarting the Node

If required, reset data:

```bash
rm $HOME/.bitnetd/config/addrbook.json
bitnetd tendermint unsafe-reset-all --home $HOME/.bitnetd
```

Then restart:

```bash
bitnetd start
```

***

#### 10. Share Your Peer

To help others find you, get your node ID:

```bash
bitnetd tendermint show-node-id
```

Share it on the BitNet Discord's `#find-peers` channel.
