Розробка протоколу синтетичних активів під ключ

Synthetix втратив близько 37 мільйонів доларів кілька років тому не через вразливість у коді — через баг в оракулі Chainlink для корейської вони. Один бот прочитав невірну ціну, виконав 37 мільйонів транзакцій sETH/sKRW за кілька хвилин. Протокол відкотив угоди через governance. Ця показова історія

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

Часті запитання

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

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

Synthetix втратив близько 37 мільйонів доларів кілька років тому не через вразливість у коді — через баг в оракулі Chainlink для корейської вони. Один бот прочитав невірну ціну, виконав 37 мільйонів транзакцій sETH/sKRW за кілька хвилин. Протокол відкотив угоди через governance. Ця показова історія ілюструє головний біль синтетичних активів: протокол цілком живе на точності цінових даних, і будь-який збій у цьому шарі смертельний. Наша команда виконала понад 12 проєктів у цій галузі, і ми знаємо, де розставити захисти. Розробка протоколу синтетичних активів — це не просто написання смарт-контрактів, а побудова економічно стійкої системи з нульовою толерантністю до помилок оракулів та ліквідацій. Якщо ви плануєте запуск власного протоколу, зв'яжіться з нами — ми допоможемо уникнути типових помилок.

Чому розробка протоколу синтетичних активів потребує особливого підходу?

Два принципово різних механізми лежать в основі більшості синтетичних протоколів. Вибір моделі визначає ризики, складність і газові затрати.

Debt pool модель (Synthetix v2/v3) — розробка протоколу синтетичних

Всі стейкери протоколу колективно несуть борг перед держателями синтетиків. Якщо держателі sAAPL заробляють, стейкери втрачають — пропорційно частці в загальному debt pool. Це створює zero-sum динаміку всередині протоколу і складну математику P&L для провайдерів ліквідності.

Головна проблема debt pool: якщо одні синтетики зростають в ціні значно швидше за інші, борг стейкерів роздувається асиметрично. Synthetix v2 вирішував це через debt hedging за допомогою индексов синтетиків на Curve. Synthetix v3 розвів колатеральні пули по ізольованих ринках — тепер ризик не розмазується по всіх стейкерах глобально.

CDP модель з overcollateralization (Mirror, Abracadabra)

Кожен синтетик забезпечений заставою в іншому активі з надлишком. Mirror Protocol чеканив mAAPL, mTSLA під заставу UST з collateral ratio 150%+. Після краху UST — нічим було забезпечити погашення. Це екзистенційний ризик будь-якої CDP-синтетики: якість забезпечення визначає стійкість всієї системи.

Параметр Debt Pool (Synthetix) CDP (Mirror/Abracadabra)
Ліквідність Теоретично нескінченна (mint on-demand) Обмежена заставою
Ризик стейкера Розділений борг пулу Ізольований (тільки своя позиція)
Оракул dependency Критична Критична
Складність аудиту Висока Середня
Gas cost mint Низький Середній

Які ризики притаманні протоколам синтетичних активів?

Головний ризик — атаки на оракули, як у кейсі з Synthetix. Другий — ліквідації при різких рухах ринку: протокол повинен коректно обробляти ситуації, коли ціна застави падає на 40% за один блок. Третій — економічна атака через маніпуляцію цінами на DEX, де беруться цінові фіди. Для CDP-моделі критично якість застави: якщо стейблкоїн, що використовується як забезпечення, втрачає прив'язку, вся система руйнується. Ми також враховуємо ризики, специфічні для gas optimization: неоптимізовані контракти ведуть до високих комісій при mint/burn, що знижує конкурентоспроможність протоколу. У нашій практиці ми виявляли в середньому 3 критичні вразливості на проєкт під час аудиту.

Як захистити протокол від атак на оракули?

Latency arbitrage

Synthetix v1 страждав від frontrunning: трейдер бачив у мемпулі оновлення оракула, відправляв транзакцію з вищим gas, торгував за старою ціною до того, як оновлення проходило. Це називається latency arbitrage.

Рішення, яке Synthetix впровадив — off-chain pricing з on-chain settlement: ціна підписується авторизованим вузлом в момент угоди, контракт верифікує підпис. Сліпедж нульовий, latency arbitrage неможливий. Схожий механізм використовує Pyth Network через Wormhole.

