April 29, 2022

Subspace Test Network

О проекте

Medium | GitHub | WebSite | Twitter | Discord | Telegram | Ru_Telegram

Subspace Network - сеть, позволяющая разработчикам очень просто и быстро развёртывать децентрализованные Web3-приложения, которые, в свою очередь, могут автоматически масштабироваться при необходимости.

Полная интеграция с Polkadot & Kusama, в ближайшем будущем и с EVM.

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

Эти проблемы позволяет решить свежая реализация proof-of-capacity (PoC). Знакомые нам аналоги на PoC: Chia, Spacemesh, Filecoin.

Вводим новое понятие - дилемма фермера. Более подробно почитать о проблеме можно тут, но грубый смысл в том, что, невозможно бесконечно хранить бесконечное количество данных. когда-нибудь придётся чем-то пожертвовать: децентрализацией или “качеством” данных.

Subspace считает, что его аналоги вообще не решают дилемму фермера: кто-то слишком централизован, кто-то не умеет в масштабирование, а кто-то вообще файлкойн.

Так как же Subspace решает задачу?

Subspace работает на основе консенсуса proof-of-archive-storage (PoAS) или “доказательство хранения архивной истории блокчейна”.

Фермеры сабспейса (не майнеры, кстати) хранят столько уникальных сегментов истории блокчейна, сколько позволяет их дисковое пространство. хранят историю коллективно, что позволяет им работать как единый распределенный архивный узел.

Фермеру не обязательно содержать 2 тонны ссд, чтобы хранить всю историю блокчейна. Фермер может хранить лишь сегмент/ы.

Чем больше фермер выделяет пространства, тем больший шанс он имеет быть выбранным для создания блока.

Работает интересный механизм наград: больше фермеров в сети > дороже транзакция > больше прибыль для фермера. Обусловлено это тем, что новая информация должна храниться на большем количестве дисков.

Вводим ещё одно умное словосочетание: блокчейн-трилемма.

Это термин, придуманный Виталиком Бутериным для описания задачи создания масштабируемого, децентрализованного и безопасного блокчейна, в котором утверждается, что только две из этих трёх функций могут быть одновременно реализованы.

Subspace предлагает следующее решение: разделить консенсус и вычисления.

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

Исполнитель выбирается на основе его доли: больше стейк > чаще избирается для завершения блока > больше награда.

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

Инвесторы: более $37kk от Coinbase, IOSG, Republic, Crypto.com, Alameda, Pantera, Hypersphere, Bixin, Vendetta, NGC, Gate и других.

Сейчас идёт публичный тестнет Aries, где мы занимаемся сельским хозяйством. После ариеса стартует инсетивайз - Gemini, где будут добавлены исполнители. Конкретных дат не нашёл, ориентировочно Q2.

Что по итогу: мы имеем какую-то сборную солянку из консенсусов (мы и не PoC, и не PoW, и не PoS, но что-то между), потенциальное решение дилеммы фермера и трилеммы Бутерина, адекватные фонды, работающий тестнет и запланированный инсентивайз.


Требования к серверу

Официальные требования:

Минимальные требования: 4 CPU x 8 GB RAM x 160 GB SSD - Ubuntu 20.04.

Оптимально: 8 CPU x 16 GB RAM x 160+ GB SSD - Ubuntu 20.04.

Установка

1. Создание кошелька

Для создания кошелька вам нужно перейти в эксплорер и следовать примерам на скриншотах.
Не забудьте сохранить мнемонику!

Жмем добавить аккаунт. Появляется окно с мнемоникой. Ее сохраняем в надежном месте!

Вводим данные(имя кошелька и пароль от него)

Сохраняем резервные копии нашего аккаунта

2. Установка

1. Задаем имя и адрес кошелька:

<YOUR_NODE_NAME> - вместо этого указываем Имя ноды.

<YOUR_WALLET> - вместо этого указываем Адрес кошелька.

echo 'export SUB_NODENAME='<YOUR_NODE_NAME> >> $HOME/.bash_profile
echo 'export SUB_WALLET='<YOUR_WALLET> >> $HOME/.bash_profile
source ~/.bash_profile

2.1. Установка по однострочному скрипту(вариант для ленивых):

