Перейти к содержанию

Task Market

Маркетплейс задач для выполнения на GPU-воркерах.

Статус

Текущая версия: 🚧 В разработке (Stage 5)

Планируемый функционал: - API для публикации задач - Оплата задач через CPC - Распределение задач между воркерами - Выплаты воркерам за выполнение

Концепция

Роли

  1. Customer (Пользователь):
  2. Создаёт задачу через API
  3. Платит CPC за выполнение
  4. Получает результаты

  5. Worker (Воркер):

  6. Получает задачи от PoC-валидатора
  7. Выполняет вычисления на GPU
  8. Отправляет результаты
  9. Получает награды

  10. PoC-валидатор (Оркестратор):

  11. Получает задачи из маркета
  12. Разбивает на job'ы
  13. Раздаёт воркерам
  14. Проверяет результаты
  15. Выплачивает награды

API (Планируется)

Создание задачи

Endpoint: POST /tasks

Request:

{
  "challenge_type": "inference",
  "payload": {
    "model_id": "gpt-3.5-turbo",
    "prompt": "Hello, world!",
    "max_tokens": 100
  },
  "reward": "10.0",
  "deadline": 1700000000
}

Response:

{
  "task_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "created_at": 1699999999
}

Получение статуса задачи

Endpoint: GET /tasks/{task_id}

Response:

{
  "task_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "result": {
    "result_hash": "0x1234...",
    "worker_address": "cpc1worker...",
    "completed_at": 1700000100
  }
}

Список задач

Endpoint: GET /tasks

Query Parameters: - status: pending, in_progress, completed, failed - challenge_type: Тип задачи - limit: Количество результатов - offset: Смещение

Response:

{
  "tasks": [
    {
      "task_id": "...",
      "challenge_type": "inference",
      "status": "pending",
      "reward": "10.0"
    }
  ],
  "total": 100,
  "limit": 20,
  "offset": 0
}

Типы задач

Inference (Вывод моделей)

Тип: challenge_type: "inference"

Payload:

{
  "model_id": "gpt-3.5-turbo",
  "prompt": "Generate a story",
  "max_tokens": 500,
  "temperature": 0.7
}

Использование: - Генерация текста - Классификация изображений - Перевод текста

Training (Обучение моделей)

Тип: challenge_type: "training"

Payload:

{
  "model_architecture": "resnet50",
  "dataset_url": "https://...",
  "epochs": 10,
  "batch_size": 32
}

Использование: - Fine-tuning моделей - Обучение с нуля - Transfer learning

Rendering (Рендеринг)

Тип: challenge_type: "rendering"

Payload:

{
  "scene_file": "https://...",
  "resolution": "1920x1080",
  "frames": 100
}

Использование: - 3D рендеринг - Анимация - Визуализация

Synthetic (Синтетические)

Тип: challenge_type: "synthetic"

Payload:

{
  "seed": "0x1234...",
  "matrix_size": 1024,
  "iterations": 100
}

Использование: - Стресс-тест GPU - Бенчмарки - Тестирование сети

Финансы

Оплата задач

Текущая реализация (MVP):

  • Работа "в кредит" или ручное пополнение кошелька маркета
  • Выплаты воркерам через обычные TRANSFER (батчинг)

Будущая реализация:

  • Депозиты в L1 через специальную транзакцию
  • Автоматические выплаты воркерам
  • Эскроу для гарантии выполнения

Распределение оплаты

Планируется:

Оплата задачи: 100 CPC

60 CPC (60%) → СЖИГАЕТСЯ (дефляция)
25 CPC (25%) → Воркеру (исполнителю)
10 CPC (10%) → Валидаторам (верификаторам)
5 CPC (5%)   → Казначейству

Интеграция с L1

SUBMIT_RESULT транзакции

Текущая реализация:

  • Воркер или PoC-валидатор отправляет SUBMIT_RESULT в L1
  • Транзакция включается в блок
  • compute_root обновляется

Будущая реализация:

  • Автоматическая отправка от PoC-валидатора
  • Батчинг результатов для экономии gas
  • ZK-proofs для верификации

Примеры использования

Пример 1: Публикация задачи через API

import requests

# Создание задачи
response = requests.post("http://task-market:8080/tasks", json={
    "challenge_type": "inference",
    "payload": {
        "model_id": "gpt-3.5-turbo",
        "prompt": "Hello, world!",
        "max_tokens": 100
    },
    "reward": "10.0"
})

task_id = response.json()["task_id"]
print(f"Task created: {task_id}")

# Проверка статуса
status = requests.get(f"http://task-market:8080/tasks/{task_id}")
print(status.json())

Пример 2: Получение задач воркером

# Воркер подключается к PoC-валидатору
# Получает задачи через WebSocket
# Выполняет и отправляет результаты

Roadmap

Фаза 1 (Текущая)

  • ✅ Базовая структура ComputeResult
  • ✅ Транзакция SUBMIT_RESULT
  • compute_root в заголовках блоков

Фаза 2 (Следующая)

  • 🚧 Task Market API
  • 🚧 PoC-валидатор (оркестратор)
  • 🚧 WebSocket протокол для воркеров

Фаза 3 (Будущее)

  • ⏳ ZK-proofs для верификации
  • ⏳ Автоматические выплаты
  • ⏳ Репутация воркеров

Следующие шаги