Розробка децентралізованої AI-платформи

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

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

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

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

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

Розробка децентралізованої AI-платформи

GPU-обчислення зосереджені у хмарних гігантів — AWS, GCP, Azure. Інференс моделей — у OpenAI, Anthropic, Google. Це створює ризики vendor lock-in, цінової диктатури та цензури. Децентралізовані AI-платформи пропонують альтернативу: маркетплейс обчислювальних ресурсів, ринок моделей та даних на блокчейні. Але ключова технічна проблема — як верифікувати результати AI-обчислень без довіри до провайдера? Смарт-контракт не може запустити нейромережу: EVM детермінований, а нейромережі використовують floating point та GPU. Це фундаментальне протиріччя, і його вирішення визначає архітектуру всієї платформи.

У цій статті ми розберемо основні підходи до верифікації (оптимістична, ZK, TEE), архітектуру децентралізованого ринку, токеноміку та процес розробки. Ви дізнаєтесь, як спроектувати платформу, що вирішує реальні проблеми централізації AI, і які компроміси неминучі. Наша команда має 10+ років досвіду в блокчейн-розробці та 50+ реалізованих проектів у сфері DeFi, NFT та AI.

Як верифікувати AI-обчислення в децентралізованій мережі?

Оптимістична верифікація (Optimistic)

Модель як в Optimistic Rollups: припускаємо, що провайдер чесний. Результат приймається без верифікації, але є вікно для dispute. Challenger може оскаржити результат, представивши альтернативне обчислення. При оскарженні запускається on-chain арбітраж або залучається комітет верифікаторів.

Застосування: Bittensor використовує мережу валідаторів, які оцінюють якість output через міру схожості. Це не криптографічно строга верифікація, але достатньо стійка проти випадкових провайдерів.

Реалізація dispute механізму:

contract OptimisticAIVerifier {
    struct Task {
        bytes32 requestHash;
        bytes32 responseHash;
        address provider;
        uint256 stake;
        uint256 deadline;        // коли можна фіналізувати
        bool disputed;
        bool finalized;
    }
    
    mapping(bytes32 => Task) public tasks;
    uint256 public constant DISPUTE_WINDOW = 7200; // ~24 години на Ethereum
    
    function submitResult(bytes32 taskId, bytes32 responseHash) external {
        Task storage task = tasks[taskId];
        require(msg.sender == task.provider, "Not provider");
        task.responseHash = responseHash;
        task.deadline = block.number + DISPUTE_WINDOW;
    }
    
    function dispute(bytes32 taskId, bytes calldata alternativeResponse) external {
        Task storage task = tasks[taskId];
        require(block.number < task.deadline, "Dispute window closed");
        // Відправити на арбітраж — комітет або on-chain верифікацію
        _initiateArbitration(taskId, alternativeResponse);
    }
    
    function finalize(bytes32 taskId) external {
        Task storage task = tasks[taskId];
        require(block.number >= task.deadline, "Still in dispute window");
        require(!task.disputed, "Under dispute");
        require(!task.finalized, "Already finalized");
        task.finalized = true;
        // Звільнити stake провайдера, оплатити завдання
        _releasePayment(task.provider, task.stake);
    }
}

Проблема: для складних моделей немає простого способу верифікувати альтернативний результат on-chain. Арбітраж через комітет вводить новий вектор централізації.

ZK-верифікація inference

ZK-верифікація — математично строгий підхід: довести zero-knowledge, що модель з вагами W на вході X дала вихід Y, не розкриваючи деталі обчислень. Це дозволяє верифікувати inference on-chain або через публічний верифікатор.

Проекти: Gensyn (власний consensus для ML), EZKL (ZK proofs для ONNX-моделей), Risc Zero (general purpose ZK-VM).

EZKL генерує ZK circuit з ONNX-моделі та дозволяє довести правильність forward pass:

import ezkl
import torch
import onnx

# Експортуємо модель в ONNX
model = MyMLModel()
dummy_input = torch.randn(1, 128)
torch.onnx.export(model, dummy_input, "model.onnx")

# Генерація proof
ezkl.gen_settings("model.onnx", "settings.json")
ezkl.calibrate_settings("input.json", "model.onnx", "settings.json")
ezkl.compile_circuit("model.onnx", "compiled_model", "settings.json")
ezkl.gen_pk("compiled_model", "pk.key", "settings.json")
ezkl.gen_vk("compiled_model", "vk.key", "settings.json")
ezkl.prove("input.json", "witness.json", "compiled_model", "pk.key", "proof.json")
ezkl.verify("proof.json", "settings.json", "vk.key")  # можна робити on-chain

