July 14

OG Labs

Описание проекта

0G

0G Labs (@0G_labs) on X

Join the 0G Discord Server!

0G

  1. Описание 0G, или ZeroGravity, — ведущий поставщик инфраструктуры Web3, который создает ведущий модульный блокчейн AI, создающий решения для реализации сетевых приложений AI в экосистеме Web3. Платформа обеспечивает высокую доступность данных благодаря своей уникальной архитектуре, разделяющей хранение и публикацию данных. Обеспечивая пропускную способность 50 ГБ/с, что в 50 000 раз выше, чем у конкурентов, и стоимость в 100 раз ниже, 0G позиционирует себя как лидера в области использования больших объемов данных, таких как масштабируемые уровни L2 и модульный искусственный интеллект, в Web3. экосистема.
  2. Pre-seed round - $35M https://techcrunch.com/2024/03/26/0g-labs-launches-with-whopping-35m-pre-seed-to-build-a-modular-ai-blockchain/?guccounter=1 https://blog.0g.ai/blog/pre-seed-announcement
  3. Команда: Michael Heinrich - Co**-**Founder https://www.linkedin.com/in/mheinrich/ Ming WU - Co-Founder https://www.linkedin.com/in/ming-wu-7a598b1b/ Thomas Yao - https://www.linkedin.com/in/xiaochaoyao/
  4. Твиттер скор https://coinsguru.io/twitter/doubletop_io/

Установка валидаторской ноды

Для установки ноды подключаемся к серверу и выполняем команду

