GPU Воркеры / Майнинг — Обзор¶
GPU Воркеры (майнеры) выполняют полезные вычисления на GPU и получают награды за корректное выполнение задач.
Концепция¶
Proof-of-Compute заменяет бессмысленный хешрейт полезными вычислениями:
- Вместо поиска nonce, воркеры выполняют реальные задачи
- Результаты проверяются и записываются в блокчейн
- Воркеры получают награды за корректное выполнение
Роль Воркера¶
Основные функции¶
- Подключение к PoC Валидатору:
- WebSocket или HTTP подключение
-
Получение задач на выполнение
-
Выполнение вычислений:
- Запуск ядер CUDA/ROCm на GPU
-
Обработка задач (умножение матриц, инференс, обучение и т.д.)
-
Отправка результата:
- Хеширование результата
- Формирование доказательства (будущее: ZK-proof)
-
Отправка транзакции
SUBMIT_RESULTв L1 -
Получение награды:
- Off-chain (через PoC валидатора) или
- On-chain (через механизм наград L1)
Структура ComputeResult¶
Поля¶
class ComputeResult:
task_id: str # UUID задачи
worker_address: str # Адрес воркера (cpc1...)
result_hash: str # Хеш результата вычислений
proof: Optional[str] = None # Доказательство корректности (будущее: ZK-proof)
nonce: Optional[int] = None # Для синтетических задач
signature: Optional[str] = None # Подпись воркера
Пример Payload¶
{
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"worker_address": "cpc1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t",
"result_hash": "0x1234567890abcdef...",
"proof": null,
"nonce": 12345,
"signature": "0xabcdef..."
}
Транзакция SUBMIT_RESULT¶
Тип транзакции¶
TxType.SUBMIT_RESULT
Стоимость газа: 80,000 gas
Структура транзакции¶
Transaction(
tx_type=TxType.SUBMIT_RESULT,
from_address="cpc1worker...", # Адрес воркера
to_address=None,
amount=0, # Награда пока не интегрирована в L1
fee=gas_limit * gas_price,
nonce=...,
gas_price=1000,
gas_limit=80000,
payload={
"task_id": "...",
"worker_address": "cpc1worker...",
"result_hash": "0x...",
"proof": None,
"nonce": 12345,
"signature": "..."
}
)
Валидация¶
Проверки L1:
- Структура
ComputeResultвалидна worker_addressсовпадает сtx.from_address- Доказательство верифицировано (будущее: через ZK-верификацию)
Интеграция с блокчейном¶
compute_root¶
В заголовке блока:
Вычисление:
def compute_poc_root(txs: List[Transaction]) -> str:
leaves = []
for tx in txs:
if tx.tx_type == TxType.SUBMIT_RESULT:
res = ComputeResult(**tx.payload)
data = res.model_dump_json().encode("utf-8")
leaves.append(sha256(data))
if not leaves:
return ""
return compute_merkle_root(leaves).hex()
Типы задач¶
Синтетические задачи¶
Статус: ✅ Реализовано (Stage 4)
Назначение: Стресс-тест и бенчмарк GPU
Тип: challenge_type: "synthetic"
Свойства: - Детерминированный вывод - Быстрая верификация - Генерируется из хеша блока
Пример:
# Генерация задачи из хеша блока
block_hash = get_latest_block_hash()
seed = sha256(block_hash + worker_address)
matrix_size = 1024
# Выполнение
result = matrix_multiplication(seed, matrix_size)
result_hash = sha256(result)
Реальные задачи (Будущее)¶
Статус: 🚧 В разработке (Stage 5)
Типы:
- inference — инференс ML моделей
- training — обучение моделей
- rendering — рендеринг графики
- simulation — научные симуляции
Свойства: - Загружаются через Task Market - Оплачиваются пользователем - Проверяются через ZK-proofs или дублирующее выполнение
Процесс выполнения задач¶
Текущая реализация (Stage 4)¶
Упрощённый поток:
- Воркер генерирует задачу из хеша блока (синтетическая)
- Воркер выполняет вычисление (CPU/GPU mock)
- Воркер отправляет транзакцию
SUBMIT_RESULTв L1 - L1 валидатор проверяет структуру и включает в блок
compute_rootобновляется в заголовке блока
Будущая реализация (Stage 5)¶
Полный поток с маркетплейсом:
- Пользователь создаёт задачу через Task Market API
- PoC валидатор получает задачу и разбивает на задания
- PoC валидатор распределяет задания между воркерами через WebSocket
- Воркер выполняет задачу на GPU
- Воркер отправляет результат с доказательством обратно
- PoC валидатор проверяет результат (выборочная верификация)
- PoC валидатор или Воркер отправляет
SUBMIT_RESULTв L1 - L1 валидатор включает транзакцию в блок
- Воркер получает награду (off-chain или через L1 reward)
Награды¶
Текущая реализация¶
Статус: Off-chain (в PoC валидаторе) или через простой бонус в _distribute_rewards
Награды ещё не интегрированы в L1 на уровне протокола.
Будущая реализация¶
Интеграция с L1:
- Награды за транзакции
SUBMIT_RESULT - Распределение через
_distribute_rewards - Рейтинг воркера в стейте (off-chain или on-chain)
Требования к Воркеру¶
Оборудование¶
- GPU: RTX 4090/5090 или аналог (поддержка CUDA/ROCm)
- CPU: Достаточный для оркестрации задач
- RAM: Зависит от типа задачи
- Storage: Минимальные требования (для кода и данных)
ПО¶
- Python 3.12+
- CUDA Toolkit или ROCm (для GPU вычислений)
- L1 нода (для отправки транзакций)
- PoC клиент (для подключения к оркестратору)
Сетевое подключение¶
- Стабильное интернет-соединение
- Доступ к L1 ноде (локальной или удаленной)
- Доступ к PoC валидатору (WebSocket/HTTP)
Следующие шаги¶
- Локальный Воркер — Запуск локального воркера
- Маркет Задач — Публикация задач
- Детали PoC — Детали Proof-of-Compute