> For the complete documentation index, see [llms.txt](https://nodes-1.gitbook.io/celestia-mocha-testnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nodes-1.gitbook.io/celestia-mocha-testnet/vstanovlennya-i-nalashtuvannya-validatora.md).

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

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

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

{% 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)