function exchange( bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, bytes calldata priceUpdateData, // Signed price from Pyth uint256 publishTime ) external { // Verify price freshness require(block.timestamp - publishTime <= MAX_PRICE_LATENCY, "Price too old"); // Update price on-chain atomically with trade pyth.updatePriceFeeds{value: msg.value}(priceUpdateData); // Execute exchange at verified price _internalExchange(sourceCurrencyKey, sourceAmount, destinationCurrencyKey); } 

Реальні активи (RWA синтетика): специфіка

Синтетики на акції, сировину, форекс працюють тільки в години торгів. Контракт повинен знати, коли ринок закритий, і блокувати торгівлю в ці періоди — інакше арбітражері будуть експлуатувати gap між закриттям і відкриттям ринку.

Для RWA-синтетики обов'язкові:

  • Market hours oracle — перевірка активності торгів
  • Circuit breaker при відхиленні ціни більш ніж на 10% між оновленнями
  • Settlement механізм для expired синтетиків

Як ми будуємо синтетичний протокол

Стек і компоненти

Core contracts (Solidity):

  • SynthFactory — деплой нових синтетичних ERC-20
  • CollateralManager — управління заставою, розрахунок C-ratio
  • ExchangeEngine — логіка обміну, fee routing
  • DebtLedger — облік глобального боргу (для debt pool моделі)
  • OracleAggregator — агрегація Chainlink + Pyth з fallback

Розробка в Foundry з fork-тестами проти mainnet. Особливо важливо тестувати сценарії з історичними ціновими даними — replay реальних ринкових рухів через vm.warp і mock оракулів. Ми приділяємо особливу увагу gas optimization: кожен opcode може бути оптимізований, що знижує витрати користувачів на 15-20%.

Formalization invariants для Certora:

  • Сума всіх синтетиків у доларовому еквіваленті ≤ сума застави × max C-ratio
  • Після ліквідації C-ratio позиції завжди ≥ target C-ratio

The Graph subgraph для індексації mint/burn подій, позицій, історичних боргів — без нього фронтенд буде читати стан через повільні on-chain виклики.

Ліквідаційний механізм в деталях

Для CDP моделі: якщо C-ratio опускається нижче мінімального порогу, позиція відкривається для ліквідаторів. Ліквідатор спалює синтетик, отримує заставу зі знижкою (зазвичай 10-15%).

Критичний момент — ліквідаційний флаг: не можна ліквідувати позицію атомарно, якщо це створює flash loan вектор. Схема: ліквідатор повинен тримати синтетик, щоб ліквідувати. Flash loan дозволяє зайняти синтетик, ліквідувати позицію, отримати заставу і повернути займ — якщо протокол не захищений.

Захист: same-block restriction — заборона ліквідації, якщо синтетик був отриманий в тому ж блоці (аналог ERC-4626 share inflation protection).

Приклад ліквідаційного сценаріюПозиція з C-ratio 120% падає до 105% через стрибок ціни. Ліквідатор, який вже володіє синтетиком, спалює його і забирає заставу з дисконтом 12%. Після ліквідації C-ratio позиції відновлюється до 150%.

Чому важлива формальна верифікація?

Для синтетичних протоколів математичні інваріанти критичні: сумарний борг не може перевищувати забезпечення, ліквідації повинні виконуватися коректно при будь-яких ринкових умовах. Ми використовуємо Certora Prover для перевірки цих властивостей, що дає гарантію, недосяжну звичайними тестами.

Метод перевірки Рівень гарантії Час виконання
Unit-тести Низький 1-2 дні
Fork-тести з історичними даними Середній 2-3 дні
Формальна верифікація (Certora) Високий 1-2 тижні

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

  • Архітектурний документ з обґрунтуванням вибору моделі (debt pool / CDP)
  • Смарт-контракти на Solidity (Foundry), покриті unit, integration і fork-тестами
  • Інтеграція з оракулами (Chainlink + Pyth), налаштування circuit breaker
  • Розгортання в тестовій мережі та mainnet, повна документація по контрактах
  • Підтримка після запуску: моніторинг через Tenderly, алерти на аномалії

Процес роботи

  1. Аналітика (5-7 днів). Вибір моделі (debt pool vs CDP), список активів, джерела оракулів, параметри C-ratio, fee structure. Моделювання економіки через Python-симуляції: що відбувається при -40% основного заставного активу.
  2. Проектування (1 тиждень). Архітектура контрактів, storage layout, інтеграції з оракулами. Окремо — механізм управління (governance) для додавання нових синтетиків і зміни параметрів.
  3. Розробка (6-10 тижнів). Core протокол + синтетичні ERC-20 + ліквідації + оракульний агрегатор. Тести: unit, integration, fork-тести, invariant тести в Echidna.
  4. Security (2-3 тижні). Внутрішній аудит (Slither, Mythril, manual), потім зовнішній аудит. Для синтетичних протоколів — обов'язково, мінімум одна зовнішня команда.
  5. Деплой та моніторинг. Tenderly alerts на аномальні рухи C-ratio, обсягів, цінових відхилень.

Орієнтири за термінами

Базовий CDP-протокол для одного синтетика — 6-8 тижнів. Повноцінна multi-asset платформа з debt pool, governance і кількома типами застав — 3-5 місяців. Паралельний аудит додає 4-8 тижнів.

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