July 15, 2022

УДАЛЁННОЕ

Оглавление

Deleted text

Sui

Фазы

⠀Исходя из анонса, стимулирующая тестовая сеть начнётся в августе и будет поделена на несколько этапов:

  • Запуск сети;
  • Стейкинг;
  • Обновление.

⠀Судя по всему, это будет закрытый тестнет с ограниченным количеством участников, по каким критериям будет отбор — неизвестно. Как правило это:

  • Опыт;
  • Технические навыки;
  • Контрибуция;
  • Везение.

⠀Модераторы в Discord писали, что ведение ноды в девнете может быть одним из достоинств при отборе, помимо этого её установка может дать опыт, который позволит легче совладать с будущим тестнетом.

Награды

⠀Будут анонсированы ближе к началу события.


Запуск

К содержанию

Все действия необходимо выполнять под именем root пользователя.

⠀Каждый подраздел — отдельный вид запуска, нужно выбрать один из них.

Linux (бинарный файл)

Для новичков

⠀Обновить пакеты и систему

sudo apt update && sudo apt upgrade -y

⠀Установить необходимые пакеты

sudo apt install wget jq -y

⠀Скачать бинарный файл ноды

version=`wget -qO- https://api.github.com/repos/MystenLabs/sui/releases/latest | jq -r ".tag_name"`; \
wget -O /usr/bin/sui "https://github.com/MystenLabs/sui/releases/download/${version}/sui"

⠀Сделать файл исполняемым

chmod +x /usr/bin/sui

⠀Скачать файл генезиса

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

⠀Открыть используемые порты

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/ports_opening.sh) \
9000 9184

⠀Создать сервисный файл

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

⠀Добавить команду для просмотра лога ноды в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n sui_log -v "sudo journalctl -fn 100 -u suid" -a

⠀Проверить, выводит ли команда информацию

wget -qO-  -t 1 -T 5 --header 'Content-Type: application/json' --post-data '{ "jsonrpc":"2.0", "id":1, "method":"sui_getCommitteeInfo", "params":[] }' "http://127.0.0.1:9000/" | jq

⠀Помимо этого можно проверить синхронизацию в этом чекере и найти свою ноду в другом, введя IP сервера.

Linux (исходный код)

Для продвинутых

⠀Обновить пакеты и систему

sudo apt update && sudo apt upgrade -y

⠀Установить необходимые пакеты

sudo apt install wget jq git libclang-dev libpq-dev cmake -y

⠀Установить Rust

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/rust.sh)

⠀Версия Rust должна быть не младше 1.62.0

rustc --version

⠀Если нет, то удалить командой ниже и установить ещё раз

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/rust.sh) \
-un

⠀Создать папку для ноды

mkdir -p $HOME/.sui

Простой путь

⠀Клонировать репозиторий проекта с нодой

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

Продвинутый путь

⠀Сделать форк репозитория (сам репозиторий).

⠀Клонировать свой репозиторий с нодой (в ссылку необходимо подставить свой юзернейм)

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

Продолжение

⠀Перейти в папку с проектом

cd sui

⠀Создать ветку с исходным репозиторием

git remote add upstream https://github.com/MystenLabs/sui

⠀Подтянуть актуальную версию

git fetch upstream

⠀Переключиться на devnet версию

git checkout -B devnet --track upstream/devnet

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

cargo build --release

⠀При возникновении ошибки

error: failed to get `config` as a dependency of package `sui-config v0.0.0 (/root/suirates/sui-config)`

⠀Нужно скачать бинарные файлы, собранные нашей командой

version=`wget -qO- https://api.github.com/repos/SecorD0/Sui/releases/latest | jq -r ".tag_name"`; \
wget -qO- "https://github.com/SecorD0/Sui/releases/download/${version}/sui-linux-amd64-${version}.tar.gz" | tar -C /usr/bin/ -xzf -

⠀Переместить бинарные файлы в папку с бинарными файлами

mv $HOME/sui/target/release/{sui,sui-node,sui-faucet} /usr/bin/

⠀Вернуться в домашнюю директорию

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

⠀Открыть используемые порты

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/ports_opening.sh) \
9000 9184

⠀Создать сервисный файл

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

⠀Добавить команду для просмотра лога ноды в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n sui_log -v "sudo journalctl -fn 100 -u suid" -a

⠀Проверить, выводит ли команда информацию

wget -qO-  -t 1 -T 5 --header 'Content-Type: application/json' --post-data '{ "jsonrpc":"2.0", "id":1, "method":"sui_getCommitteeInfo", "params":[] }' "http://127.0.0.1:9000/" | jq

⠀Помимо этого можно проверить синхронизацию в этом чекере и найти свою ноду в другом, введя IP сервера.

Docker

Для любителей прекрасного

⠀По желанию сделать форк репозитория (сам репозиторий).

⠀Обновить пакеты и систему

sudo apt update && sudo apt upgrade -y

⠀Установить необходимые пакеты

sudo apt install wget jq bc build-essential -y

⠀Установить Docker

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)

⠀Создать папку для ноды

mkdir -p $HOME/.sui

⠀Скачать файл генезиса

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

⠀Скачать конфиг ноды

wget -qO $HOME/.sui/fullnode.yaml https://github.com/MystenLabs/sui/raw/main/crates/sui-config/data/fullnode-template.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

⠀Открыть используемые порты

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/ports_opening.sh) \
9000 9184

⠀Запустить контейнер с нодой

docker run -dit --name sui_node --restart always -u 0:0 \
  --log-opt max-size=50m --log-opt max-file=3 \
  --network host -v $HOME/.sui:/root/.sui secord/sui \
  --config-path $HOME/.sui/fullnode.yaml

⠀Добавить команды в систему в виде переменных:

  • Просмотр лога ноды;
  • Сокращение команды для выполнения действий в контейнере.
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n sui_log -v "docker logs sui_node -fn100" -a
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n sui -v "docker exec -it sui_node ./sui" -a

⠀Проверить, выводит ли команда информацию

wget -qO-  -t 1 -T 5 --header 'Content-Type: application/json' --post-data '{ "jsonrpc":"2.0", "id":1, "method":"sui_getCommitteeInfo", "params":[] }' "http://127.0.0.1:9000/" | jq

⠀Помимо этого можно проверить синхронизацию в этом чекере и найти свою ноду в другом, введя IP сервера.


Обновление

К содержанию

Linux бинарный файл)

⠀Остановить ноду

systemctl stop suid

⠀Удалить старую базу данных

rm -rf $HOME/.sui/db

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

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

⠀Скачать бинарный файл ноды

version=`wget -qO- https://api.github.com/repos/MystenLabs/sui/releases/latest | jq -r ".tag_name"`; \
wget -qO /usr/bin/sui "https://github.com/MystenLabs/sui/releases/download/${version}/sui"

⠀Проверить версию, должна быть 0.22.0

sui -V

⠀Перезапустить ноду

systemctl restart suid