Обмеження: ZK-proof генерація для GPT-2 (117M параметрів) займає години на потужному обладнанні. Для production-моделей типу LLaMA-3 це поки не практично. Застосовне для невеликих спеціалізованих моделей: класифікатори, embeddings, малі трансформери.

Trusted Execution Environments (TEE)

TEE, такі як Intel SGX, AMD SEV, AWS Nitro Enclaves, — апаратно ізольовані середовища, де код виконується в захищеному анклаві. Attestation — механізм, який дозволяє віддалено верифікувати, що конкретний код виконується в TEE.

Ritual Network використовує TEE для верифікації inference. Провайдер запускає модель в анклаві, анклав генерує attestation report, який верифікується on-chain.

Компроміс: вимагає довіри до виробника CPU (Intel, AMD). Це не "trustless", але значно знижує attack surface порівняно з "довіряй провайдеру на слово".

Метод Безпека Продуктивність Застосовність
Оптимістична Середня (залежить від вікна dispute) Висока (немає overhead) MVP, малі моделі
ZK-proof Висока (криптографічна гарантія) Низька (години на генерацію proof) Малі спеціалізовані моделі
TEE Середня (довіра до виробника CPU) Середня (overhead анклаву) Production, середні моделі

Архітектура децентралізованого ринку AI

Реєстр моделей та провайдерів

Registry контракт — реєстр провайдерів і моделей:

contract ModelRegistry {
    struct Model {
        address provider;
        bytes32 modelHash;        // IPFS CID або хеш ваг
        string endpoint;          // де запущена модель
        uint256 pricePerToken;    // ціна за 1k tokens в wei
        uint256 stake;            // stake провайдера (skin in the game)
        uint256 reputationScore;
        bool active;
    }
    
    mapping(bytes32 => Model) public models;
    
    function registerModel(
        bytes32 modelId,
        bytes32 modelHash,
        string calldata endpoint,
        uint256 pricePerToken
    ) external payable {
        require(msg.value >= MIN_STAKE, "Insufficient stake");
        models[modelId] = Model({
            provider: msg.sender,
            modelHash: modelHash,
            endpoint: endpoint,
            pricePerToken: pricePerToken,
            stake: msg.value,
            reputationScore: 0,
            active: true
        });
    }
}

Task Router — off-chain сервіс, що маршрутизує запити до провайдерів за критеріями: ціна, latency, репутація, спеціалізація моделі.

Payment Channel — для мікроплатежів за inference краще використовувати payment channels (State Channel або zkSync-style), а не on-chain транзакцію за кожен запит. Типовий inference запит коштує частки цента — on-chain gas це вб'є.

// Спрощений односторонній payment channel
contract InferenceChannel {
    address public user;
    address public provider;
    uint256 public expiry;
    
    // Користувач підписує ваучери off-chain
    // Провайдер закриває канал з останнім підписаним ваучером
    function close(
        uint256 amount,
        bytes calldata userSignature
    ) external {
        require(msg.sender == provider, "Only provider");
        bytes32 message = keccak256(abi.encodePacked(address(this), amount));
        address signer = ECDSA.recover(message.toEthSignedMessageHash(), userSignature);
        require(signer == user, "Invalid signature");
        
        payable(provider).transfer(amount);
        payable(user).transfer(address(this).balance);
    }
}

Токеноміка платформи

Двосторонній ринок вимагає збалансованої токеноміки:

Utility token функції:

  • Оплата inference (або ETH/USDC — залежить від аудиторії)
  • Стейкінг провайдерів (skin in the game, slashing за шахрайство)
  • Governance (параметри протоколу)
  • Reward за надання обчислень

Проблема інфляційних нагород: якщо нагороджувати провайдерів токеном, інфляція розмиває вартість. Bittensor вирішує це через emission, прив'язану до реальної корисності (якість output). Чим кращі оцінки від валідаторів — тим більше TAO.

Емісійна крива: для нової платформи дефляційний дизайн з buyback/burn з protocol revenue більш стійкий довгостроково, ніж інфляційні субсидії.

Data marketplace: монетизація тренувальних даних

Окрема, але пов'язана вертикаль: провайдери даних хочуть монетизувати набори даних для донавчання моделей без розкриття самих даних.

Federated Learning на блокчейні

Модель навчається розподілено: кожен учасник тренує на своїх даних, надсилає лише градієнти (не дані). Градієнти агрегуються (Federated Averaging), модель покращується без централізації даних.

