# Встановлення і налаштування валідатора

### Завантажуємо, встановлюємо та запускаємо ноду

Для завантаження по черзі виконуємо наступні команди

{% code lineNumbers="true" %}

```bash
cd $HOME
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app
git checkout v0.11.0
make install
```

{% endcode %}

Після встановлення перевіряємо версію

```
celestia-appd version
```

> Відповідь має бути 0.11.0

Клонуємо репозиторій з мережами

```bash
cd $HOME
git clone https://github.com/celestiaorg/networks
```

#### Ініціалізуємо ноду

Створюємо та зберігаємо змінні

{% hint style="danger" %}
замініть текст прикладів MONIKER та CELESTIA\_WALLET написаний кирилицею на власні назви латиницею
{% endhint %}

{% code lineNumbers="true" %}

```bash
MONIKER='"назва_вашого_валідатора"'
CELESTIA_WALLET='назваВашогоГаманця'
CHAIN_ID="mocha" 
```

{% endcode %}

Зберігаємо змінні в `.bash_profile`

{% code lineNumbers="true" %}

```bash
echo "export CHAIN_ID=$CHAIN_ID" >> $HOME/.bash_profile
echo "export MONIKER=${MONIKER}" >> $HOME/.bash_profile
echo "export CHELESTIA_WALLET=${CHELESTIA_WALLET}" >> $HOME/.bash_profile
```

{% endcode %}

Перечитуємо `.bash_profile`

```bash
source $HOME/.bash_profile
```

Ініціалізуємо

```bash
celestia-appd init $MONIKER --chain-id $CHAIN_ID
```

Копіюємо genesis.blob файл в файли апки

```bash
cp $HOME/networks/mocha/genesis.json $HOME/.celestia-app/config/
```

Видаляємо дані блокчейну

```bash
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app
```

### Налаштовуємо конфігурацію

Налаштовуємо пірів та сідів

{% code lineNumbers="true" %}

```bash
SEEDS="9aa8a73ea9364aa3cf7806d4dd25b6aed88d8152@celestia.seed.mzonder.com:11156" 
sed -i "s|^seeds =.|seeds = "$SEEDS"|" $HOME/.celestia-app/config/config.toml
```

{% endcode %}

