# Running a Validator

Visit the JBC Node repository: <https://github.com/jibchain-net/node>

## <mark style="color:yellow;">PLEASE USE NORMAL \`USER\`</mark> <mark style="color:red;">NOT</mark> <mark style="color:yellow;">\`ROOT\`</mark>

#### How to run a validator node

1. Clone JBC Node on your node machine:

```sh
cd ~
git clone https://github.com/jibchain-net/node.git jbc-node
cd jbc-node
```

2. Check node file

```sh
ls -la
```

Example:

```
total 64
drwxr-xr-x  14 user  staff   448 Dec  3 16:37 .
drwxr-xr-x   4 user  staff   128 Dec  3 16:05 ..
-rw-r--r--   1 user  staff   682 Dec  3 16:07 .env.example
drwxr-xr-x  14 user  staff   448 Dec  3 16:20 .git
-rw-r--r--   1 user  staff     9 Dec  3 16:08 .gitignore
-rw-r--r--   1 user  staff   581 Dec  3 16:17 Makefile
-rw-r--r--   1 user  staff   569 Dec  3 16:05 README.md
drwxr-xr-x  11 user  staff   352 Dec  3 16:05 config
-rw-r--r--   1 user  staff  1518 Dec  3 16:05 docker-compose.yaml
-rw-r--r--   1 user  staff  1121 Dec  3 16:05 genesis.json
-rwxr-xr-x   1 user  staff   216 Dec  3 16:05 init-script.sh
drwxr-xr-x   4 user  staff   128 Dec  3 16:11 keys
-rw-r--r--   1 user  staff   466 Dec  3 16:19 validator.yaml
```

3. Create an Environment file with:

```sh
make env
```

4. Edit `.env` file

* `VALIDATOR NODE`: Edit on the VALIDATOR Configuration section only
  * `NODE_GRAFFITI`: *use your node's graffiti flag to include a short text in the blocks that your node creates*
  * `PUBLIC_BEACON_NODE` : If you're running a full node change to your beacon node.
  * `FEE_RECIPIENT` : Input your JBC address to receive transaction fees
* `FULL NODE`: Edit BOOTNODE Configuration too
  * `NODE_PUBLIC_IP` : your machine's public IP address (IPv4)

```
## BOOTNODE Configuration
NETWORK_ID=8899
EXECUTION_BOOTNODES=enode://74f719d76fbced15a34164de149815cb3dd3404153ca3759dae442f835b570920bdc60759693b466df2be8307d7e30715662605995c2c96c2259bac1d9a31967@65.108.126.254:32324
BOOTNODE_ENR=enr:-MS4QDTd7LbtmtvUhbLWbHZ4o2jWmfMl-5hfgHpCh4Arl1NIWGY3bt8ztKJIV3uTEeWf_xRbRy9ASoK7dCtYGam4yZEQh2F0dG5ldHOIAAAAAAAAAACEZXRoMpAY_TCCQACImf__________gmlkgnY0gmlwhEFsfv6EcXVpY4IjjYlzZWNwMjU2azGhAtJJHhhHUQ_QDG-IIXIH-VeIB5ELxroUrHf8D7s5_CsliHN5bmNuZXRzAIN0Y3CCI4yDdWRwgiOM
TARGET_PEERS=1
NODE_PUBLIC_IP=xx.xx.xx.xxx

## VALIDATOR Configuration
NODE_GRAFFITI=JBCValidatorClient
PUBLIC_BEACON_NODE="http://119.59.123.101:5002/"
FEE_RECIPIENT=0x00000000000
```

5. Create keystore file

From [Generate Validator Keys](/nodes-and-validators/generate-validator-keys.md) section. You will receive a key pair&#x20;

```
total 16
drwxr-xr-x  4 user  staff  128 Dec  3 15:14 .
drwxr-xr-x  3 user  staff   96 Dec  3 15:14 ..
-r--r-----  1 user  staff  702 Dec  3 15:14 deposit_data-1701591267.json
-r--r-----  1 user  staff  710 Dec  3 15:14 keystore-m_12381_3600_0_0_0-1701591267.json
```

Copy `keystore-m_<timestamp>.json` to folder `keys`

Example:

<figure><img src="/files/gtPW4keW4WskdXw4o2Mr" alt=""><figcaption><p> <strong>if have more than 1 key please copy all keys</strong> </p></figcaption></figure>

6. Import validator key

```sh
make import-validator-key
```

Example:

```
docker run -ti --rm -v ./data/lighthouse:/root/lighthouse -v ./data/lighthouse/custom/validators:/root/.lighthouse/custom/validators -v ./config:/config -v ./keys:/keys sigp/lighthouse lighthouse account validator import --directory=/keys --testnet-dir=/config
Running account manager for custom (/config) network
validator-dir path: "/root/.lighthouse/custom/validators"
WARNING: DO NOT USE THE ORIGINAL KEYSTORES TO VALIDATE WITH ANOTHER CLIENT, OR YOU WILL GET SLASHED.

Keystore found at "/keys/keystore-m_12381_3600_0_0_0-1701591267.json":

 - Public key: 0x92d768771c062137e7433fd27072330b14b75d94379432098916ea145d648d2aa84daa448fce166a943315e2644068b6
 - UUID: 96bcdd0c-e0ef-48c2-8bff-7930965c86aa

If you enter the password it will be stored as plain-text in validator_definitions.yml so that it is not required each time the validator client starts.

Enter the keystore password, or press enter to omit it:
```

