Розробка системи інференсу AI на блокчейні

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка системи інференсу AI на блокчейні
Складний
від 2 тижнів до 3 місяців
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка системи інференсу штучного інтелекту на блокчейні

Інференс штучного інтелекту на блокчейні — це не маркетинговий термін, це конкретна інженерна проблема з декількома частковими рішеннями, кожне з яких має свої компроміси. Клієнти зазвичай приходять з запитом: "ми хочемо, щоб результати нашої моделі були перевіряємими та неможливо було підробити". Це розумна вимога. Питання в тому, як це реалізувати без витрачання $50k на газ за один інференс.

Пряме виконання нейронної мережі в контракті EVM неможливе. GPT-2 tiny (117M параметрів) при наївній реалізації потребував би ~10^9 операцій множення з плаваючою точкою. EVM не має типу float, кожна арифметична операція коштує газ, а ліміт газу блоку Ethereum 30M — це фізичний стельовий. Реальні підходи йдуть іншим шляхом.

Три архітектурні підходи

1. ZK-доказ інференсу (zkML)

Модель виконується off-chain, на блокчейні верифікація проводиться через доказ з нульовим розголошенням коректності виконання. Це найперспективніший і технічно найскладніший підхід.

Основні фреймворки:

EZKL — найбільш зрілий zkML набір інструментів на сьогодні. Приймає ONNX-моделі, генерує Halo2 схеми, верифікує on-chain через Solidity-верифікатор.

# Експорт моделі в ONNX
python -c "
import torch, ezkl
model = MyModel()
x = torch.randn(1, 784)  # приклад MNIST
torch.onnx.export(model, x, 'model.onnx', opset_version=11)
"

# Компіляція в схему
ezkl gen-settings -M model.onnx -O settings.json
ezkl calibrate-settings -M model.onnx -D input.json -O settings.json
ezkl compile-circuit -M model.onnx -S settings.json --compiled-circuit model.compiled

# Генерація SRS та ключів
ezkl get-srs --settings-path settings.json
ezkl setup -M model.compiled --vk-path vk.key --pk-path pk.key

# Генерація доказу (це повільно)
ezkl gen-witness -M model.compiled -D input.json -O witness.json
ezkl prove --witness witness.json --compiled-circuit model.compiled --pk-path pk.key --proof-path proof.json

# Розпорядження верифікатора on-chain
ezkl create-evm-verifier --vk-path vk.key --sol-code-path verifier.sol

Обмеження EZKL: час генерації доказу для простої CNN (ResNet-18) — 5–20 хвилин на CPU, 30–120 секунд на GPU. Розмір SRS (структурована довідкова строка) — гігабайти для великих моделей. Це обмежує застосовуваність до малих моделей (< 1M параметрів) або сценаріїв, де latency генерації доказу не критична.

Risc Zero + Boundless — альтернативний підхід через zkVM. Модель компілюється в RISC-V, виконується в Risc Zero zkVM, доказ верифікується on-chain. Менш ефективний для ML-операцій ніж спеціалізовані zkML схеми, але дозволяє використовувати довільний Rust/C++ код.

// Гостьова програма в Risc Zero
use risc0_zkvm::guest::env;

fn main() {
    let input: Vec<f32> = env::read();
    let result = run_inference(&input);  // ваша модель
    env::commit(&result);
}

Моделі придатні для zkML зараз:

  • Логістична регресія, SVM — без обмежень
  • Невеликі MLP (< 100k параметрів) — доказ за секунди
  • CNN для класифікації зображень (< 1M параметрів) — доказ за хвилини
  • LLM, diffusion моделі — нереально в 2024–2025 без спеціалізованого обладнання

2. Оптимістичний підхід (докази шахрайства)

Інференс відбувається off-chain, результат публікується on-chain. Будь-хто може повторити обчислення та оспорити неправильний результат.

