UOMI
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
UOMI - это блокчейн-платформа, разработанная для экосистем Polkadot и Ethereum, поддерживающая смарт-контракты Wasm и EVM. Окунитесь в новую эру децентрализованных экономических агентов, управляемых искусственным интеллектом
В данном руководстве будет описан процесс запуска валидатора
✅Тестовая сеть UOMI Finney Incentivized Testnet запущена
50 000 000 токенов $UOMI выделены для вознаграждения операторов нод, начиная с этой тестовой сети!
Валидаторы являются ядром экосистемы UOMI, обеспечивая производство блоков, вычисления ИИ и кросс-чейн взаимодействие. Запуская ноду валидатора Вы активно вносите вклад в рост сети, а токены $UOMI являются поощрениями за Ваше участие
Подготовка сервера
# обновляем репозитории apt update && apt upgrade -y # устанавливаем необходимые утилиты apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev libclang-dev -y
sudo apt-get install linux-headers-$(uname -r) distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g') wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get -y install cuda-drivers --- curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit --- sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker nvidia-smi #nvcc --version
AI работает на порту 8888 # валидатор ufw allow 30333 comment p2p ufw allow 9944 comment rpc ufw allow 9615 comment prometheus
apt install software-properties-common -y add-apt-repository ppa:deadsnakes/ppa # нажимаем ентер apt install python3.10 python3.10 --version #
Установка AI
git clone https://github.com/Uomi-network/uomi-node-ai
mkdir -p /root/miniconda3/ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /root/miniconda3/miniconda.sh chmod +x /root/miniconda3/miniconda.sh bash /root/miniconda3/miniconda.sh -b -u -p /root/miniconda3
tmux new-session -s miniconda3
# Чтобы инициализировать Miniconda, запускаем сценарий активации source /root/miniconda3/etc/profile.d/conda.sh # создать новую среду conda conda create -n uomi-ai python=3.10 -y # активируем conda activate uomi-ai
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia # убедиться, что PyTorch CUDA установлен правильно python -c "import torch; print(torch.cuda.is_available())" #True # установим CUDA toolkit и компилятор NVCC conda install -c nvidia/label/cuda-12.1.0 cuda-nvcc=12.1 cuda-toolkit=12.1 nvcc --version
Устанавливаем дополнительные зависимости
conda install numpy=1.24 pip install flask pip install psutil pip install transformers pip install 'accelerate>=0.26.0' pip install autoawq pip install 'triton==3.2.0' pip install diffusers
nano /etc/systemd/system/uomi-ai.service
[Unit] Description=UOMI AI API Server After=network.target [Service] User=root WorkingDirectory=/root/uomi-node-ai ExecStart=/bin/bash -c "source /root/miniconda3/etc/profile.d/conda.sh && conda activate uomi-ai && python3 uomi-ai.py" Restart=always RestartSec=10 TimeoutSec=30 StartLimitIntervalSec=500 StartLimitBurst=5 [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl enable uomi-ai.service systemctl restart uomi-ai.service && journalctl -u uomi-ai.service -f
Настраиваем ноду валидатора
Создаем каталог для базы данных валидатора
mkdir -p $HOME/uomi
wget -O /usr/local/bin/genesis.json "https://github.com/Uomi-network/uomi-node/releases/download/v0.1.7/genesis.json" chmod +x /usr/local/bin/genesis.json sha256sum /usr/local/bin/genesis.json #ac62c78e9465fdb25fce6e98138fd497089042785ac4bac70d75d379efddfb49
wget -O /usr/local/bin/uomi "https://github.com/Uomi-network/uomi-node/releases/download/v0.2.0/uomi_ubuntu_24" chmod +x /usr/local/bin/uomi uomi --version #uomi 0.2.0-cb36b469c43
Создаем кошелек и сохраняем вывод
uomi key generate --scheme Sr25519
# пример вывода #Secret phrase: tackle rebuild neither turn degree real capital armed giraffe novel resist human #Network ID: substrate #Secret seed: 0x5c9499827e606bcf284e8a650a96ce13ebf0484bd64a280507ff96d99da6e174 #Public key (hex): 0x14ceec080a6aa464b4235dd951a85669d25e4fa659578f01a7a7dc5c95454931 #Account ID: 0x14ceec080a6aa464b4235dd951a85669d25e4fa659578f01a7a7dc5c95454931 #Public key (SS58): 5CXzHQ3DmYKemRAyY6NPyKsDWiChbeeKtxW3q5RWpmdUQvdR #SS58 Address: 5CXzHQ3DmYKemRAyY6NPyKsDWiChbeeKtxW3q5RWpmdUQvdR
Обязательно сохраните вывод кошелька. Данные нам понадобятся позже
Генерируем ключ Ed25519 для GRANDPA, используя свою сид фразу полученную выше
uomi key inspect --scheme Ed25519 "<YOU_SEED>"
Обязательно сохраните вывод после данной команды. Данные нам понадобятся позже
nano /etc/systemd/system/uomi.service
[Unit] Description=Uomi Node After=network.target StartLimitIntervalSec=0 [Service] Type=simple User=root Group=root Restart=always RestartSec=10 LimitNOFILE=65535 ExecStart=/usr/local/bin/uomi \ --validator \ --name "<MONIKER>" \ --chain "/usr/local/bin/genesis.json" \ --base-path "/root/uomi" \ --state-pruning 1000 \ --blocks-pruning 1000 \ --enable-evm-rpc \ --rpc-cors all \ --prometheus-external \ --telemetry-url "wss://telemetry.polkadot.io/submit/ 0" # Hardening ProtectSystem=strict PrivateTmp=true PrivateDevices=true NoNewPrivileges=true ReadWritePaths=/root/uomi [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl enable uomi.service systemctl restart uomi.service && journalctl -u uomi.service -f
ВАЖНО - если нода не может подцепиться к пирам, то добавьте в сервисный файл резервный пир
--reserved-nodes "/ip4/5.9.87.231/tcp/30333/p2p/12D3KooWCAChuDHHpNER855r6NpAGDeLrSZ4U3sP6FocSWWJZDf5"
Как только Ваша нода будет запущена, вставьте свои ключи
ВНИМАНИЕ - замените SECRET_PHRASE и PUBLIC KEY (hex) Вашими данными, полученными с помощью первой команды "key generate --scheme Sr25519"
for key_type in babe imon uomi ipfs; do curl -H "Content-Type: application/json" \ -d '{"id":1, "jsonrpc":"2.0", "method":"author_insertKey", "params":["'$key_type'", "SECRET_PHRASE", "PUBLIC_KEY"]}' \ http://localhost:9944 done
ВНИМАНИЕ - замените SECRET_PHRASE и PUBLIC KEY (hex) Вашими данными, полученными с помощью второй команды "key inspect --scheme Ed25519"
curl -H "Content-Type: application/json" \ -d '{"id":1, "jsonrpc":"2.0", "method":"author_insertKey", "params":["gran", "SECRET_PHRASE", "PUBLIC_KEY"]}' \ http://localhost:9944
Наконец после того как нода будет полностью синхронизирована выполните следующую команду для создания сеансовых ключей при создании валидатора в polkadot js на сайте https://subexp.uomi.ai/#/staking/actions Необходимо выбрать раздел validator - кошелек - комиссию и вставить полученный ключ
curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9944
Snapshot
# останавливаем ноду systemctl stop uomi # удаляем базу данных. При необходимости измените путь на свой rm -r $HOME/uomi/chains/uomi/db/ # скачиваем snapshot. При необходимости измените путь на свой curl -o - -L https://share102.utsa.tech/uomi/uomi_testnet.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/uomi/chains/uomi/ # перезагружаем ноду systemctl restart uomi && journalctl -u uomi -f -o cat
Полезные команды
# проверить логи journalctl -u uomi.service -f journalctl -u uomi-ai.service -f
# delete AI systemctl stop uomi-ai systemctl disable uomi-ai rm /etc/systemd/system/uomi-ai.service systemctl daemon-reload cd rm -r uomi-node-ai # delete node systemctl stop uomi systemctl disable uomi rm /etc/systemd/system/uomi.service systemctl daemon-reload cd rm -r uomi
# Проверка конечной точки RPC curl -H "Content-Type: application/json" \ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \ http://localhost:9944
# узнать свой peer curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "system_localPeerId"}' http://localhost:9944 #{"jsonrpc":"2.0","result":"12D3KooWBTu7oEJzsyxEtuc1ktnuisyntF8sjFB6Q61yxEtuc1k","id":1} # подставляем свои данные ip4/<YOUR_IP>/tcp/30333/p2p/<RESULT_OF_CURL> #/ip4/213.12.15.9/tcp/30333/p2p/12D3KooWBTu7oEJzsyxEtuc1ktnuisyntF8sjFB6Q61yxEtuc1k