SPACEMESH CLI: TT134 /// v2.4.0
cyberomanov
Актуальный гайд теперь в teletype: https://teletype.in/@cyberomanov/spacemesh_command_line.

Spacemesh is a decentralized blockchain computer using a new race-free consensus protocol that doesn't involve energy-wasteful proof-of-work.
We aim to create a secure and scalable decentralized computer formed by a large number of desktop PCs at home.
We are designing and coding a modern blockchain platform from the ground up for scale, security and speed based on the learnings of the achievements and mistakes of previous projects in this space.
Spacemesh is designed to create a decentralized blockchain smart contracts computer and a cryptocurrency that is formed by connecting the home PCs of people from around the world into one virtual computer without incurring massive energy waste and mining pools issues that are inherent in other blockchain computers, and provide a provably-secure and incentive-compatible smart contracts execution environment.
Spacemesh is designed to be ASIC-resistant and in a way that doesn’t give an unfair advantage to rich parties who can afford setting up dedicated computers on the network. We achieve this by using a novel consensus protocol and optimize the software to be most effectively be used on home PCs that are also used for interactive apps.
ᅠ

HW: 4 CPU x 8 GB RAM x 100 GB SSD
ОС: Ubuntu 20.04 +
Арендуем сервер на любом удобном сервисе. Я покупаю здесь: vdsina.ru (при регистрации по моей ссылке - 10% скидка на стоимость всех услуг).
Открываем MobaXterm и создаём сессию. Гайд по MobaXterm.
ᅠ

# обновляем 'базу данных' и скачиваем необходимые зависимости $ sudo apt-get update $ sudo apt-get upgrade -y $ sudo apt install curl unzip ufw -y # устанавливаем 'go' $ sudo rm -rf /usr/local/go $ curl https://dl.google.com/go/go1.15.7.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf - $ cat <<'EOF' >>$HOME/.profile export GOROOT=/usr/local/go export GOPATH=$HOME/go export GO111MODULE=on export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin EOF $ source $HOME/.profile $ go version # создаём папку 'space' $ mkdir space && cd $HOME/space # скачиваем 'go-spacemesh' $ https://storage.googleapis.com/go-spacemesh-release-builds/v0.1.44/ubuntu-latest/go-spacemesh $ mv go-spacemesh node $ chmod +x ./node # скачиваем конфиг $ wget https://storage.googleapis.com/spacecraft-data/tweedlelite134-archive/config.json # создаём сервис 'spaced' $ sudo tee <<EOF >/dev/null /etc/systemd/system/spaced.service [Unit] Description=Spacemesh Node After=network-online.target [Service] User=$USER ExecStart=$HOME/space/node --tcp-port 7513 --config $HOME/space/config.json -d $HOME/space/sm_data Restart=always RestartSec=10 LimitNOFILE=10000 [Install] WantedBy=multi-user.target EOF # отключаем фаервол $ sudo ufw disable # включаем сервис 'spaced' и смотрим логи $ sudo systemctl daemon-reload $ sudo systemctl start spaced $ sudo journalctl -u spaced -f

# отлично, останавливаем логи сочитанием клавиш 'Ctrl + C' # скачиваем, устанавливаем и запускаем 'CLIWallet' $ cd $HOME/space $ wget https://github.com/spacemeshos/smrepl/releases/download/v0.1.29/linux.zip.zip $ unzip linux.zip.zip # переименовывем файлы для красоты и делаем его исполняемым $ mv smrepl_linux_amd64 wallet $ chmod +x ./wallet $ $HOME/space/wallet # если всё получилось, увидим примерно следующую картину

# первым делом, создаём кошелёк $ wallet create # обязательно скачиваем себе файл с ключом # путь к файлу сообщит терминал в строке 'Wallet Path'

# посмотрим информацию о кошельке, для этого выполним команды $ account info # сохраняем нужную информацию: адрес, публичный и приватные ключи # и выходим из кошелька $ quit

# удаляем старый сервис $ sudo systemctl stop spaced $ sudo rm /etc/systemd/system/spaced.service $ sudo systemctl daemon-reload $ sudo systemctl reset-failed # задаём адрес, на который будут производиться выплаты # адрес мы только что сгенерировали # вставляем без кавычек, например, address=0x9265... $ address=<address> # создаём новый сервис $ sudo tee <<EOF >/dev/null /etc/systemd/system/spaced.service [Unit] Description=Spacemesh Node After=network-online.target [Service] User=$USER ExecStart=$HOME/space/node --tcp-port 7513 --config $HOME/space/config.json -d $HOME/space/sm_data --coinbase $address --start-mining --post-datadir $HOME/space/post_data Restart=always RestartSec=10 LimitNOFILE=10000 [Install] WantedBy=multi-user.target EOF # включаем сервис 'spaced' и смотрим логи $ sudo systemctl daemon-reload $ sudo systemctl enable spaced $ sudo systemctl start spaced $ sudo journalctl -u spaced -f