Цей підхід використовують Giza Tech та Modulus Labs. Економіка: період challenge = N блоків, претензент повинен надати доказ шахрайства (частковий execution trace). Працює при достатній кількості верифікаторів — це економічна теорія ігор, а не математична гарантія.

// Спрощена схема оптимістичного AI оракула
contract OptimisticAIOracle {
    struct InferenceResult {
        bytes32 inputHash;
        int256[] outputs;
        address submitter;
        uint256 submittedAt;
        bool challenged;
        bool resolved;
    }
    
    uint256 public constant CHALLENGE_PERIOD = 7200; // ~24h в блоках
    uint256 public constant SUBMITTER_BOND = 1 ether;
    
    mapping(uint256 => InferenceResult) public results;
    
    function submitResult(
        uint256 requestId,
        bytes32 inputHash,
        int256[] calldata outputs
    ) external payable {
        require(msg.value >= SUBMITTER_BOND, "Insufficient bond");
        results[requestId] = InferenceResult({
            inputHash: inputHash,
            outputs: outputs,
            submitter: msg.sender,
            submittedAt: block.number,
            challenged: false,
            resolved: false
        });
    }
    
    function challenge(uint256 requestId, bytes calldata fraudProof) external {
        InferenceResult storage result = results[requestId];
        require(block.number < result.submittedAt + CHALLENGE_PERIOD, "Challenge period expired");
        
        // Верифікація доказу шахрайства — частковий execution
        bool isFraud = verifyFraudProof(result.inputHash, result.outputs, fraudProof);
        if (isFraud) {
            // Заборгування бонду submitter, награда претензієнту
            result.challenged = true;
        }
    }
}

Проблема: verifyFraudProof сам по собі дорогостоящи on-chain computation. Для ML-моделей часткова верифікація виконання нетривіальна.

3. Децентралізовані мережі інференсу (TEE + економічна безпека)

Galadriel — EVM-сумісний L1, спеціально заточений під AI. Смарт-контракти можуть робити системні виклики до LLM-провайдерів прямо з Solidity:

import "./interfaces/IOracle.sol";

contract AIChatbot {
    IOracle public oracle;
    
    struct Message {
        string role;
        string content;
    }
    
    mapping(uint256 => Message[]) public conversations;
    
    function startChat(string memory userMessage) external returns (uint256) {
        uint256 runId = IOracle(oracle).createLlmCall(msg.sender);
        conversations[runId].push(Message("user", userMessage));
        return runId;
    }
    
    // Callback від оракула
    function onOracleLlmResponse(
        uint256 runId,
        IOracle.LlmResponse memory response,
        string memory errorMessage
    ) public {
        require(msg.sender == address(oracle), "Only oracle");
        conversations[runId].push(Message("assistant", response.content));
    }
}

Ritual — децентралізована мережа інференсу. Вузли використовують TEE (Trusted Execution Environment) для верифікації інференсу без розкриття ваг моделі. Eigen Layer restaking для економічної безпеки.

Opaque Labs — спеціалізується на конфіденційному інференсі через SGX/TDX.

Вибір підходу

Підхід Верифікація Latency Вартість Розмір моделі
EZKL (zkML) Математична Хвилини Висока < 1M param
Оптимістичний Економічна Секунди Середня Будь-який
Galadriel Довіра до мережі < 30s Низька LLM-клас
Ritual TEE Апаратна Секунди Середня Будь-який
Risc Zero Математична Хвилини Висока < 10M param

Архітектура production системи

Більшість реальних проектів використовують гібридний підхід: zkML для малих, критично важливих моделей (наприклад, fraud detection на транзакції) та оптимістичний або TEE-based для LLM-функцій.

[Користувач/Контракт] 
    ↓ запит інференсу + депозит
[Черга запитів інференсу (on-chain)]
    ↓ подія
[Cluster інференс-вузлів off-chain]
    ↓ запускає модель, генерує доказ
[Надання доказу + результат]
    ↓
[Контракт верифікатора on-chain]
    ↓ верифікація ZK доказу
[Callback до контракту, що запитав]

On-chain інтерфейс