bash <(curl -s https://raw.githubusercontent.com/DOUBLE-TOP/guides/main/0g/install_validator.sh)

Вводите свое имя ноды и нажимаете Enter

Проверяем логи и ждем полной синхронизации ноды:

tail -f $HOME/.0gchain/log/chain.log
source .profile
0gchaind status | jq .sync_info

Вывод будет такой:

Когда catching_up станет равен false "catching_up": false значит нода полностью синхронизирована и можно переходить к запросу токенов с крана и созданию валидатора

  1. Создание кошелька, на сервере выполняем команду (пароль должен быть не менее 8 символов, после генерации кошелька, сохраните пароль):

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

0gchaind keys add wallet

Создаем кошелек, если не запускали ранее :

0gchaind keys add wallet

Сохраняем вывод команды (ОБЯЗАТЕЛЬНО сид фразу).

Получаем адрес для запроса токенов:

echo "0x$(0gchaind debug addr $(0gchaind keys show wallet -a) | grep hex | awk '{print $3}')"

Копируем адрес и переходим к запросу токенов в кране

  1. Запрос токенов (если не получается запросить, повторите попытку несколько раз, так же кран время от времени не работает, учтите это):

https://faucet.0g.ai/

Вводим адрес кошелька, проходим капчу. После отправки токенов из крана проверяем баланс:

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

Создание валидатора:

source $HOME/.profile

0gchaind tx staking create-validator \
  --amount=100000ua0gi \
  --pubkey=$(0gchaind tendermint show-validator) \
  --moniker="$OG_NODENAME" \
  --chain-id=zgtendermint_16600-2 \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation=10000 \
	--gas=auto \
  --gas-adjustment=1.5 \
  --from=wallet \
  --fees=800ua0gi-fees=800ua0gi

https://testnet.0g.explorers.guru/

Проверка валидатора в експлорере: Узнаем адрес валидатора командой на сервере:

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

После успешного запуска ноды, создания валидатора, переходим к запуску: Установка Storage node

ВАЖНО: Предварительно убедитесь, что у Вас установлена фулл нода/создан валидатор, нода полностью синхронизирована с блокчейном и только после этого устанавливайте Storage node

  1. Для установки ноды подключаемся к серверу и выполняем команду
bash <(curl -s https://raw.githubusercontent.com/DOUBLE-TOP/guides/main/0g/install_storage.sh)

Скрипт проверят есть ли у вас нужный бинарник, если нет то устанавливает его. Далее он спросит хотите ли вы восстановить кошелек или создать новый.

0gchaind q bank balances $(0gchaind keys show wallet2 -a --keyring-backend test)

После этого проверяем логи что все работает:

После этого проверяем логи что все работает (ТАКИЕ ЛОГИ БУДУТ В СЛУЧАЕ, КОГДА ВАША ВАЛИДАТОРСКАЯ НОДА ЗАСИНКАЕТСЯ ДО 401178 БЛОКА, Т.К. МЫ ИСПОЛЬЗУЕМ СВОЮ ВАЛИДАТОРСКУЮ НОДУ КАК RPC ДЛЯ STORAGE NODE):

tail -f ~/0g-storage-node/run/log/*

Полезные команды Сторейж Нод

Чтобы посмотреть адрес EVM кошелька для запроса токенов, выполните команду:

echo "0x$(0gchaind debug addr $(0gchaind keys show wallet2 -a --keyring-backend test) | grep hex | awk '{print $3}')"

Что бы сохранить private key данного EVM адреса:

0gchaind keys unsafe-export-eth-key wallet2 --keyring-backend test

Чтобы выполнить рестарт:

systemctl restart 0g_storage

Проверяем подключенные пиров и высоту блока Storage node (пока нода не синхронизируется Ваши блоки будут отличать от тех, что на скрине):

curl -X POST http://localhost:5678 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"zgs_getStatus","params":[],"id":1}'  | jq

Проверяем отклик json-rpc (это наша валидаторская нода, благодаря которой синхронизируется Storage node, по выводу ориентируемся сколько осталось до полной синхронизации)

curl -s -X POST http://localhost:8545 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' | jq -r '.result' | xargs printf "%d\n"

Storage node cli: upload

ВАЖНО: Предварительно убедитесь, что у Вас установлена фулл нода/создан валидатор, Storage нода полностью синхронизирована с блокчейном и только после этого приступайте:

Для проверки работоспособности нашей Storage node, так же, что бы проявить активность, загружаем рандомно созданный файл в сеть.

Upload file:

bash <(curl -s https://raw.githubusercontent.com/DOUBLE-TOP/guides/main/0g/storage-cli_upload.sh)

Скрипт будет работать до тех пор, пока команда не завершит работу успешно. Вывод, после отработки скрипта:

Копируете хеш транзакции (смотри скрин выше, выделено красным цветом) и можно убедится в том, что транзакция успешная - https://chainscan-newton.0g.ai/

Теперь Вы убедились, что данная нода работает полноценно.

Заполняем форму

Форма - https://docs.google.com/forms/d/e/1FAIpQLScsa1lpn43F7XAydVlKK_ItLGOkuz2fBmQaZjecDn76kysQsw/viewform

Пример:

Адрес валидатора (для заполнения формы - operator_address: 0gvaloper1…………..):

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

Полезные команды Снепшота

  • СНЕПШОТ Так как скачивание снепшотов может длится долго, то мы рекомендуем запускать их в tmux сессии. После выполнения команды у вас откроется сессия терминала, которую вы создали. Вы может отключиться от созданого виртуального термина tmux нажав Ctrl + b, затем d. Данный блок относиться только к командам для скачивания снепшотов. После того как скопировали ссылку, сессию необходимо свернуть, именно свернуть, а не закрыть. Для этого используем комбинацию cntrl + B, отпускаем и нажимаем D. Проверить запущенные сессии - tmux ls Открыть сессию - tmux attach-session -t 0g_snap

Снепшот # 1 (короткий/быстрый)

Быстрый синк из снепшота (размер 2гб / ~ время скач. 10 минут (зависит от состояния сервера) старт в сети - 721841 обновляется каждые 2 часа). Короткое ВАЖНОЕ описание: данный снеп Вы скачиваете и валидаторская нода будет синхронизирована с блокчейном, но учитывая, что это короткий (обрезаный) снеп, в нём не будет хранится вся история, а только лишь последние несколько тысяч блоков. Скачав этот снеп Вы не сможете использовать RPC данного валидатора для запуска Сторейдж ноды. В таком случае Вам прийдётся взять RPC другой своей, синхронизированной ноды, либо искать паблик RPC (трудно найти рабочую и стабильную). Если у Вас есть одна/несколько самостоятельно синхронизированных нод (имеющих всю историю блокчейна), тогда это хороший вариант для того, что бы синхронизировать ноды, которые не могут самостоятельно догнать сеть, этим коротким снепом, а в качестве RPC для Сторейдж ноды использовать IP_addres полностью синхронизированной ноды (пример: http://127.37.32.55:8545)

sudo apt install lz4 -y
sudo systemctl stop 0g
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
0gchaind tendermint unsafe-reset-all --home $HOME/.0gchain --keep-addr-book
curl https://server-5.itrocket.net/testnet/og/og_2024-08-26_814331_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 0g
rm -f og_2024-08-26_814331_snap.tar.lz4 

Снепшот # 2 (фулл синк/долгое скачивание)

Полная синхронизация с блокчейном из снепшота (размер 90+гб / ~ min время скач. 2 часа (зависит от состояния сервера и загрузки), обновляется каждые 12 часов: Короткое ВАЖНОЕ описание: в отличие от короткого снепа, скачав этот у Вас будет полная история и Вы легко сможете использовать RPC своего валидатора для работы Сторейдж ноды. По сути скачав этот снеп, Вам ничего менять не нужно, Сторейдж нода так же будет работать как и раньше от Вашей RPC.

Создать сессию:

tmux new-session -d -s 0g_snap

Зайти в сессию:

tmux attach-session -t 0g_snap

Выполняем команды:

source $HOME/.profile
sudo apt-get install wget lz4 aria2 pv -y
sudo systemctl stop 0g

Делаем бекап и сбрасываем ДБ:

cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
0gchaind tendermint unsafe-reset-all --home $HOME/.0gchain --keep-addr-book

Скачиваем снеп (может выскакивать вывод No snapshot found - пробуйте повторно, несколько раз):

cd $HOME
rm -f 0gchain_snapshot.lz4
if curl -s --head https://vps5.josephtran.xyz/0g/0gchain_snapshot.lz4 | head -n 1 | grep "200" > /dev/null; then
    echo "Snapshot found, downloading..."
    aria2c -x 16 -s 16 https://vps5.josephtran.xyz/0g/0gchain_snapshot.lz4 -o 0gchain_snapshot.lz4
else
    echo "No snapshot found."
fi

Извлекаем снепшот:

lz4 -dc 0gchain_snapshot.lz4 | pv | tar -xf - -C $HOME/.0gchain

После успешного извлечения возвращаем бекап обратно и делаем рестарт:

mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
sudo systemctl restart 0g

Удаляем снепшот:

cd $HOME
rm 0gchain_snapshot.lz4

Снепшот # 3 (если не работает снеп#2 можно пробовать этот)

Полная синхронизация с блокчейном из снепшота (размер 95гб / ~ min время скач. 2 часа (зависит от состояния сервера и загрузки): Короткое ВАЖНОЕ описание: в отличие от короткого снепа, скачав этот у Вас будет полная история и Вы легко сможете использовать RPC своего валидатора для работы Сторейдж ноды. По сути скачав этот снеп, Вам ничего менять не нужно, Сторейдж нода так же будет работать как и раньше от Вашей RPC.

Создать сессию:

tmux new-session -d -s 0g_snap

Зайти в сессию:

tmux attach-session -t 0g_snap

Выполняем команды:

source $HOME/.profile
sudo apt-get install wget lz4 aria2 pv -y
sudo systemctl stop 0g
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
0gchaind tendermint unsafe-reset-all --home $HOME/.0gchain --keep-addr-book

Скачиваем и распаковываем снеп:

cd $HOME
rm -f 0gchain_snapshot.lz4

aria2c -x 16 -s 16 https://testnet-v2-0g-snapshot.emberstake.xyz/latest.tar.lz4 -d $HOME/.0gchain -o 0gchain_snapshot.lz4 && \
tar -Ilz4 -xf $HOME/.0gchain/0gchain_snapshot.lz4 -C $HOME/.0gchain && \
rm $HOME/.0gchain/0gchain_snapshot.lz4

После успешного скачивания:

mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
sudo systemctl restart 0g

cd $HOME
rm 0gchain_snapshot.lz4

Если нода не запускает синхронизацию и летит в логах сплошное полотно ошибок, обновляем аддрбук:

sudo systemctl stop 0g && curl -s https://snapshots-testnet.nodejumper.io/0g-testnet/addrbook.json > $HOME/.0gchain/config/addrbook.json && sudo systemctl restart 0g
  • Рестарт sudo systemctl restart 0g
  • Остановка sudo systemctl stop 0g
  • Проверка логов tail -f $HOME/.0gchain/log/chain.log Проверить адрес кошелька: 0gchaind keys list
  • Удаление\Восстановление кошелька, если забыли пароль шифрования
rm -f $HOME/.0gchain/keyring-file/*

0gchaind keys add wallet --recover

Выход из тюрьмы

0gchaind tx slashing unjail --from wallet --gas-prices 0.15ua0gi --gas-adjustment 1.5 --gas auto -y

Отправить токены с одного адреса на другой:

0gchaind tx bank send $WALLET_NAME <TO_WALLET> <AMOUNT>ua0gi --gas-prices 0.15ua0gi --gas-adjustment 1.5 --gas auto -y

Добавление делегации своему валидатору

0gchaind tx staking delegate $(0gchaind keys show wallet --bech val -a) 100000ua0gi --from wallet --chain-id zgtendermint_16600-2 --gas-prices 0.15ua0gi --gas-adjustment 1.5 --gas auto -y

где вместо <AMOUNT> подставляем желаемое количество для добавления в делегацию из доступного баланса. Проверка баланса командой: 0gchaind q bank balances $(0gchaind keys show wallet -a)

  • Перенос на другой сервер На старом сервере:
sudo systemctl stop 0g && sudo systemctl disable 0g

Далее на новом сервере устанавливаем первой командой из гайда установки с тем же именем ноды, синхронизируем ноду с б/ч а затем на сервер через SFTP в Termius переносим со старого на новый сервер файл (заменяя новосозданный ) $HOME/.0gchain/config/priv_validator_key.jsonи на новом сервере выполняем команду

sudo systemctl restart 0g

Удаление ноды

Удаляем старую ноду в старой сети evmosd:

sudo systemctl disable 0g

sudo systemctl stop 0g

rm -rf $HOME/.evmosd

rm -rf $HOME/0g-evmos-evmos

Удаляем если запускали в новой сети Kava (от 20.05.24)

sudo systemctl disable 0g

sudo systemctl stop 0g

rm /etc/systemd/system/0g.service

rm -f $(which 0gchaind)

rm -rf $HOME/.0gchain

rm -rf $HOME/0g-chain-chain

Удалить Storage node:

systemctl stop 0g_storage

systemctl disable 0g_storage

rm -rf 0g-storage-node/