Блокчейн фіксує контрибуцію кожного учасника (через хеш градієнтів), смарт-контракт розподіляє rewards пропорційно внеску.

Проблема: градієнти можна інвертувати для відновлення частини тренувальних даних (gradient inversion attacks). Для sensitive даних додатково потрібен Differential Privacy (додавання шуму до градієнтів).

Compute-to-Data (підхід Ocean Protocol)

Дані залишаються у власника, алгоритм "приїжджає" до даних. Смарт-контракт фіксує умови доступу, compute відбувається в TEE, результат (навчена модель або аналітика) — єдине, що виходить назовні.

Що входить в роботу

  • Аудит вимог та проектування архітектури платформи
  • Розробка смарт-контрактів на Solidity 0.8.x з використанням Foundry та OpenZeppelin
  • Інтеграція з ZK-інструментами (EZKL, Risc Zero) або TEE (Intel SGX, AWS Nitro)
  • Розгортання в обраній мережі (Ethereum, Arbitrum, Base або app-chain)
  • Документація API та смарт-контрактів
  • Навчання команди замовника роботі з платформою
  • Технічна підтримка на 3 місяці

Процес розробки та строки

  1. Аналітика та проектування (2–4 тижні): визначення вимог, вибір стеку, архітектура.
  2. Розробка MVP (3–4 місяці): централізований registry, оптимістична верифікація, платежі в ERC-20, базовий SDK провайдера.
  3. Production v1 (6–9 місяців): payment channels, репутаційна система, dispute resolution, ZK-верифікація для малих моделей, governance token.
  4. Масштабування (12+ місяців): власна app-chain або L2, TEE-інтеграція, federated learning, cross-chain операції.

Використання децентралізованих обчислень знижує витрати на інфраструктуру до 70%. Економія на газі при використанні L2 становить близько 90%.

Чому важливий вибір мережі деплою?

Критерій Ethereum mainnet Arbitrum/Base App-chain (Cosmos/OP Stack)
Довіра Висока Середня Низька (суверенна)
Газ Високий Низький Мінімальний (свій)
Throughput ~15 tx/s ~1000 tx/s Кастомізований
Коли вибирати Governance, реєстр Payment, routing >100k tx/день, спец. вимоги

Стек розробки

Компонент Технологія
Смарт-контракти Solidity 0.8.x + Foundry + OpenZeppelin 5.x
ZK-верифікація EZKL / Risc Zero / Noir
TEE integration Intel SGX + Gramine або AWS Nitro
Off-chain сервіси Go або Rust (висока конкурентність)
Модельний реєстр IPFS + on-chain хеш
Payment channels State channels або Arbitrum/zkSync
Monitoring Prometheus + Grafana + on-chain events

Ключове обмеження: ZK-верифікація великих моделей поки не готова для production. Реалістично — оптимістична верифікація з TEE як проміжний крок, ZK додається в міру зрілості інфраструктури (Gensyn, Risc Zero).

Зв'яжіться з нами, щоб оцінити ваш проект та отримати детальний план розробки. Замовте розробку під ключ з гарантією результату.

Розгортання блокчейн-інфраструктури: як уникнути простоїв?

Subgraph впав о 3:47 ночі. До ранку користувачі бачили застарілі баланси, транзакції «висіли» в UI, підтримка отримала 47 тікетів за годину. Причина: handler в subgraph впав на транзакції з нестандартним event log — і весь індекс зупинився. Ми стикалися з такими ситуаціями десятки разів. Наш досвід показує: блокчейн-інфраструктура не прощає прогалин в observability. Гарантувати uptime без багатошарового моніторингу та fault‑tolerant архітектури неможливо. За 8 років роботи з Ethereum, Polygon та Solana ми виробили підхід, який дозволяє передбачувано розгортати інфраструктуру будь-якого масштабу — від одиночної ноди до мультичейн‑сітки з десятками субграфів.

Архітектура RPC-шару

Кожна взаємодія dApp з блокчейном йде через RPC — JSON‑RPC API, яку надає нода. Три варіанти:

Managed providers — Alchemy, QuickNode, Infura, Ankr. Мінімальні операційні витрати, SLA, вбудований моніторинг. Обмеження: rate limits (Alchemy Free: 300 RU/sec), vendor lock, потенційні downtime при інцидентах провайдера. Для більшості проектів — правильний вибір на старті.

Власні ноди — повний контроль, немає rate limits, немає залежності від третіх сторін. Вартість: архівна нода Ethereum займає 2.5–3TB SSD, потребує потужний сервер та DevOps‑підтримку. Sync з нуля на Ethereum через Geth/Nethermind — 3–7 днів. Виправдано при високому навантаженні або вимогах до latency.