Стандартний паттерн — Oracle-style з callback:

interface IInferenceOracle {
    struct InferenceRequest {
        bytes model_id;      // хеш або CID моделі
        bytes input;         // ABI-encoded або raw bytes
        address callback;    // контракт для callback
        bytes4 callbackSig;  // підпис callback функції
        uint256 maxFee;      // максимальна плата за інференс
    }
    
    function requestInference(InferenceRequest calldata req) 
        external payable returns (uint256 requestId);
    
    function fulfillInference(
        uint256 requestId,
        bytes calldata result,
        bytes calldata proof
    ) external;
}

Робота з фіксованою точкою

EVM не підтримує float. Усі ML-обчислення on-chain або в inputs доказів потребують квантизації:

# Квантизація перед інференсом
import numpy as np

def quantize_input(x: np.ndarray, scale: int = 2**16) -> np.ndarray:
    """Конвертація float в Q16.16 fixed-point"""
    return (x * scale).astype(np.int32)

def dequantize_output(x: np.ndarray, scale: int = 2**16) -> np.ndarray:
    return x.astype(np.float32) / scale

Для EZKL квантизація відбувається автоматично при calibrate-settings — важливо перевірити точність після квантизації, втрати > 1% зазвичай неприйнятні для фінансових моделей.

Зберігання моделі та перевіряємість

Ключове питання: як on-chain контракт знає, що інференс виконано на правильній моделі, а не підмінутій? Рішення:

Зобов'язання моделі — хеш ваг моделі зберігається on-chain. Вузол інференсу доводить (через ZK або підпис TEE), що використав модель з цим хешем.

IPFS/Filecoin для ваг — CID моделі фіксується on-chain. Будь-хто може завантажити та перевірити.

contract ModelRegistry {
    struct Model {
        bytes32 weightsHash;    // keccak256 від ваг в ONNX
        string ipfsCID;         // для завантаження
        address owner;
        bool isPublic;
    }
    
    mapping(bytes32 => Model) public models;
    
    function registerModel(
        bytes32 modelId,
        bytes32 weightsHash,
        string calldata ipfsCID
    ) external {
        models[modelId] = Model(weightsHash, ipfsCID, msg.sender, true);
    }
}

Де це використовується зараз

DeFi оцінка ризику — on-chain кредитний скоринг на основі on-chain активності. Малі моделі (логістична регресія, XGBoost) добре підходять для zkML.

Генеративні NFT — атрибути NFT визначаються ML-моделлю, результат перевіряємий. Моделі діапазоном 1–10M параметрів, прийнятний час доказу.

Автономні агенти — AI агент управляє on-chain позиціями. Тут zkML все ще нереалістичний для LLM-агентів, використовується TEE або оптимістичний підхід.

On-chain детектування шахрайства — кожен своп проходить через fraud scoring, результат впливає на fee tier або доступність. Логістична регресія — ідеальний кандидат для zkML.

Етапи розробки

Фаза 1 — Вибір моделі та квантизація (2–3 тижні). Підбір архітектури моделі під zkML обмеження, навчання, квантизація, перевірка точності. Часто це найскладніший етап — модель потрібно спрощувати.

Фаза 2 — Компіляція схеми (1–2 тижні). Компіляція ONNX → Halo2 схема через EZKL, калібрування параметрів, вимірювання часу доказу та розміру доказу.

Фаза 3 — On-chain верифікатор (1–2 тижні). Розпорядження Solidity-верифікатора, розробка oracle інтерфейсу, тестування end-to-end потоку.

Фаза 4 — Інфраструктура (2–3 тижні). Вузли інференсу (GPU), конвеєр генерації доказів, моніторинг, fallback механізми.

Фаза 5 — Інтеграція (1–2 тижні). Інтеграція до контракту, що запитав, тестування на testnet, оптимізація газу для верифікації.

Всього: 7–12 тижнів до production. Основний невідомий фактор — наскільки добре конкретна модель підлягає квантизації без втрати якості.