October 7

0g Labs

Требования:

CPU: 8 ядeр Оперативная память: 32 ГБ SSD: 500 ГБ Пропускная способность интернета: 500 Mbps

Подготавливаем сервер:
sudo apt-get update
sudo apt-get install clang cmake build-essential pkg-config libssl-dev
Устанавливаем rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Если выскакивает выбор, то вписываем 1 и enter.

Устанавливаем Go:
# Download the Go installer
wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz

# Extract the archive
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz

# Add /usr/local/go/bin to the PATH environment variable by adding the following line to your ~/.profile.
export PATH=$PATH:/usr/local/go/bin
Устанавливаем ноду:
git clone -b v0.5.3 https://github.com/0glabs/0g-storage-node.git
Билдим нашу ноду:
cd 0g-storage-node

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
sed -i 's|^network_boot_nodes = .*|network_boot_nodes = ["/ip4/54.219.26.22/udp/1234/p2p/16Uiu2HAmTVDGNhkHD98zDnJxQWu3i1FL1aFYeh9wiQTNu4pDCgps","/ip4/52.52.127.117/udp/1234/p2p/16Uiu2HAkzRjxK2gorngB1Xq84qDrT4hSVznYDHj6BkbaE4SGx9oS","/ip4/121.43.181.26/udp/1234/p2p/16Uiu2HAm2k6ua2mGgvZ8rTMV8GhpW71aVzkQWy7D37TTDuLCpgmX"]|g' ~/0g-storage-node/run/config.toml
nano $HOME/0g-storage-node/run/config.toml
Вписываем свой приватный ключ:
miner_key = "приватный ключ от кошелька"

Сохраняем все содержимое кнопками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

Установка snapshot

Останавливаем ноду:
sudo systemctl stop zgs
Устанавливаем snapshot:
curl https://server-5.itrocket.net/testnet/og/og_2024-10-27_1669307_snap.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.0gchain
Перемещаем файл:
mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
Запускаем ноду:
sudo systemctl restart zgs && sudo journalctl -u 0gchaind -f
Проверяем блоки (вставлять команду целиком):
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