# 0G Labs. Устанавливаем ноду

By [CryptoFortochka](https://paragraph.com/@sosew) · 2024-04-10

---

[**CryptoFortochka**](https://t.me/cryptoforto) — гайды, ноды, новости, тестнеты

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

*   **Инвестировали:** $35 000 000
    
*   **Инвесторы:** Hack VC, Delphi Digital, Animoca Brands, OKX и другие
    
*   **Характеристики:** 4CPU/8RAM/500SSD — **рекомендованные**
    
*   **Арендовать сервер:** [XorekCloud](https://xorek.cloud/?from=4767)**,** [AEZA](https://aeza.net/?ref=379357) , [Hetzner](https://accounts.hetzner.com/) , [PqHosting](https://pq.hosting/?from=540715) , [VDsina](https://vdsina.ru/?partner=ec75ts1brd), [Contabo](https://contabo.com/en/vps/)
    
*   **Надежные прокси и антик:** [Proxyline](https://proxyline.net/?ref=273183%2F) / [Travchisproxies](https://travchisproxies.com/billing/aff.php?aff=47) / [Dolphin](https://dolphin-anty.com/a/39233)
    
*   **Чат с поддержкой:** [https://t.me/fortochat](https://t.me/fortochat)
    
*   **Ubuntu:** 20.04
    

Проект появился на радаре еще около 1 месяца назад, после инвестиции в **$35M** от **тир1** фондов, а уже сегодня они запускают оплачиваемый тестнет на **Galxe** — первая неделя. Еще можно поставить ноду, который будет также оплачиваемая, об этом активно пишут модеры в дискорде

Расписал для вас понятный гайд с установкой ноды, ставиться просто, сервак советую брать (минимум как требуется в рекомендации), чтобы избежать дальнейшие траблы с синхронизацией.

На [**XorekCloud**](https://xorek.cloud/?from=4767) арендовать подходящий сервер за **1399** рублей в месяц

![](https://storage.googleapis.com/papyrus_images/469c78e1135077fb42dde8bea5226785e6d119cd34a885542c7687f3e02af6a8.png)

> _Не забываем ежедневно запрашивать токены с крана и делегировать_

**_Советую начать проявить активность в дискорде, там сейчас маленькая конкуренция, пока еще больше людей не набежало_**

**Что делать?**
===============

*   Устанавливаем [**MobaXterm**](https://mobaxterm.mobatek.net/)
    

![](https://storage.googleapis.com/papyrus_images/b847e547214c058d23fb762c95625282a6d9179fa423eaadf39fa34d9732d427.png)

*   Подключаемся на арендованный сервер через **root**
    
*   Выполняем команды по списку
    
*   Обновляем и устанавливаем необходимые пакеты
    

    sudo apt update
    sudo apt install curl git jq build-essential gcc unzip wget lz4 -y
    

![](https://storage.googleapis.com/papyrus_images/dff3f485e5022b96de91974701d8e66a7a203876a5d423cc65488cb5f47c699a.png)

*   Устанавливаем **GO**
    

    cd $HOME && \
    ver="1.21.3" && \
    wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
    sudo rm -rf /usr/local/go && \
    sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
    rm "go$ver.linux-amd64.tar.gz" && \
    echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
    source $HOME/.bash_profile && \
    go version
    

*   Ставим бинарик
    

    git clone -b v0.1.0 https://github.com/0glabs/0g-chain.git
    ./0g-chain/networks/testnet/install.sh
    source .profile
    

![](https://storage.googleapis.com/papyrus_images/50c28664d82d225f18b45f1e2b0fc3e0bb9858bfc0b462d7f4804c4f161a2c1c.png)

*   Настраиваем переменные
    

    echo 'export MONIKER="type_your_moniker_nodebrand"' >> ~/.bash_profile
    echo 'export CHAIN_ID="zgtendermint_16600-1"' >> ~/.bash_profile
    echo 'export WALLET_NAME="wallet"' >> ~/.bash_profile
    echo 'export RPC_PORT="26657"' >> ~/.bash_profile
    source $HOME/.bash_profile
    

*   Инициализируем ноду
    

    cd $HOME
    0gchaind config chain-id $CHAIN_ID
    0gchaind init $MONIKER --chain-id $CHAIN_ID
    0gchaind config node tcp://localhost:$RPC_PORT
    0gchaind config keyring-backend os
    

*   Устанавливаем релиз
    

    wget -P ~/.0gchain/config https://github.com/0glabs/0g-chain/releases/download/v0.1.0/genesis.json
    

*   Добавляем сиды и пиры в **config.toml**
    

    PEERS="" && \
    SEEDS="c4d619f6088cb0b24b4ab43a0510bf9251ab5d7f@54.241.167.190:26656,44d11d4ba92a01b520923f51632d2450984d5886@54.176.175.48:26656,f2693dd86766b5bf8fd6ab87e2e970d564d20aff@54.193.250.204:26656,f878d40c538c8c23653a5b70f615f8dccec6fb9f@54.215.187.94:26656" && \
    sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.0gchain/config/config.toml
    

*   Ставим конфиг
    

    EXTERNAL_IP=$(wget -qO- eth0.me) \
    PROXY_APP_PORT=26658 \
    P2P_PORT=26656 \
    PPROF_PORT=6060 \
    API_PORT=1317 \
    GRPC_PORT=9090 \
    GRPC_WEB_PORT=9091
    

*   Ставим порт, пуринг, газ прайс
    

    sed -i \
        -e "s/\(proxy_app = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$PROXY_APP_PORT\"/" \
        -e "s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$RPC_PORT\"/" \
        -e "s/\(pprof_laddr = \"\)\([^:]*\):\([0-9]*\).*/\1localhost:$PPROF_PORT\"/" \
        -e "/\[p2p\]/,/^\[/{s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$P2P_PORT\"/}" \
        -e "/\[p2p\]/,/^\[/{s/\(external_address = \"\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$P2P_PORT\"/; t; s/\(external_address = \"\).*/\1${EXTERNAL_IP}:$P2P_PORT\"/}" \
        $HOME/.0gchain/config/config.toml
    

    sed -i \
        -e "/\[api\]/,/^\[/{s/\(address = \"tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$API_PORT\4/}" \
        -e "/\[grpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$GRPC_PORT\4/}" \
        -e "/\[grpc-web\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$GRPC_WEB_PORT\4/}" $HOME/.0gchain/config/app.toml
    

    sed -i.bak -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.0gchain/config/app.toml
    sed -i.bak -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.0gchain/config/app.toml
    sed -i.bak -e "s/^pruning-interval *=.*/pruning-interval = \"10\"/" $HOME/.0gchain/config/app.toml
    

    sed -i "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0ua0gi\"/" $HOME/.0gchain/config/app.toml
    

    sed -i "s/^indexer *=.*/indexer = \"kv\"/" $HOME/.0gchain/config/config.toml
    

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

    sudo tee /etc/systemd/system/ogd.service > /dev/null <<EOF
    [Unit]
    Description=OG Node
    After=network.target
    
    [Service]
    User=$USER
    Type=simple
    ExecStart=$(which 0gchaind) start --home $HOME/.0gchain
    Restart=10
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

*   Запускам ноду
    

    sudo systemctl daemon-reload && \
    sudo systemctl enable ogd && \
    sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat
    

*   Ждём немного и побегут хейты (чтобы выйти из логов, прожимаем **Cntr+C**)
    

![](https://storage.googleapis.com/papyrus_images/8ee82412e43af612dcdb0ea005da12c6858232be53c0850f764761cd8573d7ed.png)

> _Если у вас ошибки, при проверки логов, то жмём_ **_Cntrc+C, и дальше продолжаем по гайду_**

*   Устанавливаем **Spanshot, addrbook, update peers**
    

    curl -Ls https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/addrbook.json > $HOME/.0gchain/config/addrbook.json
    

    PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/peers.txt")
    if [ -z "$PEERS" ]; then
        echo "No peers were retrieved from the URL."
    else
        echo -e "\nPEERS: "$PEERS""
        sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.0gchain/config/config.toml"
        echo -e "\nConfiguration file updated successfully.\n"
    fi
    

    sudo systemctl stop ogd
    cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
    rm -rf $HOME/.0gchain/data
    curl -L http://snapshots.liveraven.net/snapshots/testnet/zero-gravity/zgtendermint_16600-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.0gchain
    mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
    sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat
    

> _Ждём немного времени и побегут хейты_

*   Проверяем командой, если пишет **false** — значит нода синхронизировалась, можно продолжать создание валидатора
    
*   Если статус **true** — значит еще рано (Но, можно установить снепшот
    
*   В логах мы можем увидеть количество хейт и сравнить с [**Explorer**](https://dashboard.nodebrand.xyz/0g-chain)
    

![](https://storage.googleapis.com/papyrus_images/d7eaceea30397834ebd046918e0d6bcf1ea9c64e3a2678478c8e3aea5b6b290e.png)

*   Блоки должны быстрее дойти, в статуcе будет писаться **false**
    

![](https://storage.googleapis.com/papyrus_images/d0962212f7fddf53d149257d2a58020321c139aefa070a6777627bdd204467db.png)

**Создаем валидатора**
======================

*   Создаем кошелек для нашего валидатора
    

    0gchaind keys add $WALLET_NAME --eth
    

*   Если уже ранее создали кошелек, то импортируйте по сидке с помощью этой команды
    

    0gchaind keys add --recover $WALLET_NAME --eth
    

*   Вставляем пароль (Не вписывать, а заранее скопируйте пароль и **вставьте** его в **белый квадратик** + **Enter**)
    

![](https://storage.googleapis.com/papyrus_images/a6c0217ff64d1787a40d85e12898efaa5e1e79dd062412545fa5e2ed4732d81b.png)

*   Нам выдаст наш кошелек с сидкой — сохраняем в надежное место
    

![](https://storage.googleapis.com/papyrus_images/4c308833b6eb28bc1cd8fe7f5095665c3894553125123ffcfd6ea89c8b91ed14.png)

*   Запрашиваем Private key от нашего **EVM** адреса
    

    0gchaind keys unsafe-export-eth-key $WALLET_NAME
    

![](https://storage.googleapis.com/papyrus_images/d26a9388a59b95e8c19eb88f660cac358812962de2a4b5fa3f77713a66ef43e6.png)

*   Если вы подтвердили **адрес, как показано в выводе выше, скопируйте его и импортируйте в метамаск**
    

![](https://storage.googleapis.com/papyrus_images/9ddc52e2607a067c73b69afba29ac0dfd3b1c0f03fdd932ecd2104bbb95dcfda.png)

*   Отправляемся к [**крану**](https://faucet.0g.ai/) и запрашиваем тестовые токены
    

![](https://storage.googleapis.com/papyrus_images/6c65a01399866b2d98fb8cf5cc089fdd2e866dda3831766963dc0df33adac462.png)

*   Проверяем баланс в терминале
    

    0gchaind q bank balances $(0gchaind keys show $WALLET_NAME -a)
    

![](https://storage.googleapis.com/papyrus_images/1bca81a524f60b79a8a90308625f27e91cd7c72cceaf7fc1d98032ece159bf0d.png)

_Кран дает вам_ **_1000000ua0gi_** _. Чтобы валидатор присоединился к активному набору нужно минимум_ **_10000000ua0gi_** _(в 10 раз больше)_

*   Создаем валидатора
    
*   Можно заменить на свои значение **moniker, details, website**
    

      0gchaind tx staking create-validator \
      --amount=200000ua0gi \
      --pubkey=$(0gchaind tendermint show-validator) \
      --moniker="$MONIKER" \
      --chain-id=zgtendermint_16600-1 \
      --commission-rate="0.10" \
      --commission-max-rate="0.20" \
      --commission-max-change-rate="0.01" \
      --details="CryptoFortochka" \
      --min-self-delegation="1" \
      --from=$WALLET_NAME \
      --gas=auto \
      --gas-adjustment=1.4
    

*   Копируем **valoperaddress**
    

![](https://storage.googleapis.com/papyrus_images/9a88807d758734a584b02d2a54f3c4fecf53c27417b4fceca5b2b248f29de75b.png)

*   Делегируем токены самому себе
    

    0gchaind q staking validator $(0gchaind keys show $WALLET_NAME --bech val -a)
    

![](https://storage.googleapis.com/papyrus_images/b175bda057740f9141f09991bbd4fdd4325ba49b3e270208c4d44d5394694e39.png)

*   Делегируем другому валидатору
    

    0gchaind tx staking delegate <validator address> --from <wallet> <amount>ua0gi --gas=auto --gas-adjustment=1.4 -y
    

*   Проверяем транзакции в [**Explorer**](https://dashboard.nodebrand.xyz/0g-chain)
    
*   Делегируем в наш пул — CryptoFortochka (500000ua0gi можете заменить на любую сумму)
    

    0gchaind tx staking delegate 0gvaloper1kj97fy0n00g5vmenp0cla3hjehgu2usucdj9nr --from $WALLET_NAME 500000ua0gi --gas=auto --gas-adjustment=1.4 -y
    

> _Буду благодарен, если вы будете делегировать свои токены в наш пул. Все обновление буду в моем телеграм канале_ [**_Crypto Fortochka_**](https://t.me/cryptoforto)

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

*   Посмотреть логи
    

    sudo journalctl -u ogd -f -o cat
    

*   Проверить статус синхронизации
    

    0gchaind status | jq .sync_info
    

*   Рестарт
    

*   Удалить ноду
    

    sudo systemctl stop ogd
    sudo systemctl disable ogd
    sudo rm /etc/systemd/system/ogd.service
    rm -rf $HOME/.0gchain $HOME/0g-chain
    

*   Заполняем [**форму**](https://docs.google.com/forms/d/e/1FAIpQLScsa1lpn43F7XAydVlKK_ItLGOkuz2fBmQaZjecDn76kysQsw/viewform?ts=6617a343) на валидатора (**всего 125 мест**)
    

![](https://storage.googleapis.com/papyrus_images/685ef0cc9d40de8f8fbb1ccc36f99d8b7ebf062a2e3800f72d9f9fb8a3abd3ad.png)

*   [**Телеграм канал с гайдами**](https://t.me/cryptoforto)
    
*   [**DeBank Profile**](https://debank.com/profile/0x05bb279648e4e4cbcdecf2d4d6ec310999d444e7?t=1696236908255&r=994)

---

*Originally published on [CryptoFortochka](https://paragraph.com/@sosew/0g-labs)*
