Guides
July 16, 2022

Sui: Installation Guide

Sui — децентрализованная платформа смарт-контрактов, разрабатываемый командой Mysten Labs. Целью проекта является организация базовой инфраструктуры для Web3 для создания богатых и динамичных сетевых активов, от игр до финансов

В конце 2021 года Mysten Labs закрыли раунд Серии А собрав $36M, лид инвестором стал Andreessen Horowitz. Также, на борту: Coinbase Ventures, Electric Capital, Samsung NEXT и др.

Форма для регистрации в награждаемый тестнет - https://airtable.com/shr3phh3FCZYhZUDF. Форма закрыта.

Гайд актуален для версии devnet v0.20.0 (5.01.2023)

DYOR:

Сrunchbase
Website
Discord
Whitepaper

Оглавление


Подготовка сервера

Оглавление

Для стабильной работы долно хватить сервера с следующими характеристиками: 4 CPU, 16 GB RAM, 120+ GB SSD, что позволяет установить ноду на сервер Hetzner - CX41.

Sui написан на Rust, для создания и управления зависимостей используется Cargo.

Обновляем пакеты

sudo apt update && sudo apt upgrade -y

Устанавливаем инструменты разработчика и необходимые пакеты

sudo apt install wget jq build-essential pkg-config gcc make -y
sudo apt install curl
sudo apt install libssl-dev
sudo apt install cmake
sudo apt install libclang-dev  

Устанавливаем Rust

# устанавливаем необходимые пакеты
sudo apt install curl build-essential gcc make -y
# загружаем установочный скрипт Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Выбираем пункт 1) продолжить установку (по умолчанию).

# активируем среду Rust для текущей оболочки
source ~/.profile
source ~/.cargo/env

⠀Создаем папку для ноды

mkdir -p $HOME/.sui

Установка и запуск

Оглавление

Создаем форк репозитория и клонируем свой репозиторий (в код вставляем сврй никнейм гитхаба)

git clone https://github.com/MystenLabs/sui.git

Переходим в папку с проектом, подтягиваем последнюю версию и переключаемся на версию devnet

cd sui
git remote add upstream https://github.com/MystenLabs/sui
git fetch upstream
git checkout --track upstream/devnet

Собираем бинарные файлы

cargo run --release --bin sui-node -- --config-path /root/sui/crates/sui-config/data/fullnode-template.yaml

Возвращаемся в домашнюю директорию

cd

Скачиваем файл генезиса

wget -qO $HOME/.sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob

Копируем и редактируем конфиг

cp $HOME/sui/crates/sui-config/data/fullnode-template.yaml $HOME/.sui/fullnode.yaml
sed -i -e "s%db-path:.*%db-path: \"$HOME/.sui/db\"%; "\
"s%metrics-address:.*%metrics-address: \"0.0.0.0:9184\"%; "\
"s%json-rpc-address:.*%json-rpc-address: \"0.0.0.0:9000\"%; "\
"s%genesis-file-location:.*%genesis-file-location: \"$HOME/.sui/genesis.blob\"%; " $HOME/.sui/fullnode.yaml

Открываем необходимые порты

ufw enable
ufw allow 22
ufw allow 9000
ufw allow 9184
ufw status

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

printf "[Unit]
Description=Sui node
After=network-online.target

[Service]
User=$USER
ExecStart=`which sui-node` --config-path $HOME/.sui/fullnode.yaml
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/suid.service

Запускаем сервис

sudo systemctl daemon-reload
sudo systemctl enable suid
sudo systemctl restart suid

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

Оглавление

Для создания кошелька вводим команду

sui client

На первый вопрос отвечаем yes - вводим y.

Config file ["/root/.sui/sui_config/client.yaml"] doesn't exist, do you 
want to connect to a Sui RPC server [yN]?y

Sui RPC server Url устанавливаем по умолчанию, нажав Enter

Sui RPC server Url (Default to Sui DevNet if not specified) :

Сохраняем в надежном месте резервную копию ключей

$HOME/.sui/sui_config/

Узнаем свой адрес кошелька

sui keytool list

В канале #devnet-faucet запрашиваем тестовые токены командой

!faucet 0x___

Если канала нет, необходимо пройти верификацию:

Шаг 1. Зайти по ссылке https://discord.com/channels/916379725201563759/1008756308272496710 и поставить каплю

Шаг 2. Зайти по ссылке https://discord.com/channels/916379725201563759/955578198878482442 и поставить галочку


Обновление v0.20.0

Оглавление

Останавливаем ноду, удаляем старые данные, подтягиваем изменения

systemctl stop suid
rm -rf /root/sui/suidb/
cd
cd sui 
git fetch upstream 
git stash 
git checkout -B devnet --track upstream/devnet

Собираем бинарные файлы

cargo run --release --bin sui-node -- --config-path /root/.sui/fullnode.yaml

Возвращаемся в домашнюю директорию

cd

Скачиваем новый файл генезиса

wget -qO $HOME/.sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob

Проверяем версию

sui --version
#sui v0.20.0

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

systemctl restart suid

Перенос на другой сервер

Оглавление

Сохраняем копию ключей с текущего сервера на свой компьютер

$HOME/.sui/sui_config/

На новом сервере выполняем все команды по гайду до момента запуска сервиса.

Останавливаем ноду на старом сервере (внимательно убедитесь, что нода остановлена во избежание двойного подписания)

sudo systemctl stop suid

Загружаем на новый сервер сохраненный каталог по пути

 $HOME/.sui/sui_config/

Запускаем сервис

sudo systemctl daemon-reload
sudo systemctl enable suid
sudo systemctl restart suid

Мониторинг

Оглавление

Просмотр логов ноды

sudo journalctl -u suid -f -o cat

Также, проверить работоспособность ноды можно введя свой IP по ссылке:

https://node.sui.zvalid.com/

Devnet эксплорер: https://explorer.devnet.sui.io/


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

Оглавление

Для удаления ноды выполните следующие команды

systemctl stop suid && systemctl disable suid
rm -rf $HOME/{sui,.sui} /usr/bin/{sui,sui-node,sui-faucet} /etc/systemd/system/suid.service
systemctl daemon-reload

Регистрация в Discord

Оглавление

В настоящее время регистрация в Discord закрыта!

В адресной строке браузера вводим http://<ваш IP>:9000/.

Узнать свой IP

wget -qO- eth0.me

Если появляется надпись - Used HTTP Method is not allowed. POST or OPTIONS is required - значит все в порядке.

Заходим в discord канал #node-ip-application и отправляем свой IP в формате http://<ваш IP>:9000/.


Кошелек для браузера Sui

Оглавление

Появилась возможность протестировать браузерный кошелек Sui. Необходимо выполнить ряд заданий - создание кошелька, минт NFT и другий.

Гайд

Nodera

Telegram | Discord | Twitter