💻Installation

Officially stated requirements: 2/4/100 ubuntu 22.04

UOMI Finney Incentivized Testnet Launched

50,000,000 $UOMI tokens allocated to reward node operators starting with this testnet!

Validators are the core of the UOMI ecosystem, powering block production, AI computation, and cross-chain interaction. By running a validator node, you actively contribute to the growth of the network, and $UOMI tokens are rewards for your participation

Choose the node type that suits your setup:

RPC nodes: light, full, or archive, optimized for data access and interaction (these node types are subject to question regarding rewards) Validator nodes: require 48GB of GPU RAM and a full node setup to validate transactions and secure the network

Server preparation

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

Ports used

AI runs on port 8888

# validator
ufw allow 30333 comment p2p
ufw allow 9944 comment rpc
ufw allow 9615 comment prometheus

Install python 3.10

apt install software-properties-common -y
add-apt-repository ppa:deadsnakes/ppa
# enter
apt install python3.10

python3.10 --version
#

AI Installation

Clone the repository for AI

git clone https://github.com/Uomi-network/uomi-node-ai

Create a directory for the validator database

mkdir -p $HOME/uomi

Install miniconda

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
source /root/miniconda3/etc/profile.d/conda.sh
conda create -n uomi-ai python=3.10 -y
conda activate uomi-ai

Install the necessary software

conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
conda install -c nvidia/label/cuda-12.1.0 cuda-nvcc=12.1 cuda-toolkit=12.1
conda install numpy=1.24
pip install flask
pip install psutil
pip install websocket-client requests
pip install transformers
pip install 'accelerate>=0.26.0'
pip install autoawq
pip install 'triton==3.2.0'
pip install diffusers

Create a service file

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

Validator setup

Download genesis

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

Download the binary file

wget -O /usr/local/bin/uomi "https://github.com/Uomi-network/uomi-node/releases/download/v0.2.3/uomi_ubuntu_24"
chmod +x /usr/local/bin/uomi
uomi --version
#uomi 0.2.3-08ac2217fb9

Create a wallet and save the output

uomi key generate --scheme Sr25519
# output example
#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

Generate the Ed25519 key for GRANDPA using your seed phrase obtained above

uomi key inspect --scheme Ed25519 "<YOU_SEED>"

Create a service file

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

Adding Keys STEP 1

Once your node is up and running, paste your keys

NOTE - replace SECRET_PHRASE and PUBLIC KEY (hex) with your data obtained with the first command "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

Adding Keys STEP 2

NOTE - replace SECRET_PHRASE and PUBLIC KEY (hex) with your data obtained using the second command "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

Finally after the node is fully synced run the following command to generate session keys when creating a validator in polkadot js

curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9944

Last updated