0G Labs. Участвуем в оплачиваемом тестнете и ставим ноду
0G — это модульный AI чейн, содержащий масштабируемый программируемый уровень доступности данных (DA), специально разработанный для прикладных программ ИИ.
Собрали $35 млн. инвестиций от Hack VC, Delphi Digital, Animoca Brands, OKX Ventures и других.
Не так давно (09.04) 0G Labs анонсировали свой тестнет.
По информации в дискорде, тестнет будет награждаемый.
📝 Инструкция к тестнету
- Следим за заданиями на Galxe (на данный момент квестов нету, но они будут).
- Устанавливаем ноду
💻Как установить ноду проекта?
1. В первую очередь нужен VPS сервер, который мы сможем арендовать на Contabo
Сервер нам нужен такой, чтобы потянул требования к этой ноде, а именно:
Вот этого сервера CLOUD VPS 2 нам должно хватить, но требования могут меняться, по этому по желанию можно взять с запасом за €14 в месяц.
При аренде сервера, выбирайте тип хранилища SSD.
Для тех, кто ранее не арендовал сервера, расскажу про оплату (то, что выделено на скриншоте снизу):
- Monthly €9.50 - сумма, которая будет списываться ежемесячно, пока вы арендуете сервер
- One-Time Setup Fee €7.50 - сумма, которую нужно оплатить в первый раз установки сервера, далее она не будет списываться
- Due Today €17.00 - общая сумма, которая нужно оплатить за установку и аренду сервера.
Все остальное оставьте по дефолту, в пункте 5 придумайте и сохраните свой пароль, тыкайте на Next и приступайте к оплате.
2. После того, как вы арендовали сервер, нам нужен терминал. Я использую MobaXterm и вам советую
- В поле Remote host вписываем IP сервера, который нам выдал Contabo, ставим на галочку возле Specify username и вводим имя root Нажимаем на OK, далее вписываем пароль, который вы придумывали на Contabo
3. Заполняем форму на полноценного валидатора. Выберут примерно 125 валидаторов, которым команда заделегирует свои токены. Если вы ставили ноду ранее, вводите старый адрес, если нет - новый.
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
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
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
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
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
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
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
Сохраняем у себя этот приватный ключ
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
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
Полезные команды
sudo journalctl -u ogd -f -o cat
2. Проверить статус синхронизации:
0gchaind status | jq .sync_info
sudo systemctl restart ogd
sudo systemctl stop ogd sudo systemctl disable ogd sudo rm /etc/systemd/system/ogd.service rm -rf $HOME/.0gchain $HOME/0g-chain
Если у вас будут какие либо вопросы, буду рад видеть вас в тг канале