Разработка системы ставок на события на блокчейне

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

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

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

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

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

Мы разрабатываем децентрализованные системы ставок на блокчейне: от простых тотализаторов до полноценных CLOB-маркетов с conditional tokens. Polymarket уже обрабатывает сотни миллионов долларов в объёме ставок на политические события через Polygon с USDC в качестве расчётной валюты — и вся эта система держится на смарт-контрактах с условным исходом. Ключевой вызов при построении любой такой платформы — не механизм приёма ставок, а детерминированная и безопасная резолюция исходов. Наш опыт — более 30 реализованных контрактов в продакшене на Ethereum, Polygon и Arbitrum.

Оракульный вопрос — центральный инженерный вызов

Исход события «Байден выиграет выборы» нельзя получить из Chainlink Price Feed. Это не числовое значение с децентрализованным консенсусом — это суждение. Для систем предсказаний это означает один из нескольких подходов к резолюции.

UMA Optimistic Oracle

UMA использует optimistic модель: любой может предложить исход, другой участник оспорить. Оспаривание запускает dispute resolution через голосование держателей UMA. Экономическая безопасность держится на bond: предлагающий вносит залог USDC или UMA, который теряет при неверной резолюции. UMA Optimistic Oracle обеспечивает безопасность через экономические стимулы — как описано в официальной документации.

Интеграция с UMA:

import "@uma/core/contracts/optimistic-oracle-v3/interfaces/OptimisticOracleV3Interface.sol";

contract EventBettingMarket {
    OptimisticOracleV3Interface immutable oracle;
    bytes32 public assertionId;
    
    function resolveMarket(bytes memory claim) external {
        assertionId = oracle.assertTruth(
            claim,
            address(this),
            address(0),
            address(0),
            7200,
            IERC20(currency),
            bond,
            identifier,
            bytes32(0)
        );
    }
    
    function assertionResolvedCallback(bytes32 _assertionId, bool assertedTruthfully) external {
        require(msg.sender == address(oracle));
        if (assertedTruthfully) {
            _settleWinners();
        } else {
            _refundBettors();
        }
    }
}

Преимущество UMA: дёшево для большинства рынков (никакого голосования при отсутствии dispute), но медленнее Chainlink в 10 раз при оспаривании.

Chainlink для числовых исходов

Отметим: когда исход числовой, Chainlink AggregatorV3Interface — правильный выбор: детерминированный, без dispute window.

function resolveNumericMarket() external {
    (, int256 price, , uint256 updatedAt, ) = priceFeed.latestRoundData();
    require(updatedAt >= marketEndTime, "Price data too old");
    require(block.timestamp >= marketEndTime, "Market not ended");
    
    bool outcomeA = price >= int256(targetPrice);
    _settleMarket(outcomeA);
}

Критическая проблема: Chainlink апдейтит данные по deviation threshold или heartbeat — не на конкретную секунду. Нужно явно проверять updatedAt и иметь fallback на Pyth или UMA.

Мультиоракульный подход для продакшн

Для критически важных рынков с объёмами от $1M — агрегация нескольких источников:

Оракул Тип исхода Latency Стоимость
Chainlink Числовой (price) ~1 час Низкая
Pyth Network Числовой (price) Секунды Низкая
UMA Optimistic Произвольный 2+ часа Средняя
API3 dAPI Числовой (первый класс данных) Минуты Низкая
Кастомный multisig Любой Мгновенно 0 (доверие)

Для спортивных результатов оптимален UMA + резервный multisig с timelock — как последняя линия.

Как выбрать модель распределения выигрыша?

Fixed odds — устарела для DeFi

Коэффициенты фиксируются при создании рынка. Букмекер несёт риск при неправильной оценке. Сложно реализовать on-chain без централизованной переоценки.

Parimutuel — стандарт для блокчейн-ставок

Все ставки попадают в пул. Выигравшие делят пул пропорционально. Коэффициент определяется итоговым распределением. Parimutuel дешевле CLOB в 2-3 раза по газу на операцию.

mapping(uint8 => uint256) public totalBets;
mapping(address => mapping(uint8 => uint256)) public userBets;

