Allora Worker Node Setup
- VPS with Ubuntu 22.04
- At least 2vCPU and 4 GB of RAM
- Python3 and Docker installed
- Wallet address with some funds
Intsall nano in your command prompt
sudo apt-get update ((copy))
sudo apt-get install nano -y ((copy))
sudo apt-get update && sudo apt-get upgrade -y ((copy))
sudo apt install ca-certificates zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev curl git wget make jq build-essential pkg-config lsb-release libssl-dev libreadline-dev libffi-dev gcc screen unzip lz4 -y ((copy))
sudo apt-get install python3 ((copy))
sudo apt install python3-pip ((copy))
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ((copy))
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ((copy))
sudo apt-get update ((copy))
sudo apt-get install docker-ce docker-ce-cli containerd.io ((copy))
docker version ((copy))
VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4) ((copy))
curl -L "https://github.com/docker/compose/releases/download/"$VER"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ((copy))
chmod +x /usr/local/bin/docker-compose ((copy))
docker-compose --version ((copy))
sudo groupadd docker ((copy))
sudo usermod -aG docker $USER ((copy))
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 https://github.com/allora-network/allora-chain.git ((copy))
cd allora-chain && make all ((copy))
allorad version ((copy))
allorad keys add testkey --recover ((copy))
git clone https://github.com/allora-network/basic-coin-prediction-node ((copy))
cd basic-coin-prediction-node ((copy))
mkdir worker-data ((copy))
mkdir head-data ((copy))
sudo chmod -R 777 worker-data ((copy))
sudo chmod -R 777 head-data ((copy))
sudo docker run -it --entrypoint=bash -v ./head-data:/data alloranetwork/allora-inference-base:latest -c "mkdir -p /data/keys && (cd /data/keys && allora-keys)" ((copy))
sudo docker run -it --entrypoint=bash -v ./worker-data:/data alloranetwork/allora-inference-base:latest -c "mkdir -p /data/keys && (cd /data/keys && allora-keys)" ((copy))
cat head-data/keys/identity (( copy your head id ))
rm -rf docker-compose.yml && nano docker-compose.yml ((copy))
Copy And Paste this code :
!!!!! Change head-id and Wallet_Seed_Phares ( 24 Wallet Key ) !!!!
version: '3'
services:
inference:
container_name: inference-basic-eth-pred
build:
context: .
command: python -u /app/app.py
ports:
- "8000:8000"
networks:
eth-model-local:
aliases:
- inference
ipv4_address: 172.22.0.4
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/inference/ETH"]
interval: 10s
timeout: 10s
retries: 12
volumes:
- ./inference-data:/app/data
updater:
container_name: updater-basic-eth-pred
build: .
environment:
- INFERENCE_API_ADDRESS=http://inference:8000
command: >
sh -c "
while true; do
python -u /app/update_app.py;
sleep 24h;
done
"
depends_on:
inference:
condition: service_healthy
networks:
eth-model-local:
aliases:
- updater
ipv4_address: 172.22.0.5
worker:
container_name: worker-basic-eth-pred
environment:
- INFERENCE_API_ADDRESS=http://inference:8000
- HOME=/data
build:
context: .
dockerfile: Dockerfile_b7s
entrypoint:
- "/bin/bash"
- "-c"
- |
if [ ! -f /data/keys/priv.bin ]; then
echo "Generating new private keys..."
mkdir -p /data/keys
cd /data/keys
allora-keys
fi
# Change boot-nodes below to the key advertised by your head
allora-node --role=worker --peer-db=/data/peerdb --function-db=/data/function-db \
--runtime-path=/app/runtime --runtime-cli=bls-runtime --workspace=/data/workspace \
--private-key=/data/keys/priv.bin --log-level=debug --port=9011 \
--boot-nodes=/ip4/172.22.0.100/tcp/9010/p2p/head-id \
--topic=allora-topic-1-worker \
--allora-chain-key-name=testkey \
--allora-chain-restore-mnemonic='WALLET_SEED_PHRASE' \
--allora-node-rpc-address=https://allora-rpc.edgenet.allora.network/ \
--allora-chain-topic-id=1
volumes:
- ./worker-data:/data
working_dir: /data
depends_on:
- inference
- head
networks:
eth-model-local:
aliases:
- worker
ipv4_address: 172.22.0.10
head:
container_name: head-basic-eth-pred
image: alloranetwork/allora-inference-base-head:latest
environment:
- HOME=/data
entrypoint:
- "/bin/bash"
- "-c"
- |
if [ ! -f /data/keys/priv.bin ]; then
echo "Generating new private keys..."
mkdir -p /data/keys
cd /data/keys
allora-keys
fi
allora-node --role=head --peer-db=/data/peerdb --function-db=/data/function-db \
--runtime-path=/app/runtime --runtime-cli=bls-runtime --workspace=/data/workspace \
--private-key=/data/keys/priv.bin --log-level=debug --port=9010 --rest-api=:6000
ports:
- "6000:6000"
volumes:
- ./head-data:/data
working_dir: /data
networks:
eth-model-local:
aliases:
- head
ipv4_address: 172.22.0.100
networks:
eth-model-local:
driver: bridge
ipam:
config:
- subnet: 172.22.0.0/24
volumes:
inference-data:
worker-data:
head-data:
CTRL X - Y - Enter. For save.
docker compose build
docker compose up -d
docker ps ((copy))
copy your container id of node worker .
docker logs -f CONTAINER_ID ((copy)) (( Replace container id with your container id ))
docker ps ((copy))
docker logs -f CONTAINER_ID ((copy))
MUST CHECK THROUGH THIS COMMAND TO BE ASSURE ABOUT YOUR RUNNING NODE.
curl --location 'http://localhost:6000/api/v1/functions/execute' \
--header 'Content-Type: application/json' \
--data '{
"function_id": "bafybeigpiwl3o73zvvl6dxdqu7zqcub5mhg65jiky2xqb4rdhfmikswzqm",
"method": "allora-inference-function.wasm",
"parameters": null,
"topic": "1",
"config": {
"env_vars": [
{
"name": "BLS_REQUEST_PATH",
"value": "/api"
},
{
"name": "ALLORA_ARG_PARAMS",
"value": "ETH"
}
],
"number_of_nodes": -1,
"timeout": 2
}
}'
RESPONSE SHOULD BE CODE 200 - IF IT IS THEN YOUR NODE IS WORKING FINE, IF IT SHOWS CODE 480 OR ANY OTHER ,, THEN RUN ALL COMMANDS FROM STARTING AGAIN.
—-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
how to transfer to v2 testnet
docker-compose ls
cd /root/allora-chain/allora-chain/basic-coin-prediction-node
or
cd /root/allora/allora-chain/basic-coin-prediction-node/docker-compose.yml
or
cd /root/basic-coin-prediction-node
ls
docker-compose ps
docker-compose down
docker stop $(docker ps -aq) 2>/dev/null
docker rm $(docker ps -aq) 2>/dev/null
docker rmi -f $(docker images -aq) 2>/dev/null
sed -i 's|--allora-node-rpc-address=https://allora-rpc.edgenet.allora.network/|--allora-node-rpc-address=https://allora-rpc.testnet-1.testnet.allora.network/|' docker-compose.yml
docker-compose up -d
docker ps
docker logs -f CONTAINER_ID
check node status on testnet version
network_height=$(curl -s -X 'GET' 'https://allora-rpc.testnet-1.testnet.allora.network/abci_info?' -H 'accept: application/json' | jq -r .result.response.last_block_height) && \
curl --location 'http://localhost:6000/api/v1/functions/execute' --header 'Content-Type: application/json' --data '{
"function_id": "bafybeigpiwl3o73zvvl6dxdqu7zqcub5mhg65jiky2xqb4rdhfmikswzqm",
"method": "allora-inference-function.wasm",
"parameters": null,
"topic": "1",
"config": {
"env_vars": [
{
"name": "BLS_REQUEST_PATH",
"value": "/api"
},
{
"name": "ALLORA_ARG_PARAMS",
"value": "ETH"
},
{
"name": "ALLORA_BLOCK_HEIGHT_CURRENT",
"value": "'"${network_height}"'"
}
],
"number_of_nodes": -1,
"timeout": 10
}
}' | jq