September 5

0G Labs. Устанавливаем Storage Node

CryptoFortochka — гайды, ноды, новости, тестнеты

0G — это модульная цепочка искусственного интеллекта с масштабируемым программируемым уровнем доступности данных (DA), адаптированным для dapps с искусственным интеллектом

  • Инвестировали: $35 000 000
  • Инвесторы: Hack VC, Delphi Digital, Animoca Brands, OKX и другие
  • Характеристики: 4CPU/16RAM/500SSD — рекомендованные, 4CPU/8RAM/400SSD — минимальные
  • Арендовать сервер: XorekCloud, Contabo
  • Чат и канал с поддержкой: https://t.me/fortochat / https://t.me/cryptoforto
  • Операционная сеть: Ubuntu 20.04

Запустили вторую часть тестнет Testnet Newton v2, который будет проходить на платформе Intract и Storage Node

Реварды кампании на Intract: 0G очки, 0GXP! 1 XP будет равен 1 0GXP!!!.

Есть 2 варианта установки ноды: Validator Node или Storage Node, но, я больше cклоняюсь к Storage Node, так как, требует бюджетное железо, не нужно будет доить краны и выбивать себе себя место в активный сет валидаторов, да и ставить очень просто

На XorekCloud можно арендовать подходящий сервер за 1 399 рублей в месяц + написать в поддержку и докупить дополнительные 260 GB Disk Space

Что делать?

  • Подключаемся на арендованный сервер через root
  • Выполняем команды по списку
  • Обновляем и устанавливаем необходимые пакеты
Если при процессе установки, вам предлагают разные варианты установки — тыкаем на Enter
sudo apt update && sudo apt upgrade -y && sleep 1 
sudo apt install curl tar cargo wget clang pkg-config protobuf-compiler libssl-dev jq build-essential protobuf-compiler bsdmainutils git make ncdu gcc git jq chrony liblz4-tool cmake -y && sleep 1 
sudo apt -qy upgrade -y 
sudo apt install jq -y
  • Устанавливаем GO
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.21.6.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
source .bash_profile
go version
  • Устанавливаем Rustup

Пишем 1 и прожимаем Enter

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Устанавливаем бинарик
git clone -b v0.5.1 https://github.com/0glabs/0g-storage-node.git
  • Делаем апдейт
cd $HOME/0g-storage-node
git stash
git fetch --all --tags
git checkout 1434b94 
git submodule update --init
cargo build --release
  • Собираем и входим в конфиг
rm -rf $HOME/0g-storage-node/run/config.toml
curl -o $HOME/0g-storage-node/run/config.toml https://raw.githubusercontent.com/z8000kr/0g-storage-node/main/run/config.toml
nano $HOME/0g-storage-node/run/config.toml
sed -i 's|^network_boot_nodes = .*|network_boot_nodes = ["/ip4/47.251.117.133/udp/1234/p2p/16Uiu2HAmTVDGNhkHD98zDnJxQWu3i1FL1aFYeh9wiQTNu4pDCgps","/ip4/47.76.61.226/udp/1234/p2p/16Uiu2HAm2k6ua2mGgvZ8rTMV8GhpW71aVzkQWy7D37TTDuLCpgmX"]|g' ~/0g-storage-node/run/config.toml
  • Спускаемся еще ниже к пункту Mine Config Options
  • Снизу, minkey_key = вписываем адрес EVM приватника от вашего кошелька
  • Сохраняем все содержимое кнопками Cntr + X, Y, Enter
  • Создаем сервисный файл
sudo tee /etc/systemd/system/zgs.service > /dev/null <<EOF
[Unit]
Description=ZGS Node
After=network.target

[Service]
User=$USER
WorkingDirectory=$HOME/0g-storage-node/run
ExecStart=$HOME/0g-storage-node/target/release/zgs_node --config $HOME/0g-storage-node/run/config.toml
Restart=on-failure
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
  • Запускаем ноду
sudo systemctl daemon-reload && sudo systemctl enable zgs && sudo systemctl start zgs

Устанавливаем снепшот

  • Стопаем ноду
sudo systemctl stop zgs
  • Устанавливаем снеп
