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.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