September 6, 2022

Стресс-тест Subspace Network Gemini Фаза II

Эта фаза тестнета является не награждаемой и является подготовительной перед запуском второй фазы Gemini. Этот тест необходим для того, чтобы определить, работают ли все новые улучшения, включенные в Gemini II. Существующая сеть будет преобразована в Gemini II 20 сентября, когда будут всключены вознаграждения. Это означает, что фермерам, которые уже синхронизированы с сетью "Subspace Gemini 2a", не придется перезапускать свои узлы или пересинхронизироваться.

Важные обновления:

- CLI и Docker будут единственными двумя официально поддерживаемыми методами фарминга на этом этапе

- Размер плота по-умолчанию будет установлен на 100 ГБ максимум (фармеры могут изменить размер своего плота на меньший, чем 100 ГБ, но не больше)

Системные требования: 2 CPU+/4GB+ RAM (рекомендуется 8GB)/200GB

Официальная документация https://docs.subspace.network/protocol/farm/farming/

Перейдем непосредственно к установке ноды и фармера. Есть два способа установки в консоли Linux - Docker и CLI. Первый проще в обслуживании, диагностике ошибок и поддержке. В любом случае необходимо выполнить команды из раздела "Подготовка". Кроме того добавил возможность установки одной командой. В этом случае предварительно выполнять ничего не надо.

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

Подготовка

Перед непосредственной установкой одним из способов необходимо задать переменные окружения с адресом кошелька, именем ноды и размером плота. Чтобы получить адрес кошелька переходим по ссылке https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Feu-2.gemini-2a.subspace.network%2Fws#/accounts и нажимаем на иконку - адрес скопирован в буфер обмена.

sudo -i
apt -qq update && apt -qq upgrade -y && apt -qq install curl wget jq -y

# В кавычках указываем свой адрес и произвольное имя ноды
SUBSPACE_WALLET_ADDRESS="адрес для получения вознаграждения"
SUBSPACE_NODE_NAME="имя вашей ноды"
# В данной фазе максимальный размер плота 100 гигабайт
# Можно указать меньше
SUBSPACE_PLOT_SIZE="100G"
# здесь ничего не меняем
echo 'export SUBSPACE_WALLET_ADDRESS='$SUBSPACE_WALLET_ADDRESS >> $HOME/.bash_profile
echo 'export SUBSPACE_NODE_NAME="'${SUBSPACE_NODE_NAME}'"' >> $HOME/.bash_profile
echo 'export SUBSPACE_PLOT_SIZE='$SUBSPACE_PLOT_SIZE >> $HOME/.bash_profile
source $HOME/.bash_profile

