Ended Events
July 12, 2021

Stratos (Full-node) /// v6.1

Устанавливаем ноду Stratos Full-node для участия в tropos-1.

Если вы не знаете, что такое нода — читаем статью.
Если вы не знаете, где арендовать сервер для ноды — читаем статью.
Если вы не знаете, как подключиться к серверу — читаем статью.
Если вы всё знаете — открываем MobaXterm и создаём сессию.

Содержание

Stratos - новое поколение децентрализованной сети, обеспечивающее масштабируемые и надежные базы данных и вычислительную сеть.

Текущая фаза тестнета является стимулируемой (оплачиваемой).

Подробнее: https://github.com/stratosnet/sds/wiki/Tropos-Incentive-Testnet.


Medium | Docs | GitHub | WebSite | Twitter | Discord | Telegram | RU_Chat

Содержание

Официальные требования: 4 CPU x 16 GB RAM x 2TB SSD - Ubuntu 18.04+.

Субъективные наблюдения: 2 CPU x 4 GB RAM x 500 GB SSD - Ubuntu 20.04.

Содержание

Немного подготовим сервер.

# обновляем 'базу данных', обновляем дистрибутив
sudo apt-get update && sudo apt-get upgrade -y
# скачиваем необходимые зависимости
sudo apt-get install git curl build-essential gcc jq snapd --yes

Скачиваем необходимые файлы.

# создаём папку для 'stratos', скачиваем файлы ноды одной командой
mkdir $HOME/stratos; cd $HOME/stratos; \
wget https://github.com/stratosnet/stratos-chain/releases/download/v0.6.1/stchaincli && \
wget https://github.com/stratosnet/stratos-chain/releases/download/v0.6.1/stchaind
# выдаём права на исполнение и переносим к другим исполняемым файлам
chmod +x * && mv * /usr/bin/ && cd
# проверяем версию
stchaincli version && stchaind version

Если всё прошло успешно, тогда переходим к инициализации ноды.

Первым делом добавим наш никнейм, который будет в дальнейшем использоваться в качестве названия кошелька, в систему, как переменную.

Замените условную переменную <nickname> на желаемый никнейм, раскрывая кавычки.

# например, "export NICKNAME="cyberomanov"" 
echo "export NICKNAME="<nickname>"" >> ~/.bash_profile
# чтобы переменная загрузилась, необходимо перезагрузить '.bash_profile' 
source ~/.bash_profile
# проверим значение переменной, выведя её на экран
echo $NICKNAME

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

stchaind init $NICKNAME
# удаляем старые файлы генезиса и конфига, скачиваем новые одной командой
rm $HOME/.stchaind/config/genesis*; \
wget -O $HOME/.stchaind/config/genesis.json https://raw.githubusercontent.com/stratosnet/stratos-chain-testnet/main/genesis.json; \
wget -O $HOME/.stchaind/config/config.toml https://raw.githubusercontent.com/stratosnet/stratos-chain-testnet/main/config.toml
# пробуем добавить пользовательские пиры одной командой
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \
\"62abe9adad2c079423cee48d697b94568d0da0b0@143.198.136.75:26656,\
d12cd591f7062aa11bf94e79578647e2cac26b86@18.178.110.255:26656,\
d12cd591f7062aa11bf94e79578647e2cac26b86@18.178.110.255:26656\"/" \
$HOME/.stchaind/config/config.toml
# настраиваем прунинг одной командой
pruning="custom" && \
pruning_keep_recent="50" && \
pruning_keep_every="1000" && \
pruning_interval="30" && \
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.stchaind/config/app.toml && \
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.stchaind/config/app.toml && \
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.stchaind/config/app.toml && \
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.stchaind/config/app.toml
# создаём файл сервиса для запуска ноды
sudo tee <<EOF >/dev/null /etc/systemd/system/stratosd.service
[Unit]
Description=Stratos Chain Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which stchaind) start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
# включаем сервис 'stratosd' одной командой
sudo systemctl daemon-reload; \
sudo systemctl enable stratosd; \
sudo systemctl restart stratosd
# проверяем логи
sudo journalctl -u stratosd -f -o cat

Ждём, пока нода найдёт рабочие пиры и начнёт синхронизацию.

Скорее всего, вам придётся попросить у товарищей в чате addrbook.json, если нода не сможет найти пиры сама.

# получаем высоту блоков нашей ноды
stchaincli status 2>&1 \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
| jq ."sync_info"."latest_block_height"
# получаем статус синхронизации ноды
stchaincli status 2>&1 \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
| jq ."sync_info"."catching_up"

# 'true' - нода синхронизируется, 'false' - нода синхронизирована
Содержание
# выполняем команду создания тестового кошелька
stchaincli keys add $NICKNAME --keyring-backend=test
# либо восстанавливаем старый по мнемонике
stchaincli keys add $NICKNAME --keyring-backend=test --recover

Не забываем записать мнемонику - это единственный способ восстановить кошелёк.

Содержание

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

Если вы сделали бэкап ключей, как я просил - можете скопировать адрес оттуда.

Для остальных выполняем команду:

stchaincli keys list --keyring-backend=test

Копируем адрес и выполняем команду запроса тестовых токенов с крана:

Замените условную переменную <address> на stratos-адрес, раскрывая кавычки.

# запрашиваем токены на адрес
curl -X POST https://faucet-tropos.thestratos.org/faucet/<address>

