June 30

Allora. Устанавливаем воркер

CryptoFortochka — гайды, ноды, новости, тестнеты

Allora — это новая децентрализованная AI сеть с упором на Community

  • Инвестировали: $33 750 000
  • Инвесторы: Polychain Capital, Delphi Ventures, Blockchain Capital, и другие
  • Характеристики: 2CPU/4GBRAM/5SSD — минимальные
  • Арендовать сервер: XorekCloud, Pqhosting
  • Чат и канал с поддержкой: https://t.me/fortochat / https://t.me/cryptoforto
  • Ubuntu: 22.04

Данный проект был добавлен в таблицу Retroactive

Напомню!, команда объявила об новом сезоне фарминге поинтов, который в последствие чего, будут конвертироваться в токены проекты

Также есть возможность поставить ноду валидатора и воркера. Но, так как это Comsos нода, попасть в валидаторский сет практически невозможно, особенно, если вы новичок, лучше поставить слабого воркера, за который будут награды

Расписал для вас понятный гайд с установкой ноды, ставиться просто, сервак советую брать (минимум как требуется в рекомендации), чтобы избежать дальнейшие траблы с синхронизацией

Сервер можно арендовать на XorekCloud за 399 рублей в месяц

Что делать?

  • Для начало давайте начнем с фарминга поинтов
  • Устанавливаем Keplr кошелек
  • Отправляемся на сайт и коннектим Keplr кошелек
  • Теперь идём к крану запрашиваем тестовые токены

Установка воркера. Подробная инструкция

Внимание, если вы ставите ноду с нуля, то начинайте с первого пункта
  • Подключаемся на арендованный сервер через root
  • Выполняем команды по списку
  • Обновляем и устанавливаем необходимые пакеты
  • Если появится выбор при обновлении, тыкаем Enter и пишем Y
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
  • Устанавливаем Python3
sudo apt install python3
python3 --version

sudo apt install python3-pip
pip3 --version
  • Устанавливаем 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
docker version
  • Устанавливаем Docker-Compose
VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)

curl -L "https://github.com/docker/compose/releases/download/"$VER"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
docker-compose --version
sudo groupadd docker
sudo usermod -aG docker $USER
  • Устанавливаем 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: Wallet
git clone https://github.com/allora-network/allora-chain.git
  • Клонируем репозиторий
git clone https://github.com/allora-network/basic-coin-prediction-node
cd basic-coin-prediction-node

Ставим базовую модель

Подмечу! Вы также можете создать свою определенную модель по этому пункту "Создание кастомной модели"

  • Настраиваем свой .env
apt install nano
cp .env.example .env
nano .env
  • Ставим такие значение

Сохраняем конфиг Cntr+X, Y, Enter

TOKEN=ETH
TRAINING_DAYS=30
TIMEFRAME=4h
MODEL=SVR
REGION=US
DATA_PROVIDER=binance
CG_API_KEY=
  • Настраиваем свой config.json
cp config.example.json config.json
nano config.json
  • Удаляем все содержимое кнопка Cntr+K
  • Вставляем этот текст, заменяем “your phase” на вашу сидку кеплера аккаунта
  • NodeRpc“ можете заменить на эти 4 Нужно выбрать одну из четырёх RPC

https://rpc.ankr.com/allora_testnet

https://allora-rpc.testnet.allora.network/

Сохраняем конфиг Cntr+X, Y, Enter

{
    "wallet": {
        "addressKeyName": "YourWalletName",
        "addressRestoreMnemonic": "YourSeedPhrase",
        "alloraHomeDir": "",
        "gas": "auto",
        "gasAdjustment": 1.5,
        "nodeRpc": "https://allora-rpc.testnet.allora.network",
        "maxRetries": 1,
        "delay": 1,
        "submitTx": true
    },
    "worker": [
        {
            "topicId": 1,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 2,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ETH"
            }
        },
        {
            "topicId": 2,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 4,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ETH"
            }
        },
        {
            "topicId": 7,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 6,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ETH"
            }
        }
    ]
}
  • Инициализируем воркера
chmod +x init.config
./init.config
  • Запускаем воркера
docker compose pull
docker compose up --build -d
  • Смотрим логи
docker logs -f worker
  • Нормальные логи

Со временем будут появляться

Важно понимать! Через некоторое время будут капать поинты, но, если мало или вообще не капают, то попробуйте поиграться с пунктом "Создание кастомной модели", она достаточно легкая, попробуйте нащупать ту самую рабочую модель

Устанавливаем скрипт на быструю замену RPC (быстрый способ)

  • Заходим в директории
docker compose down
cd basic-coin-prediction-node
nano script.py
  • Вписываем этот скрипт (ничего не меняя) Сохраняем и выходим кнопкой Cntr+X,Y,Enter
import json
import os
import subprocess

