worker-data/scripts | ||
.gitignore | ||
app.py | ||
config.example.json | ||
config.py | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
Dockerfile | ||
gunicorn_conf.py | ||
init.docker | ||
LICENSE | ||
model.py | ||
README.md | ||
requirements.txt | ||
update_app.py | ||
updater.py |
Basic ETH Price Prediction Node
This repository provides an example Allora network worker node, designed to offer price predictions for ETH. The primary objective is to demonstrate the use of a basic inference model running within a dedicated container, showcasing its integration with the Allora network infrastructure to contribute valuable inferences.
Components
- Worker: The node that publishes inferences to the Allora chain.
- Inference: A container that conducts inferences, maintains the model state, and responds to internal inference requests via a Flask application. This node operates with a basic linear regression model for price predictions.
- Updater: A cron-like container designed to update the inference node's data by daily fetching the latest market information from Binance, ensuring the model stays current with new market trends.
Check the docker-compose.yml
file for the detailed setup of each component.
Docker-Compose Setup
A complete working example is provided in the docker-compose.yml
file.
Steps to Setup
-
Clone the Repository
-
Copy and Populate Configuration
Copy the example configuration file and populate it with your variables:
cp config.example.json config.json
-
Initialize Worker
Run the following commands from the project's root directory to initialize the worker:
chmod +x init.docker ./init.docker
These commands will:
- Automatically create Allora keys for your worker.
- Export the needed variables from the created account to be used by the worker node, bundle them with your provided
config.json
, and pass them to the node as environment variables.
-
Faucet Your Worker Node
You can find the offchain worker node's address in
./worker-data/env_file
underALLORA_OFFCHAIN_ACCOUNT_ADDRESS
. Add faucet funds to your worker's wallet before starting it. -
Start the Services
Run the following command to start the worker node, inference, and updater nodes:
docker compose up --build
To confirm that the worker successfully sends the inferences to the chain, look for the following log:
{"level":"debug","msg":"Send Worker Data to chain","txHash":<tx-hash>,"time":<timestamp>,"message":"Success"}
Testing Inference Only
This setup allows you to develop your model without the need to bring up the head and worker. To test the inference model only:
-
Run the following command to start the inference node:
docker compose up --build inference
Wait for the initial data load.
-
Send requests to the inference model. For example, request ETH price inferences:
curl http://127.0.0.1:8000/inference/ETH
Expected response:
{"value":"2564.021586281073"}
-
Update the node's internal state (download pricing data, train, and update the model):
curl http://127.0.0.1:8000/update
Expected response:
0