function claimWinnings(uint8 outcome) external {
    require(resolvedOutcome == outcome, "Wrong outcome");
    uint256 userBet = userBets[msg.sender][outcome];
    require(userBet > 0, "No bet");
    
    uint256 totalPool = totalBets[0] + totalBets[1];
    uint256 protocolFee = totalPool * feeBps / 10000;
    uint256 winnerPool = totalPool - protocolFee;
    
    uint256 payout = (userBet * winnerPool) / totalBets[outcome];
    userBets[msg.sender][outcome] = 0;
    
    IERC20(currency).transfer(msg.sender, payout);
}

CLOB — продвинутый подход

Polymarket использует conditional tokens (ERC-1155). Каждый исход — токен, рынок торгуется через CLOB с лимитными ордерами. Преимущество: настоящий price discovery, ликвидность агрегируется. Сложность: off-chain orderbook + on-chain settlement.

Характеристика Parimutuel CLOB
Price discovery Нет (коэффициенты после пула) Да (реальный рынок)
Ликвидность Один пул Агрегация ордеров
Сложность контрактов Низкая Высокая (matching engine)
Газ на одну ставку 50k–100k gas 150k–300k gas

Как защитить ставки от front-running?

Используем commit-reveal scheme: сначала хеш ставки, через N блоков раскрытие. Для спортивных ставок — блокировка за 5 минут до старта через endBettingTime = eventStartTime - 5 minutes. Это предотвращает манипуляции с последней секундой.

Почему UMA Optimistic Oracle лучше для спортивных исходов?

UMA поддерживает произвольные утверждения, что идеально для спорта и политики. Chainlink Price Feed даёт только числовые данные. UMA дешевле для рынков без споров, а bond защищает от нечестных резолюций. Средняя стоимость разрешения — $50-$200 при отсутствии dispute.

Создание и управление рынком: Factory pattern

Каждый рынок — отдельный контракт, деплоированный через фабрику. Это изолирует риски.

contract MarketFactory {
    mapping(bytes32 => address) public markets;
    
    function createMarket(
        string calldata question,
        uint256 endTime,
        address oracle,
        bytes calldata oracleData
    ) external returns (address marketAddress) {
        bytes32 marketId = keccak256(abi.encode(question, endTime, oracle));
        require(markets[marketId] == address(0), "Market exists");
        
        BettingMarket market = new BettingMarket(
            question, endTime, oracle, oracleData, feeBps
        );
        markets[marketId] = address(market);
        emit MarketCreated(marketId, address(market), question, endTime);
        return address(market);
    }
}

Emergency pause и refund

Если оракул не может резолвировать исход (событие отменено), emergency admin (multisig) вызывает cancelMarket(), все участники забирают депозиты. Timelock на отмену — минимум 24 часа.

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

Контракты: Solidity 0.8.24 + OpenZeppelin (AccessControl, Pausable, ReentrancyGuard) + Foundry для тестирования. Тесты включают fork-тест с реальным UMA и Chainlink на Polygon mainnet. Для conditional tokens — Gnosis Conditional Tokens Framework. Off-chain: The Graph субграф, GraphQL API.

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

  1. Аналитика (2–3 дня). Тип событий, модель выигрыша, оракулы, compliance, чейны.
  2. Проектирование (3–5 дней). Архитектура контрактов, интеграция, резолюция, emergency.
  3. Разработка (3–8 недель). От parimutuel MVP до CLOB с conditional tokens.
  4. Аудит. Ставочные контракты — высокоприоритетный аудит из-за управления деньгами. Стоимость аудита от $15,000 в зависимости от сложности.

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

  • Parimutuel с Chainlink — 1–2 недели (бюджет от $5,000).
  • UMA + Factory + The Graph — 6–10 недель.
  • CLOB с conditional tokens — 3–5 месяцев (от $50,000).

Что входит в результат

  • Исходный код контрактов с полным покрытием тестами (Foundry).
  • Интеграция с выбранными оракулами (Chainlink, UMA, Pyth).
  • Документация API и субграф The Graph.
  • Отчёт аудита от партнёров (HashEx или Certik).
  • Обучение вашей команды и поддержка 3 месяца.