**INPUT YOUR VALIDATOR KEY PASSWORD**

If a password is correct and imported successfully will be shown:

```
Password is correct.

Successfully imported keystore.
Successfully updated validator_definitions.yml.

Successfully imported 1 validators (0 skipped).

WARNING: DO NOT USE THE ORIGINAL KEYSTORES TO VALIDATE WITH ANOTHER CLIENT, OR YOU WILL GET SLASHED.
```

> If you have more than 1 key store. you will input a password equal number of Keystore

7. The system will create a folder `data`

```sh
ls -la data/lighthouse/custom/validators/
```

Example:

```
total 64
drwxr-xr-x  5 user  staff    160 Dec  3 16:49 .
drwxr-xr-x  3 user  staff     96 Dec  3 16:48 ..
drwxr-xr-x  3 user  staff     96 Dec  3 16:49 0x92d768771c062137e7433fd27072330b14b75d94379432098916ea145d648d2aa84daa448fce166a943315e2644068b6
-rw-------  1 user  staff  28672 Dec  3 16:49 slashing_protection.sqlite
-rw-------  1 user  staff    425 Dec  3 16:49 validator_definitions.yml
```

You will see your validator public key that you imported!

8. Run a Validator node

```sh
make run-validator
```

Example:

```
docker compose -f validator.yaml up -d
[+] Running 2/2
 ✔ Network node_default     Created
 ✔ Container jbc-validator  Started
```

9. Check a validator logs

```sh
make validator-logs
```

```
docker compose -f validator.yaml logs
jbc-validator  | Dec 03 09:55:50.134 INFO Logging to file                         path: "/root/.lighthouse/custom/validators/logs/validator.log"
jbc-validator  | Dec 03 09:55:50.134 INFO Lighthouse started                      version: Lighthouse/v4.5.0-441fc16
jbc-validator  | Dec 03 09:55:50.134 INFO Configured for network                  name: custom (/config)
jbc-validator  | Dec 03 09:55:50.135 INFO Starting validator client               validator_dir: "/root/.lighthouse/custom/validators", beacon_nodes: ["http://119.59.123.101:5002/"]
jbc-validator  | Dec 03 09:55:50.135 INFO HTTP metrics server is disabled
jbc-validator  | Dec 03 09:55:50.150 INFO Completed validator discovery           new_validators: 0
jbc-validator  | Dec 03 09:55:50.739 INFO Enabled validator                       voting_pubkey: 0x92d768771c062137e7433fd27072330b14b75d94379432098916ea145d648d2aa84daa448fce166a943315e2644068b6, signing_method: local_keystore
jbc-validator  | Dec 03 09:55:51.352 INFO Modified key_cache saved successfully
jbc-validator  | Dec 03 09:55:51.353 INFO Initialized validators                  enabled: 1, disabled: 0
jbc-validator  | Dec 03 09:55:51.399 INFO Initialized beacon node connections     available: 1, total: 1
jbc-validator  | Dec 03 09:55:51.409 INFO Loaded validator keypair store          voting_validators: 1
jbc-validator  | Dec 03 09:55:51.409 INFO Pruning slashing protection DB          msg: pruning may take several minutes the first time it runs, epoch: 1142
jbc-validator  | Dec 03 09:55:51.409 INFO Completed pruning of slashing protection DB
jbc-validator  | Dec 03 09:55:51.418 INFO HTTP API server is disabled
jbc-validator  | Dec 03 09:55:51.418 INFO Genesis has already occurred            seconds_ago: 438700
jbc-validator  | Dec 03 09:55:51.418 INFO Block production service started        service: block
jbc-validator  | Dec 03 09:55:51.418 INFO Attestation production service started  next_update_millis: 7581, service: attestation
jbc-validator  | Dec 03 09:55:51.418 INFO Sync committee service started          next_update_millis: 7581, service: sync_committee
jbc-validator  | Dec 03 09:55:51.418 INFO Validator registration service started  service: preparation
jbc-validator  | Dec 03 09:55:51.418 INFO Proposer preparation service started    service: preparation
jbc-validator  | Dec 03 09:55:51.418 INFO Doppelganger protection disabled.
jbc-validator  | Dec 03 09:56:05.000 INFO Connected to beacon node(s)             synced: 1, available: 1, total: 1, service: notifier
jbc-validator  | Dec 03 09:56:05.000 INFO Awaiting activation                     slot: 36559, epoch: 1142, validators: 1, service: notifier
jbc-validator  | Dec 03 09:56:17.003 INFO Connected to beacon node(s)             synced: 1, available: 1, total: 1, service: notifier
jbc-validator  | Dec 03 09:56:17.003 INFO Awaiting activation                     slot: 36560, epoch: 1142, validators: 1, service: notifier
```

**Await validator activation and have fun!!**

10. Stop validator&#x20;

```sh
make stop-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.jibchain.net/nodes-and-validators/become-a-validator/running-a-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.