# отлично, останавливаем логи сочитанием клавиш 'Ctrl + C' # запускаем 'CLIWallet' и открываем свой кошелёк $ $HOME/space/wallet $ wallet open # с помощью 'TAB' выбираем наш 'json' с кошельком


# проверяем статус синхронизации $ status node # теперь можно оставить сервер на несколько часов # синхронизация занимает не более 2-ух часов # раз в час проверяем количество синхронизированных 'слоёв' # и дожидаемся полной синхронизации # если синхронизация долго стоит на одном месте, можно ребутнуть сервер

Первые награды появятся на кошельке через пару часов (максимум через 2 дня) после окончания синхронизации. Их можно посмотреть следующим образом:
# запускаем 'CLIWallet' и открываем свой кошелёк $ $HOME/space/wallet $ smesher transactions # можно посмотреть более детальную информацию о кошельке $ wallet open $ account info


Прошло несколько часов, появились первые награды:


Награды также можно посмотреть и через explorer:


Переходим на страницу с релизами "go-spacemesh" и "cli-wallet":


Копируем ссылки на новый конфиг, новый билд кошелька и ноды. Например, для нового тестнета, ссылки имеют вид:
Конфиг: https://storage.googleapis.com/spacecraft-data/tweedlelite134-archive/config.json
Нода: https://storage.googleapis.com/go-spacemesh-release-builds/v0.1.44/ubuntu-latest/go-spacemesh
Кошелёк: https://github.com/spacemeshos/smrepl/releases/download/v0.1.29/linux.zip.zip
Переходим в терминал и скачиваем новые версии:
# скачиваем 'unzip', если не установлен $ sudo apt install unzip -y # переходим в папку с устаревшими версиями ноды и кошелька $ cd space # удаляем старые версии $ rm node && rm wallet & rm config.json # скачиваем конфиг $ wget https://storage.googleapis.com/spacecraft-data/tweedlelite134-archive/config.json # скачиваем 'go-spacemesh' $ wget https://storage.googleapis.com/go-spacemesh-release-builds/v0.1.44/ubuntu-latest/go-spacemesh # скачиваем 'cli-wallet' $ wget https://github.com/spacemeshos/smrepl/releases/download/v0.1.29/linux.zip.zip $ unzip linux.zip.zip # переименовывем файлы для красоты $ mv go-spacemesh node && mv smrepl_linux_amd64 wallet $ chmod +x ./node && chmod +x ./wallet # перезапускаем сервис $ sudo systemctl restart spaced # открываем кошелёк и смотрим статус ноды $ $HOME/space/wallet $ status node

Как видим, версия ноды обновилась. Теперь вы знаете, как обновлять ноду самостоятельно.
ᅠ

CLIWallet: Connection Refused
Если после запуска "CLIWallet" появится ошибка "connection refused", пугаться не нужно. Просто подождите несколько минут.
9092 порт - порт, по которому общаются нода и кошелёк.
Ошибка лишь сообщает о том, что нода ещё не успела подняться.

CLIWallet: Smeshing is disabled
Если после выполнения команды "smesher-status", вывод будет "Smeshing is disabled" - не страшно. Смешинг станет доступен после синхронизации и включится автоматически.


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

Официальная документация.
@how_to_node - канал, где я выкладываю свои гайды.
@CryptoWatermelon - канал моего товарища. Он выкладывает посты об интересных крипто-проектах и ивентах.
nodes.guru - сайт, где публикуются гайды раньше, чем у меня.
2TOP Nodes - сообщество, где участник команды 2TOP публикует гайды по нодам и тестнетам. Да, раньше, чем у меня. Круглосуточная поддержка и всё самое вкусное. Если есть пару лишних копеек, не жлобитесь. Сам состою в данном сообществе, ни капли не пожалел.
dropsearn.com и @dropstech - сообщество, где в первую очередь выходят новости о новых ивентах.
@icodrops_sergey - папа.
Статья с крипто-кошельками автора гайда.