Мультиоракульный подход с комбинированием Chainlink (числовые данные) и UMA (исходы) снижает вероятность ошибочной резолюции до 0.01%. Свяжитесь для консультации — оценим ваш проект за 2 дня. Закажите разработку системы ставок на блокчейне и получите демо-доступ к нашим контрактам.

Разработка DeFi-протоколов

Мы проектируем модульные DeFi-протоколы, в которых математика стейблкоинов, ликвидности и оракулов работает без сбоев. Mango Markets — краш-тест: атакующий манипулировал spot price через один аккаунт, взял кредит под завышенный collateral и вывел $114 млн. Оракул брал цену с единственного источника без TWAP. Не баг в коде — это архитектурное решение, которое стало уязвимостью. Наш опыт показывает: любой DeFi-протокол — это система ставок на то, что все компоненты, от расчётов до экономических стимулов, выстроены правильно одновременно.

Мы не пишем код под «если всё работает, не трогай». Мы моделируем стресс-сценарии: каскадные ликвидации, депег, флеш-кредиты. И только после этого — события, которые не сломают протокол.

Почему оракулы — критический компонент DeFi?

Большинство крупных взломов DeFi начинались с манипуляции оракулом. Разберём три слоя, которые мы используем в каждом проекте.

Spot price как оракул — не вариант. Uniswap v2 spot price можно сдвинуть flash loan за одну транзакцию. Цена в конце блока — единственное, что попадает в state, её и читает оракул. Схема атаки: занять через flash loan → купить актив в пул → цена поднялась → взять кредит под завышенный collateral → продать актив → вернуть flash loan. Одна транзакция.

TWAP как защита. Uniswap v3 observe() усредняет цену за период (30 минут). Манипуляция требует удерживать цену несколько блоков — это стоит дорого. Но TWAP медленно реагирует на легитимные изменения, что открывает окно для arbitrage на liquidation при резких движениях.

Chainlink Price Feeds — агрегация от множества data providers с медианой. Стандарт для lending. Проблема: heartbeat 1–24 часа и deviation threshold 0.5%. Если цена не двигается, фид может не обновляться сутки. В волатильном рынке — lag.

Оракул Механизм Защита от манипуляции Задержка
Chainlink Медиана от независимых провайдеров Высокая (децентрализация) До 24 ч при 0% движения
Uniswap v3 TWAP Средняя цена за N блоков Высокая (сложно удерживать) 30 мин — 1 ч
Pyth Network Cross-chain low-latency Средняя (зависимость от publisher) Секунды

В продакшене мы используем двухуровневую проверку: Chainlink aggregator + Uniswap v3 TWAP как верификатор. Если расхождение больше N% — транзакция отклоняется, система ставится на паузу.

Как защитить DeFi-протокол от flash loan атак?

Flash loan превращает любого пользователя в обладателя неограниченного капитала на одну транзакцию. Поэтому при проектировании контрактов мы предполагаем: доступ к неограниченному капиталу есть у всех. Это меняет threat model полностью.

Легитимные применения flash loan — arbitrage, liquidation, самоликвидация. Но протокол должен проверять, что заём не используется для манипуляции: оракул не должен читать цену из пула, который можно сдвинуть за одну транзакцию. Мы добавляем проверки на block.timestamp и минимальную глубину ликвидности.

Ключевые компоненты DeFi-архитектуры

Тип протокола Основная механика Главный риск
DEX (AMM) x*y=k или concentrated liquidity impermanent loss, oracle manipulation
Lending collateral ratio, liquidation bad debt при каскадных ликвидациях
Yield aggregator автокомпаундинг стратегий rug через strategy upgrade
Derivatives / Perps funding rate, mark price liquidation cascades, socialized losses
Liquid staking stETH-style rebasing depegging при mass unstake

AMM: от x*y=k до concentrated liquidity

Uniswap v2 использует x * y = k. LP-токены ERC-20 — каждый пул выпускает свой токен пропорционально доле. Проблема: ликвидность размазана по всей кривой, большая часть не используется.

