Разработка протокола предсказаний (Azuro-стиль)

Мы разрабатываем протоколы предсказаний в стиле Azuro — децентрализованные системы ставок на спортивные события, где пулы ликвидности выступают контрагентом, а смарт-контракты заменяют букмекера. Вы получаете on-chain решение с прозрачной математикой и защитой от манипуляций. Наш опыт — 5+ лет в Web

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1269
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    717
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1008

Мы разрабатываем протоколы предсказаний в стиле Azuro — децентрализованные системы ставок на спортивные события, где пулы ликвидности выступают контрагентом, а смарт-контракты заменяют букмекера. Вы получаете on-chain решение с прозрачной математикой и защитой от манипуляций. Наш опыт — 5+ лет в Web3 и 10+ реализованных протоколов. Свяжитесь с нами, чтобы оценить проект под ключ.

Как работает Azuro-модель

Liquidity Pool как контрагент — разработка протокола предсказаний

В отличие от peer-to-peer ставок (протоколы типа Augur), Azuro использует pool-based модель. Провайдеры ликвидности вносят активы в pool, который автоматически выступает контрагентом для всех ставок. LP получают долю комиссий пропорционально вкладу.

Ключевой риск LP: если одна сторона события перегружена ставками, pool несёт одностороннее exposure. Azuro балансирует через reinforcement — динамическое изменение коэффициентов при дисбалансе. Чем больше ставок на один исход, тем ниже коэффициент на него и тем выше на противоположный. Математика:

newOdds = initialOdds * (1 - k * imbalanceFactor) 

где imbalanceFactor — отношение ставок на каждую сторону. Правильная калибровка k — критична. Слишком агрессивная — коэффициенты падают до неинтересных. Слишком мягкая — pool накапливает односторонний риск.

Core/Express: структура ставок

Azuro различает Core (одиночные ставки) и Express (экспресс/аккумулятор). В Express произведение коэффициентов создаёт большой потенциальный выигрыш, но выплата происходит только при угадывании всех исходов. Контрактная логика Express: проверяем каждое событие последовательно, если одно проиграло — весь Express проигран, все заблокированные средства возвращаются в pool.

LP lockup — сложная часть. При принятии ставки pool резервирует потенциальную выплату (maxPayout = betAmount * odds). Эти средства недоступны для новых ставок пока событие не разрешено. При большом количестве одновременных событий locked/available ratio может упасть до 0.2 — pool физически не может принять новые ставки. Нужна механика maxExposure per event и global maxLockFraction.

Oracle и resolve: где ломаются протоколы

Разрешение результатов — наиболее уязвимое место. Централизованный oracle — single point of failure и manipulation. Azuro использует Data Providers (DP) — авторизованные адреса, которые могут подтверждать результаты. Несколько DP, консенсус-механизм для спорных случаев.

Типичные проблемы:

  • Delayed resolve. DP не подтверждает результат вовремя. Ставки заблокированы, LP не могут выйти. Нужен timeout: если результат не пришёл за N часов после scheduled event time — ставки автоматически рефандятся.
  • Wrong result. DP подтвердил неверный исход. Нужен dispute period (24-48 часов) + governance overrule через DAO или multisig. После dispute period результат финализируется.
  • Cancelled event. Матч отменён (дождь, VAR, disqualification). Протокол должен поддерживать CANCELED статус → полный рефанд всех ставок.

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

Ключевые компоненты

  • LP Contract — управление ликвидностью. ERC-20 LP-токены, addLiquidity, removeLiquidity с lock period (стандартно 7 дней — защита от flash liquidity attacks). Учёт locked/available funds.
  • Core Contract — приём ставок. bet(uint256 conditionId, uint256 outcomeId, uint256 amount, uint256 minOdds, uint256 deadline). Параметр minOdds — защита от odds slippage (аналог slippage protection в DEX). deadline — ставка отклоняется если блок > deadline.
  • Condition — одно событие. Структура: conditionId, gameId, outcomes[], reinforcement, margin, state, ipfsHash. ipfsHash содержит метаданные события (команды, время, тип). On-chain хранить строки — дорого.
  • PrematchCore / LiveCore — раздельные контракты для prematch и live ставок. Live ставки требуют более частого обновления коэффициентов (каждую минуту) и другой oracle-логики.