def update_config_json(new_node_rpc_url):
    config_file_path = 'config.json'
    
    # Проверяем, существует ли файл config.json
    if not os.path.exists(config_file_path):
        print(f'Error: Файл {config_file_path} не найден!')
        return

    try:
        # Читаем содержимое config.json
        with open(config_file_path, 'r') as file:
            config = json.load(file)


        # Обновляем поле "nodeRpc" внутри "wallet", если оно существует
        if 'wallet' in config and 'nodeRpc' in config['wallet']:
            config['wallet']['nodeRpc'] = new_node_rpc_url
            print(f'Обновлено "nodeRpc" внутри "wallet" на {new_node_rpc_url}')

        # Записываем обновленный JSON обратно в файл
        with open(config_file_path, 'w') as file:
            json.dump(config, file, indent=4)

        print('Изменения успешно сохранены в config.json.')

    except json.JSONDecodeError as e:
        print(f'Ошибка чтения JSON: {e}')
    except Exception as e:
        print(f'Произошла ошибка: {e}')

def run_shell_command(command):
    try:
        subprocess.run(command, shell=True, check=True)
        print(f'Выполнена команда: {command}')
    except subprocess.CalledProcessError as e:
        print(f'Ошибка выполнения команды {command}: {e}')

if __name__ == '__main__':
    new_node_rpc_url = input('Введите новую ссылку на RPC: ').strip()

    # Выполняем команды
    run_shell_command('docker compose down -v')
    update_config_json(new_node_rpc_url)
    run_shell_command('chmod +x init.config')
    run_shell_command('./init.config')
    run_shell_command('docker compose up -d')
    run_shell_command('docker logs -f worker')
  • Запускаем скрипт
python3 script.py
  • Вписываем RPC, некоторые могут не работать, наша задача найти подходящий и во время её заменить, когда одна из них не валид

https://rpc.ankr.com/allora_testnet

https://allora-rpc.testnet.allora.network/

  • Как запустите скрипт, пойдут логи, если мы видим ошибку с RPC, значит данная RPC, который вы вписали, она не рабочая, чтобы заменить, нажимаем Cntr + C, и вписываем команды снизу
  • Также вписываем новую RPC и тыкаем Enter, снова пойдут логи, если нет ошибок с RPC, то все идеально
cd basic-coin-prediction-node
python3 script.py

Устанавливаем кастомную модель

  • Делаем бэкап
dadapter/api/source/Dockerfile
adapter/api/source/requirements.txt
adapter/api/source/main.py
config.json
  • Останавливаем ноду
docker compose down
  • Заходим в конфиг
nano .env

Token

  • В пункте Token нужно указать используемый токен криптовалюты. Должен быть одним из следующих
'ETH' (Ethereum)
'SOL' (Solana)
'BTC' (Bitcoin)
'BNB' (Binance Coin)
'ARB' (Arbitrum)

TRAINING_DAYS

Представляет количество дней исторических данных для использования в обучении

  • Должно быть целым числом, большим или равным 1

TIMEFRAME

Определяет временные рамки данных, используемых в формате 10min(минуты), 1h(часы), 1d(дни) и т. д

Coingecko

Для Coingecko гранулярность данных (тело свечи) является автоматической. Чтобы избежать уменьшения масштаба при использовании Coingecko

Используйте TIMEFRAME >= 30 мин, если TRAINING_DAYS <= 2. 
Используйте TIMEFRAME >= 4 ч, если TRAINING_DAYS <= 30. 
Используйте TIMEFRAME >= 4 дн., если TRAINING_DAYS >= 31.

MODEL

Указывает модель машинного обучения для использования. Должен быть одним из следующих

«Линейная регрессия» 
«SVR» (регрессия опорных векторов) 
«KernelRidge» 
«BayesianRidge»

REGION

Определяет регион для API Binance. Должен быть 'EU'или 'US'

Должно быть EU или US

DATA_PROVIDER

Указывает поставщика данных для использования. Должен быть либо , 'Binance'либо 'Coingecko'

CG_API_KEY: Ваш ключ API Coingecko, требуется, если вы DATA_PROVIDERустановили 'coingecko'

  • CG_API_KEY вы можете взять на сайте, выбрав бесплатный режим
  • Сохраняем содержимое
chmod +x init.config
./init.config
  • Запускаем ноду
docker compose up -d

Дополнительные команды для проверки логов

  • Проверяем логи воркера. Выйти из логов Cntr+C
docker logs -f worker
  • Удаляем ноду на любой вкус и цевет)
docker stop worker-basic-eth-pred updater-basic-eth-pred head-basic-eth-pred inference-basic-eth-pred
docker rm worker-basic-eth-pred updater-basic-eth-pred head-basic-eth-pred inference-basic-eth-pred
docker rmi basic-coin-prediction-node-inference basic-coin-prediction-node-updater basic-coin-prediction-node-worker

rm -rf basic-coin-prediction-node

docker stop offchain_node offchain_source
docker rm offchain_node offchain_source
docker rmi allora-offchain-source  docker rmi allora-offchain-node-node
rm -rf allora-offchain-node
rm -rf allora-chain
docker rmi allora-offchain-node-source
docker stop offchain_node offchain_source
docker container prune
docker image prune -a
rm -rf allora-offchain-node
rm -rf allora-chain
rm -rf basic-coin
  • Через несколько часов, появятся поинты за установленную ноду