Розробка пулів ліквідності для ставок на блокчейні

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

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • 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

Розробка пулів ліквідності для ставок на блокчейні

Централізовані беттинговані платформи працюють по простій моделі: дом приймає всі ризики й встановлює odds з маржою в свою користь. У децентралізованому беттингу ризик розподіляється між провайдерами ліквідності — вони беруть на себе роль «дому» й отримують доходність від маржи, приймаючи можливість убутків при нестандартних исходах.

Протоколи типу Azuro будують саме таку інфраструктуру. Провайдер добавляє USDC в пул, ставки йдуть проти цього пула, odds коригуються динамічно залежно від об'єму ставок й поточного exposure.

Ключова проблема: управління exposure

Дисбаланс ставок

Якщо 90% ставок йде на одну сторону результату (наприклад, на перемогу Реала в дербі), пул несе величезний directional risk. Один результат — провайдери ліквідності теряють, інший результат — заробляють.

Динамічні odds як рішення: при перевищенні exposure threshold на одну сторону, odds на цю сторону автоматично знижуються (роблячи ставку менш привабливою), odds на протилежну сторону зростають. Це балансуючий механізм без централізованого маркет-мейкера.

function calculateOdds(
    uint256 eventId,
    uint8 outcomeId
) public view returns (uint256 odds) {
    ExposureData memory data = exposures[eventId];
    uint256 totalPool = data.lpLiquidity;
    uint256 sideExposure = data.outcomeExposure[outcomeId];
    
    // Чим вищий exposure на сторону, тим ніжи odds
    uint256 adjustedPool = totalPool - sideExposure * MARGIN_FACTOR / 1e18;
    odds = (adjustedPool * 1e18) / (adjustedPool - sideExposure);
}

Це упрощена формула. Реальні системи використовують більш складні моделі з урахуванням correlated events (кілька матчів в одному турнірі), liquidity depth й market maker oracle для початкових odds.

Оракул результатів і манипуляція

Це найуязвівліша точка будь-якого беттинг-протоколу. Хто визначає результат матча? Централізований оратор — точка відказу й довіри одночасно. Компрометація оракула = дренаж всієї ліквідності.

Кілька підходів:

Chainlink Functions / Any API — Chainlink запитує дані з кількох спортивних API (Sportradar, API-Football), агрегує результат через threshold consensus. Атакувати потрібно одночасно кілька джерел.

UMA Optimistic Oracle — результат публікується провайдером, є період оспорювання. Якщо ніхто не оспорив — вважається достовірним. Якщо оспорили — UMA-стейкери голосують. Повільніше, але більш децентралізовано.

Kleros — децентралізований арбітраж для спірних випадків, не для кожного матча.

Для production — комбінація: автоматичне розрішення через Chainlink для очевидних результатів, Kleros для edge cases (матч перерваний, технічні інциденти).

Архітектура контрактів

Структура пула ліквідності

Пул схожий на Uniswap LP, але з кількома відмінностями:

  • LP-токен представляє долю в пулі (аналог LP-токена AMM)
  • Ліквідність заблокована на період активних подій (не можна withdraw поки є відкриті ставки)
  • Withdrawal queue при масовому виводі
struct LiquidityPool {
    uint256 totalLiquidity;     // USDC в пулі
    uint256 lockedLiquidity;    // заблоковано для покриття відкритих ставок
    uint256 totalShares;        // LP-токени
    mapping(address => uint256) shares;
}

function addLiquidity(uint256 amount) external {
    // shares рахуються пропорційно поточній вартості пула
    uint256 newShares = totalShares == 0 
        ? amount 
        : amount * totalShares / totalLiquidity;
    // ...
}

lockedLiquidity — максимально можлива виплата по всіх відкритих ставках. LP не може вивести ліквідність нижче цього порогу. Це інваріант безпеки: пул завжди здатен розрахуватися по поточних ставках.

Ставки як NFT або fungible?

Два підходи: ставка як ERC-721 NFT (унікальна, може торгуватися на вторинному ринку) або як запис в маппінгу контракту.

ERC-721 відкриває можливість ставочного маркетплейса — користувач може продати виигришну ставку до завершення подієї. Це додаткова ліквідність для користувачів й додатковий revenue для протоколу (комісія з вторичних угод). Azuro використовує саме цей підхід через betting ERC-721.

Трейдоффи: чуть вищий газ на створення ставки (~50k gas vs ~30k для маппінгу), складніше аудирується.

Економіка провайдерів ліквідності

Доходність LP = маржа беттинговної платформи - виплати по виигрішним ставкам. При марже 5% та збалансованих ставках — LP заробляє ~5% років плюс додатковий yield від невикористаної ліквідності (стейкинг USDC в Aave, поки события не закриті).

Ризик: при серії крупних upset-результатів (всі андердоги виграють) — LP втрачає. Insurance fund з частини комісій частково буферизує ці втрати.

Орієнтири по термінам

Базовий беттинговий пул з фіксованими odds й centralized оракулом — 1-2 тижні. Повноцінний протокол з динамічними odds, оракулом Chainlink, LP-токеномікою й вторинним ринком ставок — 6-10 тижнів.

Вартість рахується після обговорення архітектури й джерел даних про результати.