September 18, 2022

Гайд по установке ноды DWS (Decentralized Web Services)

DWS (Decentralized Web Services - Децентрализованные веб-сервисы) - это платформа управления децентрализованной облачной инфраструктурой. DWS будет заботиться о здоровье всех децентрализованных сервисов и плавно восстановит любой сервис, который выйдет из строя. DWS будет контролировать расходование средств и уведомлять вас в Slack/Telegram/Jami о любых необходимых платежах. Также DWS будет иметь красивую приборную панель, показывающую все балансы, расходы и инциденты, происходящие с используемой вами облачной инфраструктурой.

DWS предлагает полный набор инфраструктурных и прикладных услуг, которые позволяют запускать в децентрализованном облаке практически все: от корпоративных приложений и проектов big data до социальных игр и мобильных приложений.

Запуск маиннета DWS планируется на 4 квартал 2022 года:

Сейчас есть возможность стать валидатором тестовой сети, а в октябре - ноябре админы начнут выбирать валидаторов для маиннета и предлагать пройти KYC.

Подготовка

Рекомендуемые требования:

Арендовать сервер можно на Hetzner.

Благодарим канал https://t.me/mmsnodes и сайт https://nodejumper.io/ за их инструкции, мы их отредактировали и написали для вас обновлённый гайд.

Обновляем сервер:

sudo apt update
sudo apt upgrade

Скачиваем дополнительные пакеты:

apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

Устанавливаем GO (лучше вставлять команды по одной строчке):

ver="1.19.1" 

wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" 

sudo rm -rf /usr/local/go 

sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" 

rm "go$ver.linux-amd64.tar.gz" 
 
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile 
 
source $HOME/.bash_profile

Проверяем версию GO:

go version

В выводе должно быть 1.19.1

Установка ноды

Загружаем бинарный файл:

cd $HOME 
git clone https://github.com/deweb-services/deweb.git 
cd deweb 
git checkout v0.3.1 
make build

Перемещаем бинарник в рабочий каталог:

sudo mv build/dewebd /usr/local/bin/ 
cd $HOME

Проверяем версию бинарника:

dewebd version

В выводе должно быть:

0.3.1

Создаём переменные (вместо ВАШЕ_ИМЯ вписываем свои значения в кавычках, в переменной CHAIN ничего не меняем):

MONIKER="ВАШЕ_ИМЯ" 
WALLET_NAME="ВАШЕ_ИМЯ"
CHAIN="deweb-testnet-sirius" 

Добавляем переменные в баш:

echo 'export MONIKER='${MONIKER} >> $HOME/.bash_profile 
echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bash_profile 
echo 'export CHAIN='${CHAIN} >> $HOME/.bash_profile 
source $HOME/.bash_profile

Инициализируем ноду:

dewebd init $MONIKER --chain-id $CHAIN

Устанавливаем параметры сети:

dewebd config chain-id $CHAIN

Скачиваем генезис:

cd $HOME 
curl -s https://raw.githubusercontent.com/deweb-services/deweb/main/genesis.json > ~/.deweb/config/genesis.json

Настраиваем прунинг (custom/100/0/10):

sed -i 's|pruning = "default"|pruning = "custom"|g' $HOME/.deweb/config/app.toml
sed -i 's|pruning-keep-recent = "0"|pruning-keep-recent = "100"|g' $HOME/.deweb/config/app.toml
sed -i 's|pruning-interval = "0"|pruning-interval = "10"|g' $HOME/.deweb/config/app.toml

Устанавливаем минимальную цену за газ:

sed -E -i 's/minimum-gas-prices = \".*\"/minimum-gas-prices = \"0.001udws\"/' $HOME/.deweb/config/app.toml

Выключаем индексер (по желанию)

indexer="null" && sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.deweb/config/config.toml

Добавляем сиды:

sed -E -i 's/seeds = \".*\"/seeds = \"[email protected]:26656\"/' $HOME/.deweb/config/config.toml

Добавляем пиры для более быстрой синхронизации:

peers="c5b45045b0555c439d94f4d81a5ec4d1a578f98c@dws-testnet.nodejumper.io:27656,[email protected]:29656,[email protected]:27656,[email protected]:46656,[email protected]:28656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:34656"
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.deweb/config/config.toml

Создаём сервисный файл:

sudo tee /etc/systemd/system/dewebd.service > /dev/null << EOF
[Unit]
Description=DWS Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which dewebd) start
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF

Запускаем сервис:

sudo systemctl daemon-reload 

sudo systemctl enable dewebd 

sudo systemctl restart dewebd

Смотрим логи и ждём, когда нода синхронизируется:

sudo journalctl -u dewebd -f -o cat

Выход из логов - CTRL+C

Проверить статус синхронизации можно командой

curl localhost:26657/status

Если в поле catching_up значение "false", то нода синхронизирована, можно переходить к следующему пункту.

Если нода долго не синхронизируется, то можно добавить Address Book:

curl -s https://snapshots1-testnet.nodejumper.io/dws-testnet/addrbook.json > $HOME/.deweb/config/addrbook.json

Посмотреть текущий блок можно ТУТ

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

Создаём кошелёк (или восстанавливаем) после того, как нода синхронизировалась:

создать новый кошелёк:

dewebd keys add $WALLET_NAME

восстановить кошелёк (после ввода команды вставьте сид-фразу)

dewebd keys add $WALLET_NAME --recover

Обязательно сохраняем мнемонику в надёжном месте и никому её не показываем.
Также в выводе будет адрес вашего кошелька (deweb1...). Сохраните его, он нам скоро пригодится.

Создаём переменную с адресом кошелька:

WALLET_ADDRESS=$(dewebd keys show $WALLET_NAME -a)

Добавляем её в баш:

echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile source $HOME/.bash_profile

Теперь надо запросить тестовые монеты на кошелёк. Переходим в Discord в ветку #faucet и вставляем команду (вместо АДРЕС_КОШЕЛЬКА вставляем свой адрес deweb1...):

$request АДРЕС_КОШЕЛЬКА sirius

Проверяем баланс кошелька в командной строке:

dewebd query bank balances $WALLET_ADDRESS

Создаём валидатора, когда баланс пополнился (amount  можете вписать свою в зависимости от суммы на балансе):

dewebd tx staking create-validator \
--amount=900000udws \
--pubkey=$(dewebd tendermint show-validator) \
--moniker=$MONIKER \
--chain-id=$CHAIN \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.05 \
--min-self-delegation=1 \
--fees=200udws \
--from=$WALLET_NAME \
-y

Создаём переменную с адресом валидатора:

VALOPER=$(dewebd keys show $WALLET_ADDRESS --bech val -a)

Добавляем её в баш:

echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile

Проверить статус валидатора можно командой:

dewebd query staking validator $VALOPER

Поздравляю, вы установили ноду!
Найти себя в списке валидаторов можно в эксплорере 1 или эксплорере 2.

Полезные команды:

Посмотреть логи:

sudo journalctl -u dewebd -f -o cat

Выйти из тюрьмы:

dewebd tx slashing unjail --from $WALLET_NAME --chain-id $CHAIN

Удалить ноду:

sudo systemctl stop dewebd 
sudo systemctl disable dewebd 
cd $HOME 
rm /etc/systemd/system/dewebd 
rm /usr/local/bin/dewebd 
rm -r deweb/ 
rm -r .deweb/

Спасибо за внимание!

Ссылка на TG канал: https://t.me/cryptonik_space