curl -s https://raw.githubusercontent.com/MrN1x0n/Subspace/main/subspace.sh > subspace.sh && chmod +x subspace.sh && bash subspace.sh

После установки удаляем установочный файл

rm -rf subspace.sh

2.2. Установка вручную:

Для тех кто в танке, если Вы ставили по пункту 2.1., то 2.2. пропускаете. Тут или-или, т.е. ставим или по 2.1. или по 2.2.

Обновляем систему и ставим необходимые пакеты:

sudo apt update && \
sudo apt install ocl-icd-opencl-dev libopencl-clang-dev libgomp1 -y

Выполняем

cd $HOME && \
wget -O subspace-node https://github.com/subspace/subspace/releases/download/gemini-2a-2022-oct-06/subspace-node-ubuntu-x86_64-gemini-2a-2022-oct-06
wget -O subspace-farmer https://github.com/subspace/subspace/releases/download/gemini-2a-2022-oct-06/subspace-farmer-ubuntu-x86_64-gemini-2a-2022-oct-06
chmod +x subspace-node && \
chmod +x subspace-farmer && \
mv subspace-node /usr/local/bin/ && \
mv subspace-farmer /usr/local/bin/

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

sudo tee /etc/systemd/system/subspace.service > /dev/null <<EOF
[Unit]
Description=Subspace Node
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=/usr/local/bin/subspace-node --chain gemini-2a --execution wasm --state-pruning archive --validator --name $SUB_NODENAME
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target"
EOF

Добавляем сервисный файл для фермера, который будет фармить монетки:

sudo tee /etc/systemd/system/subspace-farmer.service > /dev/null <<EOF
[Unit]
Description=Subspaced Farm
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=/usr/local/bin/subspace-farmer farm --reward-address $SUB_WALLET --plot-size 110G
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" 
EOF

Перезапускаем сервис журналов, демона, потом включаем службы Subspace и запускаем их

sudo systemctl restart systemd-journald
sudo systemctl daemon-reload
sudo systemctl enable subspace subspace-farmer
sudo systemctl start subspace subspace-farmer

А теперь про монетки

Проверить какие блоки мы поймали можно командой

sudo journalctl -u subspaced -o cat | grep "Claimed block"

Также можно проверить количество "заработанных" фантиков токенов на данной странице

Вот и всё. Фармим TSSC и ждём окончания тестнета.

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

Проверить актуальную высоту сети можно по ссылке:

https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Feu-1.gemini-2a.subspace.network%2Fws#/explorer

Перезапуск фермера и ноды

sudo systemctl restart subspace-farmer subspace

Остановка фермера и ноды

sudo systemctl stop subspace-farmer subspace

Проверяем логи фермера и ноды

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

Проверяем синхронизацию ноды

sudo journalctl -fu subspace -o cat | grep -Eo "best: #[0-9]*"

Проверить какие блоки мы "поймали"

sudo journalctl -u subspace -o cat | grep "Claimed block"

Обновление

# останавливаем сервисы ноды и фармера
sudo systemctl stop subspace-farmer subspace
# чистим данные старой сети одной командой
# только, если ушли в форк или хотите начать синхронизацию с нуля
farmer wipe && rm -Rvf /root/.local/share/subspace-node/chains/*

Переходим к разделу установки и ставим ноду с нуля

ПЕРЕНОС И БЭКАП

В качестве бэкапа выкачиваем файл по пути, который выведет команда:

find / -iname secret_ed25519 | grep subspace

Ну, и сохраняем json и мнемонику от кошелька, куда капают награды, разумеется.

При переезде мы устанавливаем ноду и фармер как обычно, но после первого запуска осуществляем подмену secret_ed25519 файла с нового на старый. И перезапускаем ноду с фармером.

УДАЛЕНИЕ

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

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

Останавливаем фермера и ноду, после чего убираем их из автозапуска

sudo systemctl stop subspace subspace-farmer && \
sudo systemctl disable subspace subspace-farmer

Удаляем файлы

rm -Rvf $HOME/.local/share/subspace*

Удаляем файлы сервиса, которые мы создавали, а также перезагружаем daemon

sudo rm -v /etc/systemd/system/subspace.service \
/etc/systemd/system/subspace-farmer.service && \
sudo systemctl daemon-reload