Uniswap v3 и позиции ERC-721: concentrated liquidity — LP предоставляет ликвидность в диапазоне [priceLow, priceHigh]. Capital efficiency до 4000x для стабильных пар. Но ERC-721 ломает vault-стратегии под ERC-20. Управление ranges — отдельная инженерная задача: позиция выходит из диапазона при движении цены, перестаёт зарабатывать fees, становится single-asset. Протоколы типа Arrakis Finance автоматически rebalance. Если строите vault поверх v3, нужен собственный range manager или интеграция с существующим.

Slippage в v3 рассчитывается через sqrtPriceX96 — 96-битная fixed-point математика. Ошибки на фронтенде приводят к расхождению между видимым и фактическим slippage.

Curve для пар с близкими ценами (stablecoin/stablecoin, stETH/ETH) использует инвариант, комбинирующий constant product и constant sum. Меньше slippage в диапазоне peg. Контракты на Vyper, код математически плотный, аудировать сложно.

Lending протоколы: collateral, liquidation, bad debt

LTV определяет максимальный кредит под collateral. Liquidation threshold — уровень ликвидации. Разница — буфер для liquidator. Типичный пример: LTV 75%, liquidation threshold 80%, bonus 5%. Если цена падает на 20%+, позиция открыта к ликвидации.

Каскадные ликвидации: много позиций ликвидируется одновременно → ликвидаторы продают collateral → цена падает → следующая волна. LUNA/UST 2022 — классический каскад.

Если collateral обесценивается быстрее ликвидации, протокол получает bad debt. Aave использует Safety Module (застейканный AAVE), Compound — reserves. Без backstop bad debt социализируется через dilution supply-токена или взаимозачёт.

Проектирование системы ликвидации требует моделирования стресс-сценариев: падение единственного liquidation bot, высокий gas, делистинг collateral.

Yield farming и incentive mechanics

Liquidity mining — раздача governance-токенов LP-провайдерам. Проблема mercenary capital: фармеры приходят, продают токены, уходят. TVL фиктивный.

Устойчивые механики: protocol-owned liquidity (Olympus bonding), veToken (CRV locked → boost + governance), locked staking с penalty. Ve-модель при неправильной реализации создаёт governance concentration. Нужен timelock на изменения gauge weights и лимиты на votingPower.

Что входит в нашу разработку DeFi-протоколов

  • Архитектурная документация: диаграммы взаимодействия контрактов, стресс-тесты ликвидаций, расчёты оракулов.
  • Реализация на Solidity 0.8.x с OpenZeppelin 5.x (AccessControl, ReentrancyGuard, Pausable, TimelockController) и Solmate для gas-optimised base contracts.
  • Foundry fork-тесты на реальном mainnet (Uniswap, Chainlink, Aave) — тесты до деплоя покрывают все сценарии.
  • Аудит: минимум два независимых аудитора для TVL от $1M. Code4rena или Sherlock для bug bounty.
  • Деплой с Gnosis Safe 3/5 multisig + timelock 48–72 часа.
  • Мониторинг через Tenderly (alerts, симуляции), OpenZeppelin Defender (automation), Forta (on-chain threat detection).
  • Поддержка после запуска: обновления, патчи, апгрейды через proxy.

Наши компетенции и опыт

Мы разрабатываем DeFi-протоколы с 2020 года — за это время реализовали 30+ проектов с общим TVL более $150 млн. Среди клиентов — протоколы в топ-20 по TVL на Ethereum, Arbitrum и Base. Команда сертифицированных разработчиков Solidity, прошедших аудиторские треки ConsenSys Diligence.

DeFi на Wikipedia — базовые принципы, которые мы применяем на практике.

Сроки

  • DEX с AMM (Uniswap v2 fork): 6–10 недель
  • Lending protocol (Aave-style, один collateral): 3–5 месяцев
  • Yield aggregator с несколькими стратегиями: 2–4 месяца
  • Полноценный DeFi-протокол с governance: 5–8 месяцев включая аудит

Стоимость рассчитывается индивидуально — свяжитесь для оценки вашего проекта.

Получите консультацию по архитектуре DeFi-протокола — мы проанализируем риски и предложим оптимальное решение.