Посмотреть баланс из терминала можно только после полной синхронизации ноды:

Замените условную переменную <address> на stratos-адрес, раскрывая кавычки.

# проверяем баланс из командной строки
stchaincli query account <address> \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
Содержание

Отправляем транзакцию создания валидатора после полной синхронизации:

Можно указать сайт, identity, details, если есть что указывать.

Если нет, можно оставить пустые строки.

stchaincli tx staking create-validator \
--amount="90000000000ustos" \
--pubkey=$(stchaind tendermint show-validator) \
--moniker=$NICKNAME \
--website="" \
--identity="" \
--details="" \
--chain-id=tropos-1 \
--commission-max-change-rate="0.1" \
--commission-max-rate="0.5" \
--commission-rate="0.1" \
--min-self-delegation="1" \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
--gas="auto" \
--gas-adjustment=1.5 \
--gas-prices="0.5ustos" \
--keyring-backend=test \
--from=$NICKNAME \
-y

Проверить, всё ли прошло удачно, можно в эксплорере (когда он заработает):

Посмотрим информацию о валидаторе:

stchaincli query staking validator $(stchaincli keys show $NICKNAME \
--bech val --address --keyring-backend test) \
--trust-node \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
Содержание

Несколько команд для удобной работы с нодой.

# получаем высоту блоков нашей ноды
stchaincli status 2>&1 \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
| jq ."sync_info"."latest_block_height"
# получаем статус синхронизации ноды
stchaincli status 2>&1 \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
| jq ."sync_info"."catching_up"

# 'true' - нода синхронизируется, 'false' - нода синхронизирована
# посмотреть информацию о валидаторе
stchaincli query staking validator $(stchaincli keys show $NICKNAME \
--bech val --address --keyring-backend test) \
--trust-node \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
# локальный эксплорер
stchaincli q staking validators \
-o json --node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
| jq '.[] | select(.status==2)' \
| jq -r '.tokens + " - " + .description.moniker' | sort -gr | nl
# выйти из 'тюрьмы'
stchaincli tx slashing unjail \
--from=$NICKNAME \
--chain-id=tropos-1 \
--keyring-backend=test \
--gas="auto" \
--gas-prices="0.5ustos" \
--gas-adjustment=1.5 \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
# перезапустить сервис с нодой
sudo systemctl restart stratosd
# остановить сервис с нодой
sudo systemctl stop stratosd
# проверить логи ноды
sudo journalctl -u stratosd -f -o cat
Содержание

План работы: выводим реварды за активное валидирование, проверяем баланс, ределегируем собранную награду снова на своего валидатора.

# вывести реварды за стейкинг для последующей ределегации
stchaincli tx distribution withdraw-all-rewards \
--chain-id=tropos-1 \
--gas="auto" \
--gas-adjustment=1.5 \
--gas-prices="0.5ustos" \
--keyring-backend=test \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
--from=$NICKNAME \
-y
# проверяем новый баланс на аккаунтах
stchaincli query account <address> \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`

Где <address> - адрес, с которого производилось создание валидатора.

В amount показывает весь свободный баланс. Не советую делегировать весь баланс, помните, что каждая транзакция имеет комиссию.

# получаем operator_address
stchaincli query staking validator $(stchaincli keys show $NICKNAME \
--keyring-backend test --bech=val -a)\
 --node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
--trust-node | grep "valoper" | awk '{print $2}'
# делегировать токены на своего валидатора
stchaincli tx staking delegate <operator_address> "1000000000ustos" \
--chain-id=tropos-1 \
--gas="auto" \
--gas-adjustment=1.5 \
--gas-prices="0.5ustos" \
--keyring-backend=test \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
--from=$NICKNAME \
-y

1 stos = 1,000,000,000 ustos

Посмотрим информацию о валидаторе:

stchaincli query staking validator $(stchaincli keys show $NICKNAME \
--bech val --address --keyring-backend test) \
--trust-node \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
Содержание

Добавим аватар и немного описания нашему валидатору.

Советую сначала скопировать команду в блокнот, отредактировать, а затем вставлять в терминал.

stchaincli tx staking edit-validator \
--moniker="new node nickname" \
--website="https://t.me/nickname" \
--identity="1A1A2B2B3C3C4D4D" \
--details="any details" \
--chain-id=tropos-1 \
--gas="auto" \
--gas-adjustment=1.5 \
--gas-prices="0.5ustos" \
--keyring-backend=test \
--node `cat "$HOME/.stchaind/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \
--from=$NICKNAME \
-y

Если вы не знаете, что такое identity и где его получить - посмотрите на пример из статьи @letskynode.

Содержание

Про перенос я написал полноценную статью. Читаем внимательно и вдумчиво.

Содержание

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

Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:

# останавливаем и отключаем сервис ноды
sudo systemctl stop stratosd; \
sudo systemctl disable stratosd; \
sudo systemctl daemon-reload

Не забудьте сделать бэкап папки $HOME/.stchaind и $HOME/.stchaincli, даже если хотите удалить ноду с сервера.

# удаляем папки и исполняемые файлы
sudo rm -Rvf $HOME/.stchaind $HOME/.stchaincli \
/usr/bin/stchaincli /usr/bin/stchaind $HOME/stratos
Содержание

мамичу за то, что родила такого гения.

@AlexVoy за альтернативный гайд.

Содержание

@how_to_node - канал, где я выкладываю свои гайды.

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

Крипто-кошельки автора гайда.