Компонент Ответственность
LiquidityTree Хранение LP позиций, расчёт withdrawable
OddsLib Математика коэффициентов, reinforcement
AzuroBet (ERC-721) NFT-токен ставки
BettingEngine Основная логика ставок и выплат
DataProvider Oracle для результатов
ProxyFront Entry point с permit2 поддержкой

Ставка как NFT

Каждая ставка — ERC-721 токен. Это позволяет: трансфер ставок между адресами, вторичный рынок (sell pending bet), агрегацию в wallet. tokenURI генерируется on-chain или хранится на IPFS с метаданными события.

Математика маржи

Azuro закладывает маржу в коэффициенты — не явный fee, а built-in spread. При бинарном исходе с true probability 50%/50%, коэффициенты будут не 2.0/2.0, а например 1.9/1.9 при 5% марже. Математика:

margin = 1 - (1/odds1 + 1/odds2 + ...) trueOdds = publishedOdds * (1 - margin) 

При правильной калибровке margin покрывает: operational costs DP, резерв для плохих результатов, profit protocol treasury.

Почему Azuro-модель лучше peer-to-peer?

В P2P-протоколах (Augur, PolyMarket) ликвидность распределена между исходами, что приводит к большому спреду и недостаточной глубине для крупных ставок. Azuro с pool-based моделью концентрирует ликвидность: один пул обслуживает все события, а reinforcement перераспределяет её динамически. Сравнение:

Параметр P2P (Augur) Pool-based (Azuro)
Глубина рынка Зависит от числа трейдеров Единый пул
Спред Высокий при низкой активности Низкий, регулируется reinforcement
Время исполнения Может быть долгим Мгновенное
Риск LP Нет прямого LP Требуется управление рисками

Azuro protocol documentation

Как защитить пул ликвидности от одностороннего риска?

Ключевая задача — не допустить, чтобы pool покрывал все ставки на один исход. Azuro использует reinforcement, но этого недостаточно. Дополнительные меры:

  • Max exposure per event — лимит на сумму ставок на одно событие. При превышении ставки отклоняются.
  • Global lock fraction — максимальный процент locked средств от всего пула (обычно 80-90%). Превышение блокирует приём ставок.
  • LP lock period — 7 дней, чтобы предотвратить pump-and-dump ликвидности.
  • Dispute period — защита от неверного результата.
Типичные ошибки при разработке
  • Отсутствие minOdds — ставки проходят с невыгодными коэффициентами после изменения.
  • Некорректная калибровка k — reinforcement слишком агрессивен или слишком слаб.
  • Игнорирование cancelled event — средства застревают навсегда.
  • Централизованный oracle без защиты — одна уязвимость ломает весь протокол.

Процесс работы

Аналитика (1 неделя). Определяем: какие спорты/события, prematch only или + live, модель oracle (централизованный DP или Chainlink Functions), tokenomics LP.

Проектирование (1-2 недели). Контрактная архитектура, схема LP lockup, dispute resolution flow, governance.

Разработка (6-10 недель). Smart contracts + oracle integration + Data Provider backend + subgraph для истории ставок + frontend. Параллельные треки.

Тестирование (2 недели). Симуляция экстремальных сценариев: 90% ставок на один исход, delayed resolve, simultaneous 1000 bet redeem.

Аудит. Обязателен — протокол держит реальные средства пользователей. Фокус аудита: oracle manipulation, LP drain через экзотические event scenarios, reentrancy в payout.

Что входит в работу

  • Архитектурная документация и диаграммы потоков
  • Исходный код смарт-контрактов (Solidity) с юнит-тестами
  • Интеграция оракула (Data Provider или Chainlink)
  • Subgraph для истории ставок (The Graph)
  • Deploy-скрипты и документация по деплою
  • Обучение вашей команды (2-3 дня)
  • Поддержка после запуска (1 месяц)

Ориентиры по срокам

Базовый протокол с prematch ставками и централизованным DP — 2-3 месяца. Полный протокол с live betting, dispute resolution и DAO governance — 4-6 месяцев.

Стоимость рассчитывается после детальной оценки требований. Экономия на комиссиях по сравнению с централизованными решениями может достигать 40% за счёт устранения посредников. Закажите консультацию — оценим ваш проект.