OG Labs
Описание проекта
- Описание 0G, или ZeroGravity, — ведущий поставщик инфраструктуры Web3, который создает ведущий модульный блокчейн AI, создающий решения для реализации сетевых приложений AI в экосистеме Web3. Платформа обеспечивает высокую доступность данных благодаря своей уникальной архитектуре, разделяющей хранение и публикацию данных. Обеспечивая пропускную способность 50 ГБ/с, что в 50 000 раз выше, чем у конкурентов, и стоимость в 100 раз ниже, 0G позиционирует себя как лидера в области использования больших объемов данных, таких как масштабируемые уровни L2 и модульный искусственный интеллект, в Web3. экосистема.
- 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
- Команда: 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/
- Твиттер скор 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
значит нода полностью синхронизирована и можно переходить к запросу токенов с крана и созданию валидатора
- Создание кошелька, на сервере выполняем команду (пароль должен быть не менее 8 символов, после генерации кошелька, сохраните пароль):
Если вы запускали ранее предыдущую сеть, тогда можно восстановить кошелек по старому мнемонику
0gchaind keys add wallet
Создаем кошелек, если не запускали ранее :
0gchaind keys add wallet
Сохраняем вывод команды (ОБЯЗАТЕЛЬНО сид фразу).
Получаем адрес для запроса токенов:
echo "0x$(0gchaind debug addr $(0gchaind keys show wallet -a) | grep hex | awk '{print $3}')"
Копируем адрес и переходим к запросу токенов в кране
- Запрос токенов (если не получается запросить, повторите попытку несколько раз, так же кран время от времени не работает, учтите это):
Вводим адрес кошелька, проходим капчу. После отправки токенов из крана проверяем баланс:
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
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, так же, что бы проявить активность, загружаем рандомно созданный файл в сеть.
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
Быстрый синк из снепшота (размер 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
Полная синхронизация с блокчейном из снепшота (размер 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
Полная синхронизация с блокчейном из снепшота (размер 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
systemctl stop 0g_storage systemctl disable 0g_storage rm -rf 0g-storage-node/