export SUBSPACE_CHAIN="gemini-2a"
export SUBSPACE_RELEASE=$(curl -s https://api.github.com/repos/subspace/subspace/releases | jq '[.[] | select(.prerelease==false) | select(.tag_name | startswith("runtime") | not) | select(.tag_name | startswith("chain-spec") | not)][0].tag_name' | tr -d \")

Docker (предпочтительно)

Установка

Устанавливаем Docker, предварительно удалив старую версию:

cd $HOME
# следующие две команды могут выдать ошибку. это нормально
apt -qq purge docker docker-engine docker.io containerd docker-compose -y 
rm /usr/bin/docker-compose /usr/local/bin/docker-compose
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && systemctl restart docker
curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose && ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Теперь создаем docker-compose.yml

mkdir subspace && cd subspace
wget -qO - https://github.com/bombermine3/subspace-docker/raw/main/docker-compose-auto.yml | envsubst > docker-compose.yml

Запускаем фарминг:

docker-compose up -d

Просмотр логов

docker-compose logs --tail=1000 -f

Перезагрузка

docker-compose down && docker compose up -d

Обновление

apt install jq -y
cd $HOME/subspace
source $HOME/.bash_profile
export SUBSPACE_CHAIN="gemini-2a"
export SUBSPACE_RELEASE=$(curl -s https://api.github.com/repos/subspace/subspace/releases | jq '[.[] | select(.prerelease==false) | select(.tag_name | startswith("runtime") | not) | select(.tag_name | startswith("chain-spec") | not)][0].tag_name' | tr -d \")
wget -qO - https://github.com/bombermine3/subspace-docker/raw/main/docker-compose-auto.yml | envsubst > docker-compose.yml
docker-compose up -d

Удаление ноды

cd $HOME/subspace
docker-compose down -v
cd $HOME && rm -rf $HOME/subspace/

CLI (systemd)

Установка

Скачиваем исполняемые файлы и создаем системного пользователя:

cd $HOME
wget -O subspace-node https://github.com/subspace/subspace/releases/download/$SUBSPACE_RELEASE/subspace-node-ubuntu-x86_64-$SUBSPACE_RELEASE
wget -O subspace-farmer https://github.com/subspace/subspace/releases/download/$SUBSPACE_RELEASE/subspace-farmer-ubuntu-x86_64-$SUBSPACE_RELEASE
chmod +x subspace-node subspace-farmer && mv subspace* /usr/local/bin/
adduser --system --home=/var/lib/subspace subspace

Создаем сервисные файлы (вставить в консоль каждый блок целиком ничего не меняя)

printf "[Unit]
Description=Subspace Node
After=network.target
[Service]
Type=simple
User=subspace
ExecStart=$(which subspace-node) \\
            --chain $SUBSPACE_CHAIN \\
            --execution wasm \\
            --state-pruning archive \\
            --validator \\
            --name $SUBSPACE_NODE_NAME
Restart=always
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/subspace-node.service
printf "[Unit]
Description=Subspace Farmer
Requires=subspace-node.service
After=network.target
After=subspace-node.service
[Service]
Type=simple
User=subspace
ExecStart=$(which subspace-farmer) farm \\
            --reward-address $SUBSPACE_WALLET_ADDRESS \\
            --plot-size $SUBSPACE_PLOT_SIZE
Restart=always
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/subspace-farmer.service
sudo systemctl daemon-reload
sudo systemctl enable subspace-node subspace-farmer
sudo systemctl restart subspace-node subspace-farmer

Просмотр логов

journalctl -u subspace-node -f -o cat
journalctl -u subspace-farmer -f -o cat

Перезагрузка

sudo systemctl restart subspace-node subspace-farmer

Обновление

apt install jq -y
cd $HOME
source $HOME/.bash_profile
export SUBSPACE_CHAIN="gemini-2a"
export SUBSPACE_RELEASE=$(curl -s https://api.github.com/repos/subspace/subspace/releases | jq '[.[] | select(.prerelease==false) | select(.tag_name | startswith("runtime") | not) | select(.tag_name | startswith("chain-spec") | not)][0].tag_name' | tr -d \")
systemctl stop subspace-node subspace-farmer
wget -O subspace-node https://github.com/subspace/subspace/releases/download/$SUBSPACE_RELEASE/subspace-node-ubuntu-x86_64-$SUBSPACE_RELEASE
wget -O subspace-farmer https://github.com/subspace/subspace/releases/download/$SUBSPACE_RELEASE/subspace-farmer-ubuntu-x86_64-$SUBSPACE_RELEASE
chmod +x subspace-node subspace-farmer && mv subspace* /usr/local/bin/
systemctl start subspace-node subspace-farmer

Удаление ноды

sudo systemctl stop subspace-node subspace-farmer
sudo systemctl disable subspace-node subspace-farmer
sudo deluser subspace
sudo rm -rf /var/lib/subspace
sudo rm -rf /root/.local/share/subspace*
sudo rm /usr/local/bin/subspace*
sudo rm /etc/systemd/system/subspace*

Одной командой

Установка

Установка происходит через Docker. Будет запрошен адрес кошелька, имя ноды и размер плота, если они не были заданы ранее. Команду скопировать и вставить в консоль полностью.

cd $HOME && 
wget -O subspace.sh https://raw.githubusercontent.com/bombermine3/subspace-docker/main/subspace.sh &&
chmod +x subspace.sh &&
./subspace.sh

Просмотр логов

cd subspace && docker-compose logs --tail=1000 -f

Перезагрузка

docker-compose down && docker-compose up -d

Обновление

cd $HOME &&
wget -O subspace.sh https://raw.githubusercontent.com/bombermine3/subspace-docker/main/subspace.sh &&
chmod +x subspace.sh && 
./subspace.sh update

Удаление ноды

Удаляется нода и заданные адрес кошелька, имя ноды и размер плота. Если эти параметры нужно сохранить, то просто удалите "--all" в конце команды.

cd $HOME &&
wget -O subspace.sh https://raw.githubusercontent.com/bombermine3/subspace-docker/main/subspace.sh &&
chmod +x subspace.sh && 
./subspace.sh uninstall --all

Мониторинг

Кроме логов можно найти свою ноду в телеметрии. Учтите, что при большом количестве фармеров есть вероятность, что даже успешно работающую ноду получится увидеть в телеметрии не сразу. Для поиска нужно просто начать набирать имя ноды.

https://telemetry.subspace.network/#list/0x43d10ffd50990380ffe6c9392145431d630ae67e89dbc9c014cac2a417759101