ARCHIVE
May 3, 2022

DWS

Web Discord Github

Testnet details

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

🚀 Почему ДВС?
Мы пытаемся объединить под одной крышей такие децентрализованные технологии, как Akash, SIA, TON, Mysterium VPN, Sentinel и т. д., и предложить конечному пользователю понятный способ создания, управления и проверки облачной инфраструктуры
Никаких регистраций, никаких электронных писем, никаких смс, никаких доверенных третьих лиц. Вы контролируете свои личные ключи шифрования и владеете своими данными. Ни одна сторонняя компания или третье лицо не может получить доступ к вашим файлам или контролировать их, в отличие от традиционных поставщиков облачных хранилищ

Подготовка сервера

Обновляем репозитории

sudo apt update && sudo apt upgrade -y

Устанавливаем необходимые утилиты

sudo apt install curl build-essential git wget jq make gcc tmux nvme-cli -y

Устанавливаем Go ОДНОЙ КОМАНДОЙ

wget https://golang.org/dl/go1.18.1.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz && \
rm -v go1.18.1.linux-amd64.tar.gz && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \
source ~/.bash_profile && \
go version

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

ВАЖНО — в командах ниже все, что в <> меняем на свое значение и убираем сами <>

Устанавливаем бинарники

git clone https://github.com/deweb-services/deweb.git && cd deweb
git checkout v0.3.1
make install

dewebd version --long | head
# "0.3.1"
# commit: 05a3111414ae9b510672925166b727371b669246

Инициализируем ноду, чтобы создать необходимые файлы конфигурации

dewebd init <name_node> --chain-id deweb-testnet-sirius

Cоздаем или восстанавливаем кошелек и сохраняем вывод

# создать кошелек
dewebd keys add <name_wallet>

# восстановить кошелек (после команды вставить seed)
dewebd keys add <name_wallet> --recover

Скачиваем Genesis

wget -O $HOME/.deweb/config/genesis.json "https://raw.githubusercontent.com/deweb-services/deweb/main/genesis.json"

# Проверим генезис
sha256sum ~/.deweb/config/genesis.json
# 5316dc5abf1bc46813b673e920cb6faac06850c4996da28d343120ee0d713ab9

Проверяем, что состояние валидатора на начальном этапе

cd && cat .deweb/data/priv_validator_state.json
{
  "height": "0",
  "round": 0,
  "step": 0
}

# если нет, то выполняем команду
dewebd tendermint unsafe-reset-all --home $HOME/.deweb/

Настраиваем конфигурацию ноды

Правим конфиг, благодаря чему мы можем больше не использовать флаг chain-idдля каждой команды CLI $HOME/.deweb/config/client.toml

dewebd config chain-id deweb-testnet-sirius

Настраиваем минимальную цену за газ $HOME/.deweb/config/app.toml

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001udws\"/;" ~/.deweb/config/app.toml

Настраиваем прунинг одной командой $HOME/.deweb/config/app.toml

pruning="custom" && \
pruning_keep_recent="100" && \
pruning_keep_every="0" && \
pruning_interval="50" && \
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.deweb/config/app.toml && \
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.deweb/config/app.toml && \
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.deweb/config/app.toml && \
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.deweb/config/app.toml

Добавляем seed/peers $HOME/.deweb/config/config.toml

external_address=$(wget -qO- eth0.me)

peers=""
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.deweb/config/config.toml

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

(ОПЦИОНАЛЬНО) Выкл индексацию $HOME/.deweb/config/config.toml

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

(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты $HOME/.deweb/config/app.toml

# По умолчанию снэпшоты отключены "snapshot-interval=1000"
# Важно: если устанавливаются снэпшоты, то snapshot-interval должен быть кратен pruning-keep-every

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

sudo tee /etc/systemd/system/dewebd.service > /dev/null <<EOF
[Unit]
Description=deweb
After=network-online.target

[Service]
User=$USER
ExecStart=$(which dewebd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[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

Если после старта нода долго не может подцепиться к пирам, то ищем новые пиры или просим addrbook.json в дискорд

# стопаем ноду, удаляем адресную книгу и сбрасываем данные
sudo systemctl stop dewebd
rm $HOME/.deweb/config/addrbook.json
dewebd tendermint unsafe-reset-all --home $HOME/.deweb/

# перезагружаем ноду
sudo systemctl restart dewebd && journalctl -u dewebd -f -o cat

После синхронизации идем в дискорд и в канале #faucet запрашиваем монетки

Кран сильно не дергайте, количество монет ограничено

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

dewebd tx staking create-validator \
--chain-id deweb-testnet-sirius \
--commission-rate=0.05 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.1 \
--min-self-delegation="1000000" \
--amount=1000000udws \
--pubkey $(dewebd tendermint show-validator) \
--moniker "<name_moniker>" \
--from=<name_wallet> \
--gas="auto" \
--fees 555udws

Не забываем сохранить priv_validator_key.json

Подробнее о создании/редактировании валидатора можно почитать здесь

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

Проверить блоки

dewebd status 2>&1 | jq ."SyncInfo"."latest_block_height"

Проверить логи

sudo journalctl -u dewebd -f -o cat
sudo journalctl -fn 100 -u dewebd

Статус

curl localhost:26657/status

Проверить баланс

dewebd q bank balances <deweb1...>

Проверить валидатора

dewebd query staking validator <dewebvaloper1...>
dewebd query staking validators --limit 1000000 -o json | jq '.validators[] | select(.description.moniker=="<name_moniker>")' | jq

Собрать комиссионные + реварды

dewebd tx distribution withdraw-rewards <dewebvaloper1...> --from <name_wallet> --fees 555udws --commission -y

Заделегировать себе в стейк еще (так отправляется 1 монетa)

dewebd tx staking delegate <dewebvaloper1...> 1000000udws --from <name_wallet> --fees 555udws -y

Unbond

dewebd tx staking unbond <dewebvaloper1...> 10000000udws --from <name_wallet> --fees 555udws -y

Отправить монеты на другой адрес

dewebd tx bank send <name_wallet> <deweb1...> 10000000udws --fees 555udws -y

Выбраться из тюрьмы

dewebd tx slashing unjail --from <name_wallet>

Работа с кошельками

# вывести список кошельков
dewebd keys list
# показать ключ аккаунта
dewebd keys show <name_wallet> --bech acc
# показать ключ валидатора
dewebd keys show <name_wallet> --bech val
# показать ключ консенсуса
dewebd keys show <name_wallet> --bech cons
# запрос учетной записи
dewebd q auth account $(dewebd keys show <name_wallet> -a) -o text

Узнать транзакцию создания валидатора (заменить свой valoper_address)

dewebd query txs --events='create_validator.validator=<your_valoper_address>' -o=json | jq .txs[0].txhash -r

Проверить сколько блоков пропущено валидатором и с какого блока актив

dewebd q slashing signing-info $(dewebd tendermint show-validator)

Параметры сети

dewebd q staking params

Удалить

systemctl stop dewebd && \
systemctl disable dewebd && \
rm /etc/systemd/system/dewebd.service && \
sudo systemctl daemon-reload && \
cd $HOME && \
rm -rf .deweb && \
rm -rf deweb && \
rm -rf $(which dewebd)

Проголосовать за предложение

dewebd tx gov vote 1 yes --from <name_wallet> --fees 555udws

Внести депозит в предложение

dewebd tx gov deposit 1 5000000udws --from <name_wallet> --fees 555udws