Desmos Node

Desmos Node

@CryptoWatermelon

Введение


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

  • минимальные: 2 CPU/4 RAM/40 HDD/OC/Ubuntu 20
  • рекомендованные: 4 CPU/8 RAM/40GB HDD/OC: Ubuntu 20

Арендовать можно на любом понравившемся сервисе. Лично я рекомендую воспользоваться услугами WebTropia или FirstVds.

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


Установка и запуск ноды


# Обновляем пакеты Linux до новой версии. 

$ sudo apt update

# Устанавливаем необходимые для работы пакеты: git tmux build-essential curl jq

$ sudo apt install git tmux build-essential curl jq --yes

# Устанавливаем GoLang.

# Скачиваем архив с расширением .tar, в котором находится код языка. Распаковываем архив. Устанавливаем зависимости, необходимые для нормальной работы Go.

$ wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz

$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz

$ echo 'export GOPATH="$HOME/go"' >> ~/.profile

$ echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile

$ echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile

$ echo 'export PATH="$PATH:/usr/local/go/bin"'>> ~/.profile

$ source ~/.profile

# Копируем папку с GitHub Desmo, содержащую исходный код ноды. Переходим в скопированную папку.

$ git clone https://github.com/desmos-labs/desmos.git && cd desmos

# С помощью системы управления версиями - git - переключаемся на нужную нам версию кода. На момент написания гайда актуальная версия <paste_version> - v0.16.0 Однако, разработчики могут выкатить код и обновить версию ноды. Поэтому перед установкой рекомендую проверить актуальную версию на GitHub https://github.com/desmos-labs/morpheus в файле README.md

$ git checkout tags/<paste_version>
# Компилируем код ноды.

$ make install

# Генирируем кошелёк. Устанавливаем <wallet_name> - имя ключа, нужно придумать самому. Рекомендую придумать что-нибудь простое и запоминающееся, поскольку это имя будет нужно нам в дальнейшем. Не забудьте записать полученные данные (адрес кошелька, мнемоническая фраза и др.).

$ echo 'export WALLET_NAME="<wallet_name>"' >> ~/.profile && source ~/.profile

# При создании кошелька необходимо будем придумать пароль. Обязательно запишите его.

$ desmos keys add $WALLET_NAME

# Инициализируем ноды. <node_name> - имя ноды. Имя может быть любым. Например, имя моей ноды - cryptowatermelon_node. <chain_id> - версия сети. На момент написания гайда актуальная версия <chain_id> - morpheus-apollo-1 Актуальную версию <chain_id> ищем на GitHub https://github.com/desmos-labs/morpheus

$ echo 'export NODE_NAME="<node_name>"' >> ~/.profile

$ echo 'export CHAIN_ID="<chain_id>"' >> ~/.profile

$ source ~/.profile

$ desmos init --chain-id $CHAIN_ID $NODE_NAME

# Скачиваем genesis файл. Не  забудьте указать ID сети.

$ curl https://raw.githubusercontent.com/desmos-labs/morpheus/master/<chain_id>/genesis.json > $HOME/.desmos/config/genesis.json
# Далее, с помощью редактора текста sed настраиваем файл конфига config.toml По умолчанию он расположен по следующему пути $HOME/.desmos/config/ , где $HOME - домашняя директория.

$ export seeds='"be3db0fe5ee7f764902dbcc75126a2e082cbf00c@seed-1.morpheus.desmos.network:26656,4659ab47eef540e99c3ee4009ecbe3fbf4e3eaff@seed-2.morpheus.desmos.network:26656,1d9cc23eedb2d812d30d99ed12d5c5f21ff40c23@seed-3.morpheus.desmos.network:26656"' && source ~/.profile

$ sed -i -e "s/^seeds *=.*/seeds = $seeds/" $HOME/.desmos/config/config.toml

$ export persistent_peers='"67dcef828fc2be3c3bcc19c9542d2b228bd7cff9@seed-4.morpheus.desmos.network:26656,fcf8207fb84a7238089bd0cd8db994e0af9016b6@seed-5.morpheus.desmos.network:26656"' && source ~/.profile

$ sed -i -e "s/^persistent_peers *=.*/persistent_peers = $persistent_peers/" $HOME/.desmos/config/config.toml

# Значение seeds и persistent_peers - пиры нод. Они могут меняться. Указанные выше являются актуальными на момент написания гайда. Рекомендую посмотреть актуальые пиры на GitHub https://github.com/desmos-labs/morpheus
$ sed -i -e "s/^enable *=.*/enable = true/" $HOME/.desmos/config/config.toml

# rpc_servers может меняться, читай примечание про пиры.

$ export rpc_servers='"seed-4.morpheus.desmos.network:26657, seed-5.morpheus.desmos.network:26657"' && source ~/.profile

$ sed -i -e "s/^rpc_servers *=.*/rpc_servers = $rpc_servers/" $HOME/.desmos/config/config.toml

# Для дальнейшей настройки конфига необходимо получить высоту последнего блока, а также его хэш. 

$ curl -s http://seed-4.morpheus.desmos.network:26657/commit | jq "{height: .result.signed_header.header.height}" # получаем высоту последнего блока

#Получаем хэш последнего блока. Заменяем <height> и <hash> на значение, полученное при помощи предыдущий команды.

$ curl -s http://seed-4.morpheus.desmos.network:26657/commit?height=<block-height> | jq "{height: .result.signed_header.header.height, hash: .result.signed_header.commit.block_id.hash}" 

$ sed -i -e "s/^trust_height *=.*/trust_height = <height>/" $HOME/.desmos/config/config.toml

$ sed -i -e 's/^trust_hash *=.*/trust_hash = "<hash>"/' $HOME/.desmos/config/config.toml
# Открываем порты.

# Замените <port> на порт, через который вы подключались к серверу. Посмотреть информацию о порте можно в настройках сессии MobaXterm. Стандартный порт - 22

$ sudo ufw allow <port>/tcp

$ sudo ufw allow 26656/tcp

$ sudo ufw allow 26657/tcp

$ sudo ufw allow 9090/tcp

$ sudo ufw allow 1317/tcp

# Включаем фаервол.

$ sudo ufw enable

# Создаём сессию tmux и запускаем ноду. 

$ tmux new -s desmos

$ desmos start

# Сочетанием клавиш Ctrl + B -> D сворачиваем сессию. Открыть её снова можно командой  tmux attach -t desmos

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

$ desmos status 2>&1 | jq .SyncInfo

# Когда значение catching_up будет равно false, значит нода синхронизированна. Только после этого переходите к следующему шагу.

Создание валидатора


# Для начала берём ранее сгенерированные адрес кошелька и идём в Discord https://discord.gg/kWPzn6PuzM получать тестовые токены с помощью команды !send <address> Если вы не помните адрес, то узнать его можно следующей командой:

$ desmos keys show $WALLET_NAME -a

# Создаём валидатора.

$ desmos tx staking create-validator \
--amount=1990000udaric \
--pubkey=$(desmos tendermint show-validator) \
--chain-id=$CHAIN_ID \
--moniker=$NODE_NAME \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--gas="auto" \
--gas-adjustment="1.2" \
--gas-prices="0.025udaric" \
--from=$WALLET_NAME

# Формируем ссылку на валидатора в эксплорере.

$ echo 'https://morpheus.desmos.network/validator/'`desmos status 2>&1 | jq .ValidatorInfo.Address | sed 's/"//g'`LET_NAME^C

Полезные ресурсы:

Report Page