May 11

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

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

Собрали $35 млн. инвестиций от Hack VC, Delphi Digital, Animoca Brands, OKX Ventures и других.

Links:

  1. Web-site
  2. Twitter
  3. Discord
  4. Telegram
  5. Github

Не так давно (09.04) 0G Labs анонсировали свой тестнет.

По информации в дискорде, тестнет будет награждаемый.

📝 Инструкция к тестнету

  1. Следим за заданиями на Galxe (на данный момент квестов нету, но они будут).
  2. Устанавливаем ноду

💻Как установить ноду проекта?

1. В первую очередь нужен VPS сервер, который мы сможем арендовать на Contabo

Сервер нам нужен такой, чтобы потянул требования к этой ноде, а именно:

  • Memory: 8 GB RAM
  • CPU: 4 cores
  • Disk: 500 GB NVME / SSD
  • Bandwidth: 100mbps Gbps for Download / Upload

Вот этого сервера CLOUD VPS 2 нам должно хватить, но требования могут меняться, по этому по желанию можно взять с запасом за €14 в месяц.

При аренде сервера, выбирайте тип хранилища SSD.

Для тех, кто ранее не арендовал сервера, расскажу про оплату (то, что выделено на скриншоте снизу):

  • Monthly €9.50 - сумма, которая будет списываться ежемесячно, пока вы арендуете сервер
  • One-Time Setup Fee €7.50 - сумма, которую нужно оплатить в первый раз установки сервера, далее она не будет списываться
  • Due Today €17.00 - общая сумма, которая нужно оплатить за установку и аренду сервера.

Все остальное оставьте по дефолту, в пункте 5 придумайте и сохраните свой пароль, тыкайте на Next и приступайте к оплате.

2. После того, как вы арендовали сервер, нам нужен терминал. Я использую MobaXterm и вам советую

  • Устанавливаем его и запускаем
  • Слева сверху тыкаем на Session
  • Выбираем SSH
  • В поле Remote host вписываем IP сервера, который нам выдал Contabo, ставим на галочку возле Specify username и вводим имя root Нажимаем на OK, далее вписываем пароль, который вы придумывали на Contabo

3. Заполняем форму на полноценного валидатора. Выберут примерно 125 валидаторов, которым команда заделегирует свои токены. Если вы ставили ноду ранее, вводите старый адрес, если нет - новый.

Дедлайн - 14 мая

4. Важный момент, на днях 0G перешли на новую сеть Kava, по этому для тех, кто держал ноду ранее, нужно удалить ее и установить заново. Если вы не держали ноду 0G, пропустите пункт 4 и переходите сразу на пункт 5.

Для того, чтобы удалить ноду, введите следующие команды в свой терминал:

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

5. Далее просто копируйте команды и вставляйте в свой терминал (чтобы вставить команду - используйте ПКМ). Я буду прикреплять скриншотами, как должно высвечиваться в терминале

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

6.

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

7.

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

8.

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

9.

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

10.

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

11.

PEERS="" && \
SEEDS="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656" && \
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.0gchain/config/config.toml

12.

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

13.

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

14.

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

15. Запускаем ноду

sudo systemctl daemon-reload && \
sudo systemctl enable ogd && \
sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat
  • Если вы видите такую ошибку, игнорируем и нажимаем Ctrl + C, переходим к пункту 15
  • Если у вас пошли логи, тоже все ок

16. Устанавливаем Snapshot, 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

Ожидаем загрузку, прожимаем Enter

Далее у вас должны пойти логи:

Ожидаем +- 10 минут и должны появиться уже логи с height, как показано на скрине:

17. Прожимаем Ctrl + C и проверяем статус синхронизации ноды командой:

evmosd status | jq .SyncInfo

Если вы увидите false, то все ок и нода полностью синхронизовалась

Если вместо false, у вас будет true, тогда ожидаем далее.

Блоки должны синхронизоваться с блоками на Explorer

18. Создаем валидатора

  • Если ранее вы не создавали кошелек:
0gchaind keys add $WALLET_NAME --eth
  • Если у вас уже есть кошелек (после команды вписываем свою сидку и пароль):
0gchaind keys add --recover $WALLET_NAME --eth

Сохраняем у себя данные, которые нам выдаст терминал:

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

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

Нажимаем Y и enter

Сохраняем у себя этот приватный ключ

20. Переходим к метамаску и импортируем его

21. Открываем кран и запрашиваем токены на адрес мм, который мы получили

22. Проверяем баланс в терминале:

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

23. Кран дает вам 1000000ua0gi

Для того, чтобы попасть в активный сет валидаторов, вам нужно попасть в топ-125 валидаторов по количеству делегированных токенов. Топ можно посмотреть тут.

В целом, без стороннего вмешательства, скорее всего в этот топ мы не попадем, так как команда выберет примерно 125 валидаторов по форме, которым она делегирует свои токены.

24. Создаем валидатора (по желанию можно заменить details):

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="whereismymoney" \
 --min-self-delegation="1" \
 --from=$WALLET_NAME \
 --gas=auto \
 --gas-adjustment=1.4

Сохраняем validator_address

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

Меняем <your wallet> и <amount> под себя

0gchaind tx staking delegate $(0gchaind keys show <your wallet> --bech val -a)  <amount>ua0gi --from <yourwallet> --gas=auto  --gas-adjustment=1.4 -y

Не забываем, что баланс смотрим командой:

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

По этому сумму делегирования редактируйте под ту, которая вам нужна.

Свой валидатор и количество заделегированых токенов, смотрим по ссылке (В конце ссылки замените validatoraddress на адрес своего валидатора)

https://cosmos-testnet.anatolianteam.com/0G/staking/validatoraddress

Полезные команды

1. Посмотреть логи:

sudo journalctl -u ogd -f -o cat

2. Проверить статус синхронизации:

0gchaind status | jq .sync_info

3. Рестарт

sudo systemctl restart ogd

4. Удалить ноду

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

Если у вас будут какие либо вопросы, буду рад видеть вас в тг канале