Installation
Allora Network Point Program
Create a new wallet in Keplr
Connect to the on-chain Point Program Dashboard
In Campaigns tab you see 2 tasks, Check them
In the tutorial we run a
Price Prediction Worker
withtopic 1
(PredictingETH
price every 24h)Check the campaigns tasks steps to see what
topic
meansWe get points by running a worker
The points are 0 for everyone right now and we are not sure that we are 100% fine
I will update reguarly here, so we make sure that we will gain points when it is fixed
Price Prediction Worker Node
System Requirements
Part | Minimum | Recommended |
---|---|---|
CPU | 1 Core | 2 Core |
RAM | 2 GB | 4 GB |
SSD | 50 GB | 100 GB |
Install dependecies
# Install Packages
sudo apt update & sudo apt upgrade -y
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
# Install Python3
sudo apt install python3
python3 --version
sudo apt install python3-pip
pip3 --version
# Install Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker version
# Install Docker-Compose
VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
sudo curl -L "https://github.com/docker/compose/releases/download/"$VER"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo docker-compose --version
# Docker Permission to user
sudo groupadd docker
sudo usermod -aG docker $USER
# Install Go
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.22.4.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> $HOME/.bash_profile
source .bash_profile
go version
Allorad
Install Allorad
git clone https://github.com/allora-network/allora-chain.git
cd allora-chain && make all
allorad version
Add Wallet
- You can use your keplr seed-phrase to recover your wallet or create a new one
# Recover your wallet with seed-phrase
allorad keys add testkey --recover
#OR
# Create a new wallet
allorad keys add testkey
Get Faucet
Connect to Allora dashboard to find your Allora addressYou can add Allora network to Keplr here. Get uAllo faucet here
Worker
Install Worker
# Install
cd $HOME && git clone https://github.com/allora-network/basic-coin-prediction-node
cd basic-coin-prediction-node
mkdir worker-data
mkdir head-data
# Give certain permissions
sudo chmod -R 777 worker-data
sudo chmod -R 777 head-data
# Create head keys
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)"
# Create worker keys
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 the head-id
cat head-data/keys/identity
This is your head-id , you need it in the next step
Connect to Allora Chain
- Delete and create new
docker-compose.yml
file
rm docker-compose.yml && nano docker-compose.yml
- Copy & Paste the following code in it
- Replace
head-id
&WALLET_SEED_PHRASE
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: 5s
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:
To save: CTRL+X+Y Enter
Run worker
sudo docker compose build
sudo docker compose up -d
Check your node status
Check running docker containers
sudo docker ps
Replace CONTAINER_ID
with the id of your docker containers
sudo docker logs -f CONTAINER_ID
Success: register node Tx Hash:=82BF67E2E1247B226B8C5CFCF3E4F41076909ADABF3852C468D087D94BD9FC3B
Check Worker 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
}
}' | jq
{
"code": "200",
"request_id": "03001a39-4387-467c-aba1-c0e1d0d44f59",
"results": [
{
"result": {
"stdout": "{\"value\":\"2564.021586281073\"}",
"stderr": "",
"exit_code": 0
},
"peers": [
"12D3KooWG8dHctRt6ctakJfG5masTnLaKM6xkudoR5BxLDRSrgVt"
],
"frequency": 100
}
],
"cluster": {
"peers": [
"12D3KooWG8dHctRt6ctakJfG5masTnLaKM6xkudoR5BxLDRSrgVt"
]
}
}
Check Updater node:
curl http://localhost:8000/update
0
curl http://localhost:8000/inference/ETH
{"value":"2564.021586281073"}