sudo apt-get install wget lz4 aria2 pv -y
aria2c -x 16 -s 16 https://snapshot.zstake.xyz/downloads/storage_0gchain_snapshot.lz4
rm -f ~/0g-storage-node/run/
lz4 -c -d storage_0gchain_snapshot.lz4 | pv | tar -x -C $HOME/0g-storage-node/run
  • Делаем запуск
sudo systemctl daemon-reload && sudo systemctl enable zgs && sudo systemctl start zgs
  • Проверяем блоки, если они растут, то все гуд
while true; do 
    response=$(curl -s -X POST http://localhost:5678 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"zgs_getStatus","params":[],"id":1}')
    logSyncHeight=$(echo $response | jq '.result.logSyncHeight')
    connectedPeers=$(echo $response | jq '.result.connectedPeers')
    echo -e "logSyncHeight: \033[32m$logSyncHeight\033[0m, connectedPeers: \033[34m$connectedPeers\033[0m"
    sleep 5; 
done

Если у вас не работает верификация, но, нода установлена, тогда отпишите в поддержку Intract (в правом нижнем углу, будет значок поддержке на самом Intract). Отправьте им скриншот своих логов с блоками, и они вам одобрят задания)

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

  • Останавливаем ноду
sudo systemctl stop zgs
sudo apt-get update
sudo apt-get openssl libssl-dev pkg-config
  • Бэкап
cp $HOME/0g-storage-node/run/config.toml $HOME/0g-storage-node/run/config.toml.backup
  • Делаем Update
cd $HOME/0g-storage-node
git fetch --all --tags
git checkout v0.6.0
git submodule update --init
cargo build --release
  • Редачим и заходим в конфиг
cp $HOME/0g-storage-node/run/config.toml.backup $HOME/0g-storage-node/run/config.toml
sed -i 's|^network_boot_nodes = .*|network_boot_nodes = ["/ip4/47.251.117.133/udp/1234/p2p/16Uiu2HAmTVDGNhkHD98zDnJxQWu3i1FL1aFYeh9wiQTNu4pDCgps","/ip4/47.76.61.226/udp/1234/p2p/16Uiu2HAm2k6ua2mGgvZ8rTMV8GhpW71aVzkQWy7D37TTDuLCpgmX"]|g' ~/0g-storage-node/run/config.toml
  • Делаем рестарт и запуск + проверяем статус ноды
sudo systemctl daemon-reload && sudo systemctl enable zgs && sudo systemctl start zgs
  • Проверяем логи
tail -f ~/0g-storage-node/run/log/zgs.log.$(TZ=UTC date +%Y-%m-%d)
  • Смотрим синхронизацию
source <(curl -s https://raw.githubusercontent.com/zstake-xyz/test/refs/heads/main/zgs_test.sh)
  • Также проверяем логи

Если есть ошибки с RPC — снизу решения

tail -f ~/0g-storage-node/run/log/zgs.log.$(TZ=UTC date +%Y-%m-%d)
  • Стопаем ноду
sudo systemctl stop zgs
  • Заходим в конфигг
nano $HOME/0g-storage-node/run/config.toml
  • Меняем RPC и приватник

Список рабочих RPC

https://rpc.ankr.com/0g_newton
https://0g-json-rpc-public.originstake.com/
https://0g-rpc-evm01.validatorvn.com/
https://og-testnet-jsonrpc.itrocket.net/
https://evmrpc-testnet.0g.ai/
https://evm-rpc.0g.testnet.node75.org/

  • Рестарт и запуск
sudo systemctl daemon-reload && sudo systemctl enable zgs && sudo systemctl start zgs
  • Проверяем блоки
while true; do 
    response=$(curl -s -X POST http://localhost:5678 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"zgs_getStatus","params":[],"id":1}')
    logSyncHeight=$(echo $response | jq '.result.logSyncHeight')
    connectedPeers=$(echo $response | jq '.result.connectedPeers')
    echo -e "logSyncHeight: \033[32m$logSyncHeight\033[0m, connectedPeers: \033[34m$connectedPeers\033[0m"
    sleep 5; 
done

Дополнительные команды

  • Удалить ноду
sudo systemctl stop zgs
sudo systemctl disable zgs
sudo rm /etc/systemd/system/zgs.service
rm -rf $HOME/0g-storage-node