{% hint style="info" %}
Взяли з гайду mzonder\`a
{% endhint %}

Налаштовуємо снепшоти та стиснення&#x20;

{% code lineNumbers="true" %}

```bash
pruning_keep_recent="10000"
pruning_interval=$(shuf -n1 -e 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
snapshot_interval="5000"
```

{% endcode %}

Записуємо змінні в app.toml

{% code overflow="wrap" lineNumbers="true" %}

```bash
sed -i "s/^pruning *=.*/pruning = \"custom\"/; s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/; s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/; s/^snapshot-interval *=.*/snapshot-interval = $snapshot_interval/" $HOME/.celestia-app/config/app.toml
```

{% endcode %}

Налаштовуємо клієнт командами

{% code lineNumbers="true" %}

```bash
celestia-appd config chain-id $CHAIN_ID --home $HOME/.celestia-app
celestia-appd config keyring-backend test
```

{% endcode %}

### Cтворюємо сервісний файл celestia-appd.service

Вводимо вce однією командою

```shell
tee <<EOF >/dev/null /etc/systemd/system/celestia-appd.service
[Unit]
Description=celestia-appd
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia-appd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

Перевіряємо сервісник

```shell
cat /etc/systemd/system/celestia-appd.service
```

Запускаємо сервісний файл&#x20;

{% code lineNumbers="true" %}

```shell
systemctl enable celestia-appd.service
systemctl daemon-reload
systemctl restart celestia-appd.service
```

{% endcode %}

Перевіряємо логи

```shell
journalctl -n 50 -f -u celestia-appd.service | ccze -A
```

Щоб мати можливість продовжити мусимо бути повністю синхронізовані. Перевіряємо чи синхронізовані командою нижче.

```bash
curl -s localhost:26657/status | jq | grep catching_up
```

> Повинна бути відповідь `"catching_up": false`

### Cтворюємо адреси гаманця для валідатора

Створюємо адресу. Якщо у вас вже є створена адреса то відновіть командою нижче.

{% hint style="danger" %}
Обов'язково збережіть сід фразу, щоб мати змогу відновити гаманець в майбутньому
{% endhint %}

```bash
celestia-appd keys add $CELESTIA_WALLET
#має показати сід фразу 
```

#### Відновлення гаманця&#x20;

```bash
celestia-appd keys add $CELESTIA_WALLET --recover
#вводимо сід фразу 
```

Зберігаємо адрес валідатора-оператора  та адрес гаманця в `.bash_profile` як змінні та перечитуємо файл

{% code overflow="wrap" lineNumbers="true" %}

```bash
CELESTIA_ADDRESS=$(celestia-appd keys show $CELESTIA_WALLET -a)
VALIDATOR_OPERATOR_ADDRESS=$(celestia-appd keys show $CELESTIA_WALLET --bech val -a)
#перевіряємо
echo $CELESTIA_ADDRESS
echo $VALIDATOR_OPERATOR_ADDRESS
#записуємо змінні
echo 'export CELESTIA_ADDRESS='${CELESTIA_ADDRESS} >> $HOME/.bash_profile
echo 'export VALIDATOR_OPERATOR_ADDRESS='${VALIDATOR_OPERATOR_ADDRESS} >> $HOME/.bash_profile
#перечитуємо файл
source $HOME/.bash_profile
```

{% endcode %}

Можна перевірити баланс командою:

```bash
celestia-appd q bank balances $CELESTIA_ADDRESS
```

#### Cтворюємо адресу оркестратора

```bash
celestia-appd keys add ORCHESTRATOR_ADDRESS
```

{% hint style="danger" %}
Обов'язково збережіть сід фразу, щоб мати змогу відновити гаманець в майбутньому
{% endhint %}

Записуємо гаманець оркестратора як змінну.

{% code lineNumbers="true" %}

```bash
ORCHESTRATOR_ADDRESS=$(celestia-appd keys show ORCHESTRATOR_ADDRESS -a)
echo $ORCHESTRATOR_ADDRESS
echo 'export ORCHESTRATOR_ADDRESS='${ORCHESTRATOR_ADDRESS} >> $HOME/.bash_profile
source .bash_profile
```

{% endcode %}

#### Додаємо EVM гаманець з метамаску в змінні

```bash
echo "export EVM_ADDRESS=0x000000вашEфірнийГаманець00000" >> $HOME/.bash_profile
source .bash_profile
```

### Реєструємо валідатора

> Перед реєстрацією закраньте тестові токени на CELESTIA\_ADDRESS в Discord'і проєкту у вітці #mocha-faucet.&#x20;

Для реєстрації вводимо однією командою код наведений нижче

{% hint style="info" %}
Перенесіть спочатку кудись (наприклад в блокнот) відредагуйте, видаліть зайве, а потім вставляйте в термінал
{% endhint %}

{% code overflow="wrap" lineNumbers="true" %}

```bash
celestia-appd tx staking create-validator \
--amount=1000000utia \
--pubkey=$(celestia-appd tendermint show-validator) \
--moniker=$MONIKER \
--identity "8E9AC3EAD19FF326" \ #тут може бути ваш KEYBASE ID(аватар)(можете видалити цей рядок)
--website "https://nanny.ventures" \ #тут може бути ваш вебсайт. (можете видалити цей рядок)
--details "Nanny Ventures Team Node" \ #тут може бути ваш додатковий текст (можете видалити цей рядок)
--chain-id=$CHAIN_ID \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1000000 \
--from=$CELESTIA_WALLET \
--evm-address=$EVM_ADDRESS \
--orchestrator-address=$ORCHESTRATOR_ADDRESS \
--fees 1000utia \
--gas 900000
```

{% endcode %}

> Можливо доведеться почаклувати з комісією для того щоб пройшла транзакція. Я виставляв --fees 2500 і --gas 2500000. &#x20;

Перевіряйте транзакцію в експлорері <https://celestia.explorers.guru>

Перевірити з терміналу через декілька хвилин можна командою

```bash
celestia-appd q staking validator $CELESTIA_VALOPER
```

### Збереження файлу ключів

Необхідно завантажити та забекапити файл ключів який знаходиться тут: `$HOME/.celestia-app/config/priv_validator_key.json`

Команди для скачування з сервера можете [глянути в цій статті](https://medium.com/@maraboosko/використання-scp-в-linux-терміналі-3d54ff723335)


---

# 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://nodes-1.gitbook.io/celestia-mocha-testnet/vstanovlennya-i-nalashtuvannya-validatora.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.
