# Узел

Полные узлы — это общие инструкции по присоединению к основной сети Gluon после создания сети.

## Обновления цепи <a href="#chain-upgrades" id="chain-upgrades"></a>

Для оптимизации обновлений цепочки и минимизации простоев вы можете настроить [Cosmovisor](https://docs.cosmos.network/main/build/tooling/cosmovisor) для управления вашим узлом.

Следуйте [инструкциям по использованию Cosmovisor](https://app.gitbook.com/o/bCIY9H0ipM7G01Bxmgsu/s/IGeWpCPYo9e3ugxWZCjR/~/changes/1/stroit/tipy-uzlov/konsensus/nastroika-kosmovizora)

Для автоматизации обновлений в цепочке установите следующие параметры.

```
DAEMON_ALLOW_DOWNLOAD_BINARIES=true
```

### Резервные копии <a href="#backups" id="backups"></a>

Если вы используете последнюю версию Cosmovisor, то конфигурация по умолчанию заключается в том, что резервная копия состояния будет создана перед применением обновлений. Это можно отключить с помощью [флагов среды](https://docs.cosmos.network/main/build/tooling/cosmovisor#command-line-arguments-and-environment-variables) .

### Оповещение и мониторинг <a href="#alerting-and-monitoring" id="alerting-and-monitoring"></a>

Оповещение и мониторинг также желательны — вам предлагается изучить решения и найти то, которое подходит для вашей установки. Prometheus доступен из коробки, и существует множество инструментов с открытым исходным кодом.

### Требования к оборудованию <a href="#hardware-requirements" id="hardware-requirements"></a>

Для запуска узла-валидатора рекомендуются следующие минимальные требования к оборудованию:

* Память: 32 ГБ ОЗУ (или эквивалентный файл подкачки)
* Процессор: 8 ядер (4 физических ядра) x86\_64
* Диск: SSD-накопитель емкостью 1 ТБ (подробности см. ниже)
* Пропускная способность: 1 Гбит/с для загрузки/1 Гбит/с для загрузки

Архивный узел (отсечение = «ничего») должен иметь не менее 64 ГБ выделенной памяти.

* Архивный узел (удаление = «ничего») растет со скоростью \~100 ГБ в месяц. Текущий общий объем используемого диска составляет 6 ТБ, поэтому потребуется диск большего размера.
* Полный узел обрезки (обрезка = «все») растет со скоростью \~5 ГБ в месяц.
* Узел обрезки по умолчанию (обрезка = "по умолчанию") растет со скоростью \~25 ГБ в месяц.

### Зависимости <a href="#dependencies" id="dependencies"></a>

Учебник сделан на Ubuntu 22.04 (LTS). Следуйте [руководству по окружению](https://github.com/SunriseLayer/gitbook/blob/main/node/resources/enviromant.md)

### Запустить узел <a href="#run-the-node" id="run-the-node"></a>

#### Установить <a href="#install" id="install"></a>

```
git clone https://github.com/UnUniFi/chain.git
cd chain
git checkout $TAG
make install
```

### Инициализировать <a href="#initialize" id="initialize"></a>

Set `chain-id`& `moniker`. `moniker`— это просто имя вашего узла.

```
CHAIN_ID=gluon-1
MONIKER="node-name"
gluond init "$MONIKER" --chain-id $CHAIN_ID
```

Это приведет к созданию следующих файлов в`~/.gluon/config/`

* `genesis.json`
* `node_key.json`
* `priv_validator_key.json`

### Загрузить файл генезиса <a href="#download-the-genesis-file" id="download-the-genesis-file"></a>

Для основной сети:

```
rm ~/.gluon/config/genesis.json
curl -L https://raw.githubusercontent.com/UnUniFi/network/main/launch/ununifi-beta-v1/genesis.json -o ~/.gluon/config/genesis.json
```

Для тестовой сети:

```
rm ~/.gluon/config/genesis.json
curl -L https://raw.githubusercontent.com/UnUniFi/network/main/launch/ununifi-test-v1/genesis.json -o ~/.gluon/config/genesis.json
```

## Вариант: Установить постоянные пиры <a href="#option-set-persistent-peers" id="option-set-persistent-peers"></a>

Постоянные пиры потребуются, чтобы сообщить вашему узлу, где подключиться к другим узлам и присоединиться к сети. Чтобы получить пиры для выбранного `chain-id`:

```
# Set the base repo URL for mainnet & retrieve peers
echo "export PEERS=\"fa38d2a851de43d34d9602956cd907eb3942ae89@a.ununifi.cauchye.net:26656,404ea79bd31b1734caacced7a057d78ae5b60348@b.ununifi.cauchye.net:26656,1357ac5cd92b215b05253b25d78cf485dd899d55@[2600:1f1c:534:8f02:7bf:6b31:3702:2265]:26656,25006d6b85daeac2234bcb94dafaa73861b43ee3@[2600:1f1c:534:8f02:a407:b1c6:e8f5:94b]:26656,caf792ed396dd7e737574a030ae8eabe19ecdf5c@[2600:1f1c:534:8f02:b0a4:dbf6:e50b:d64e]:26656,796c62bb2af411c140cf24ddc409dff76d9d61cf@[2600:1f1c:534:8f02:ca0e:14e9:8e60:989e]:26656,cea8d05b6e01188cf6481c55b7d1bc2f31de0eed@[2600:1f1c:534:8f02:ba43:1f69:e23a:df6b]:26656\"" >> ~/.bash_profile
source .bash_profile
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" ~/.gluon/config/config.toml
```

### Установить минимальные цены на газ <a href="#set-minimum-gas-prices" id="set-minimum-gas-prices"></a>

Для узлов RPC и узлов Validator мы рекомендуем установить следующие минимальные цены на газ. Поскольку мы являемся цепочкой wasm без разрешения, эта настройка поможет защититься от спама по контрактам и потенциальных векторов атак по контрактам wasm.

В `$HOME/.gluon/config/app.toml`, установить минимальные цены на газ:

```

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025uglu\"/" $HOME/.gluon/config/app.toml

```

### Вариант: Дополнительные настройки <a href="#option-additional-settings" id="option-additional-settings"></a>

При необходимости отредактируйте файлы конфигурации.`~/.gluon/config/app.toml`

* Enable определяет, следует ли включить сервер API.

```
sed -i '/\[api\]/,+3 s/enable = false/enable = true/' ~/.gluon/config/app.toml;
```

EnableUnsafeCORS определяет, следует ли включать CORS (небезопасно — используйте на свой страх и риск).

```
sed -i 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/' ~/.gluon/config/app.toml;
```

**Доступ к истории**

Если вы хотите запросить историческое состояние — например, вы можете захотеть узнать баланс кошелька на заданной высоте в прошлом — вам следует запустить архивный узел с `pruning = "nothing"`in `app.toml`. Обратите внимание, что эта конфигурация является ресурсоемкой и потребует значительного хранилища:

```
pruning = "nothing"
```

Если вы хотите сэкономить на хранилище, рассмотрите возможность использования `pruning = "everything"`app.toml для удаления всего.

```
pruning = "everything"
```

### Создать (или восстановить) локальную пару ключей <a href="#create-or-restore-a-local-key-pair" id="create-or-restore-a-local-key-pair"></a>

Создайте новую пару ключей или восстановите существующий кошелек для вашего валидатора:

```
# Create new keypair
gluond keys add <your-key>
# Restore existing gluon wallet with mnemonic seed phrase.
# You will be prompted to enter mnemonic seed.
gluond keys add <your-key> --recover
# Query the keystore for your public address
gluond keys show <your-key> -a
```

### Получите токены GLU <a href="#get-some-glu-tokens" id="get-some-glu-tokens"></a>

Вам понадобится несколько токенов GLU для привязки к вашему валидатору. Чтобы быть в активном наборе, вам нужно будет иметь достаточно токенов.

### Запустить узел консенсуса <a href="#start-the-consensus-node" id="start-the-consensus-node"></a>

Следуйте инструкциям по настройке Cosmovisor и запуску узла.

{% hint style="info" %}
Использование cosmovisor совершенно необязательно. Если вы решите не использовать cosmovisor, вам нужно будет обязательно посетить обновления сети, чтобы убедиться, что ваш валидатор не простаивает и не попадает в тюрьму
{% endhint %}

Если вы не используете Cosmovisor, выполните следующее:

```
gluond start
```

### Синхронизация узла <a href="#syncing-the-node" id="syncing-the-node"></a>

После запуска `gluond`демона цепочка начнет синхронизироваться с сетью. Время синхронизации с сетью будет зависеть от ваших настроек и текущего размера блокчейна, но может занять очень много времени. Чтобы запросить статус вашего узла:

```
# Query via the RPC (default port: 26657)
curl http://localhost:26657/status | jq .result.sync_info.catching_up
```

Возврат этой команды `true`означает, что ваш узел все еще догоняет. В противном случае ваш узел догнал текущий блок сети, и вы можете смело переходить к обновлению до узла-валидатора.

Если вы хотите сократить время ожидания последнего блока, рассмотрите возможность использования снимков с других узлов.

* [\
  NodeStake](https://nodestake.top/ununifi)
* [NodeJumper](https://app.nodejumper.io/ununifi/sync)
* [Nodeist](https://nodeist.net/Ununifi/)
* [genznodes](https://genznodes.dev/services/)

Если вы хотите наверстать упущенное с нулевой высоты, вам придется повышать уровень `gluond`на каждой новой высоте.