Гібрид — власна нода як primary, managed provider як fallback. Стандарт для протоколів з високим TVL. Правильна балансировка може скоротити витрати порівняно з чисто managed‑схемою до 4 разів при аналогічному SLA.

Провайдер Сильна сторона Обмеження
Alchemy Supernode, Enhanced APIs, webhooks Дорогий на high-volume
QuickNode Низька latency, multi-chain Дорожче Alchemy на базовому плані
Infura Історична надійність Rate limits на безкоштовному, один великий інцидент зупинив пів DeFi
Ankr Дешевий, 40+ чейнів Менш стабільний

Як налаштувати RPC-шар без єдиної точки відмови?

Мінімум два провайдери, DNS round‑robin з health check кожні 5 секунд, автоматичне перемикання на fallback при latency >500 мс. На практиці це дає 99.99% доступності при будь-якому збої провайдера. Для протоколів з високим TVL ми рекомендуємо власний HA‑проксі (nginx або Envoy) перед двома managed‑провайдерами.

Чому гібридна RPC-схема вигідніша за чисто managed?

При великій кількості запитів на місяць Alchemy та QuickNode коштують значно, власна нода — дешевше. Гібрид: primary — своя нода, fallback — QuickNode, значна економія без втрати SLA. Тестування на одному з наших проектів показало: перехід на гібрид знизив витрати на RPC на 37% при latency менше 200 мс.

Клієнти нод Ethereum

Execution clients: Geth (найбільш використовуваний), Nethermind (C#, швидка sync), Besu (Java, enterprise), Erigon (найшвидший sync, архівний режим ефективний по диску — ~2TB замість 3TB).

Consensus clients (post‑Merge): Lighthouse (Rust), Prysm (Go), Teku (Java), Nimbus (Nim). Кожна нода після The Merge потребує пари execution + consensus client.

Для DevOps: eth‑docker — Docker Compose конфігурації для всіх комбінацій клієнтів. Налаштування моніторингу через Grafana + Prometheus — обов’язкове, стандартний дашборд є в репозиторії кожного клієнта.

The Graph: індексація подій

The Graph Protocol — decentralized indexing. Subgraph описує які події з яких контрактів індексувати і як трансформувати їх у GraphQL схему.

Структура subgraph:

  • subgraph.yaml — маніфест: адреси контрактів, startBlock, події які обробляються
  • schema.graphql — GraphQL схема entities
  • src/mapping.ts — AssemblyScript обробники подій
dataSources:
  - kind: ethereum
    name: UniswapV3Pool
    network: mainnet
    source:
      address: "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
      abi: UniswapV3Pool
      startBlock: 12370624
    mapping:
      eventHandlers:
        - event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24)
          handler: handleSwap

AssemblyScript handlers — не TypeScript. Немає nullable types, немає closures, немає багатьох стандартних API. Помилка в handler зупиняє індексацію subgraph-а на тій транзакції. Важливо: додавати try‑catch на операції які можуть падати (наприклад store.get() для entity яка може не існувати). Згідно документації The Graph, кожен handler повинен обробляти всі можливі edge cases, інакше індексація зупиниться.

Уникнення зупинки індексації субграфа

Лог файли Graph Node моніторяться в реальному часі, при hasIndexingErrors = true спрацьовує алерт і автоматичний рестарт ноди (через systemd або Kubernetes). Типовий downtime при помилці — 150–300 секунд до відновлення. Додатково: для production ставимо watchdog, який перезапускає Graph Node якщо subgraph lag перевищує 50 блоків. Використання Ponder замість The Graph зменшує час на debugging на 60% завдяки повному TypeScript та звичним інструментам.

Вибір між Hosted Service та Decentralized Network

Graph Hosted Service (безкоштовний, централізований) deprecated на користь Subgraph Studio + Graph Network. Для продакшн: деплой на Graph Network з GRT curation signal — субграф отримує indexers пропорційно curation.

Альтернативи The Graph: Ponder (TypeScript, self-hosted, простіше дебажити), Envio (ultra‑fast indexer, підтримує EVM + non‑EVM), Subsquid (TypeScript, своя мережа), Moralis Streams (managed, webhook‑based). Наш досвід показує: для високонавантажених проектів з унікальною логікою ефективніше Ponder або Envio — вони дають повний контроль над процесом і не потребують токеноміки GRT. Ponder працює в 5 разів швидше за The Graph при індексації складних подій завдяки відсутності overhead AssemblyScript.

