> For the complete documentation index, see [llms.txt](https://minanode.staketab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://minanode.staketab.com/russian/nastroika-snark-stoppera.md).

# Настройка Снарк Стоппера

## Описание

Скрипт будет полезен тем, кто запускает Производителя блоков и Снарк Воркера на одном сервере. Воркер использует все ваши ядра процессора на 100%, что негативно сказывается на производителе блоков. Скрипт позволяет остановить Снарк Воркера за 3 минуты до производства блока и включит его опять через 10 минут.

{% hint style="info" %}
Данный скрипт создан пользователем @whataday2day#1271\
<https://github.com/c29r3/mina-snark-stopper>
{% endhint %}

## Подготовка

### Установка JSON

```
sudo apt install jq -y
```

### Устанавливаем пакет git, если он не установлен на сервере:

```
yes | sudo apt install git
```

{% hint style="info" %}
Ваш snark worker должен быть ЗАПУЩЕН.
{% endhint %}

Проверьте файл конфигурации. Есть несколько вариантов, которые вы можете переназначить.

Разблокируем приватную сеть:

```
sudo iptables -D OUTPUT -d 172.16.0.0/12 -j DROP
```

## 1. Установка без Докера:

{% hint style="info" %}
Запускать нужно в новой сессии TMUX
{% endhint %}

```
sudo apt-get update \
&& sudo apt-get install python3-venv tmux git -y \
&& git clone https://github.com/c29r3/mina-snark-stopper.git \
&& cd mina-snark-stopper \
&& python3 -m venv venv \
&& source ./venv/bin/activate \
&& pip3 install -r requirements.txt
```

Теперь нужно добавить в конфиг стоппера ваш публичный ключ и комиссию Воркера.\
Открываем конфиг командой:

```
nano $HOME/mina-snark-stopper/config.yml
```

В строке `WORKER_PUB_KEY: YOUR_PUBLIC_KEY` измените `YOUR_PUBLIC_KEY` на `$MINA_PUBLIC_KEY`\
В строке `WORKER_FEE: 1` замените значение комиссии например с 1 на 0.25

### 1.1 Запуск

```
tmux new -s snark-stopper -d venv/bin/python3 snark-stopper.py
```

Просмотр логов:

```
tmux attach -t snark-stopper
```

## 2. Установка с Докером:

Скачиваем файл с конфигом:

```
curl -s https://raw.githubusercontent.com/c29r3/mina-snark-stopper/master/config.yml > config.yml; \
touch snark_stopper.log
```

Теперь нужно добавить в конфиг стоппера ваш публичный ключ и комиссию Воркера.\
Открываем конфиг командой:

```
nano $HOME/config.yml
```

В строке `WORKER_PUB_KEY: YOUR_PUBLIC_KEY` измените `YOUR_PUBLIC_KEY` на `$MINA_PUBLIC_KEY`\
В строке `WORKER_FEE: 1` замените значение комиссии например с 1 на 0.25

Запускаем контейнер:

```
touch snark_stopper.log; \
chmod 666 snark_stopper.log; \
sudo docker run -d \
--volume $(pwd)/config.yml:/mina/config.yml \
--volume $(pwd)/snark_stopper.log:/mina/snark_stopper.log \
--net=host \
--restart always \
--name snark-stopper \
c29r3/snark-stopper
```

Просмотр логов:

```
sudo docker logs -f snark-stopper
```

### 3. Решения ошибок

Если снарк-стоппер не может подключиться к порту `3085`:

Нужно проверить доступность порта:

```
nc -t -vv localhost 3085
```

Результат должен быть примерно таким:\
`Connection to localhost 3085 port [tcp/*] succeeded!`

Если соединение зависает, то возможны следующие варианты:

* Доступ к порту `3085` заблокирован через `ufw\iptables`
* Вы не добавили флаг контейнера докеров `-p 127.0.0.1:3085:3085`
* Узел еще не синхронизирован. По этой причине стоппер не может подключиться

Порт отвечает, но стоппер по-прежнему не может подключиться:

```
sudo iptables -D OUTPUT -d 172.16.0.0/12 -j DROP
```

это из-за блокировки частных подсетей, которые использует докер.

#### Обновить образ докера

После выполнения приведенной ниже команды перейдите к шагу 2.

```
sudo docker rm -f snark-stopper \
&& sudo docker pull c29r3/snark-stopper
```

### 4. Обновление

Удаляем файл с конфигом и контейнер и скачиваем новый образ:

```
sudo docker rm -f snark-stopper; \
curl -s https://raw.githubusercontent.com/c29r3/mina-snark-stopper/master/config.yml > config.yml; \
sudo docker pull c29r3/snark-stopper
```

Далее продолжаем с пункта 1 или 2.

### 5. Удаление

```
rm -rf mina-snark-stopper \
&& sudo docker rm -f snark-stopper \
&& sudo docker system prune -af
```