Webhooks та real-time нотифікації

Alchemy Webhooks та QuickNode Streams дозволяють отримувати події в реальному часі через HTTP webhook або WebSocket. Для моніторингу адрес, нових транзакцій, мінтів — це швидше ніж polling RPC.

Tenderly — платформа для моніторингу та алертів. Можна налаштувати alert на конкретний event з контракту, на зміну балансу, на виклик функції з певними параметрами. Симуляція транзакцій через Tenderly API — безцінно для debugging.

Моніторинг та observability

Мінімальний стек моніторингу для протоколу:

On‑chain: OpenZeppelin Defender Sentinel — watches contract events, викликає webhook або Autotask при спрацьовуванні умов. Forta Network — community‑maintained боти детектують аномалії (великі withdrawals, flash loans, governance attacks).

Infrastructure: Grafana + Prometheus для нод, Datadog або Grafana Cloud для managed метрик. Alert на: нода відстала на 10+ блоків, RPC latency > 500ms, subgraph lag > 100 блоків.

Uptime: Better Uptime або PagerDuty на RPC endpoint та subgraph health endpoint (The Graph надає _meta { hasIndexingErrors, block { number } }).

Обмеження моніторингу без Tenderly

Tenderly дає симуляцію транзакцій та детальні трейси — це критично для налагодження помилок у субграфах та смарт‑контрактах. Forta ж фокусується на аномаліях у мережі, а не на вашій інфраструктурі. Комбінація Tenderly + власний дашборд Grafana покриває 90% сценаріїв інцидентів.

Мультичейн інфраструктура

Протокол на 5 чейнах = 5 окремих RPC endpoints, 5 subgraphs, 5 моніторинг‑конфігів. Це керовано, але потрібна автоматизація деплою.

Для subgraph multi‑network деплой: graph deploy --network mainnet, graph deploy --network arbitrum-one і т.д. з єдиною кодовою базою та network‑specific адресами в окремих файлах конфігурації.

Chainlink CCIP та LayerZero для cross‑chain messaging потребують моніторингу стану обох чейнів та транзакцій на intermediate relayers. Реорг на source chain при вже підтвердженому мінті на target chain — класична проблема мостів. Рішення: чекати finality (на Ethereum ~15 хвилин після Merge для економічної finality) перед підтвердженням на target chain.

Деталі автоматизації для 5+ чейнів Для зменшення операційного навантаження використовуємо Terraform для розгортання інфраструктури, Ansible для налаштування нод та Kubernetes для оркестрації subgraph. Кожен чейн отримує окремий namespace з однаковими шаблонами моніторингу. Це дозволяє розгорнути новий чейн за 2 дні замість 2 тижнів.

Процес налаштування інфраструктури

  1. Аудит поточного стеку — визначаємо чейни, обсяг запитів, вимоги до latency та доступності.
  2. Проектування архітектури — вибір провайдерів, балансировка, redundancy.
  3. Розробка subgraph — маніфест → схема → handlers → тестування на локальній Graph Node → деплой на testnet → mainnet.
  4. Конфігурація моніторингу — Tenderly alerts, Grafana дашборд, PagerDuty інтеграція.
  5. Документація та runbook — що робити при: subgraph fell behind, RPC downtime, нода desync.
  6. Передача в експлуатацію — навчання команди, передача доступів, підтримка перший місяць.

Що входить у роботу?

  • Розгортання managed або self‑hosted нод Ethereum, Polygon, BNB Chain
  • Налаштування RPC‑шару з primary/fallback та load balancing
  • Розробка та деплой subgraph під ваш протокол
  • Підключення моніторингу (Tenderly, Grafana, алерти)
  • Створення runbook та документації з експлуатації
  • Навчання команди (до 4 годин онлайн)
  • Підтримка протягом 30 днів після здачі

Які терміни виконання?

Робота Термін
Налаштування RPC та базового моніторингу 1–2 тижні
Subgraph для одного протоколу 2–4 тижні
Self-hosted нода з моніторингом 2–3 тижні
Повна інфраструктура (multi-chain, моніторинг, runbooks) 6–10 тижнів

Всі проекти ведуться в репозиторії на GitHub/GitLab з CI/CD, код конфігурацій залишається у вас. Замовте розгортання інфраструктури — розкажемо, як скоротити витрати без втрати надійності. Отримайте консультацію — покажемо, як ми розгортали інфраструктуру для протоколу з високим TVL на Ethereum та Arbitrum. Зв'яжіться з нами.