Спред 12% и slippage в несколько процентов делают prediction market бесполезным для трейдеров. Именно здесь ломается UX: пользователи не готовы платить такую комиссию за неопределённость. Мы разрабатываем системы ликвидности, которые делают рынки глубокими ещё до появления органического интереса. Наш подход — комбинация Fixed Product AMM, conditional tokens и динамических стимулов для LP. В результате даже нишевый рынок может привлечь объёмы до $500k без проскальзывания. Каждый контракт проходит аудит на reentrancy и корректность распределения исходов — это гарантирует безопасность средств LP.
Как работает AMM для prediction markets?
LMSR и его ограничения
LMSR (Logarithmic Market Scoring Rule) — исторически первый AMM для prediction markets. Цена исходов рассчитывается через p_i = e^(q_i/b) / sum(e^(q_j/b)), где q_i — количество акций исхода i, b — liquidity parameter. Преимущество: mathematically guaranteed market maker — рынок всегда ликвиден. Недостаток: неограниченные убытки маркет-мейкера при экстремальных движениях.
Более поздний CPMM (Constant Product, как в Uniswap v2) применяется в Polymarket: для бинарного рынка YES_shares * NO_shares = k. Цена YES = NO_shares / (YES_shares + NO_shares). Проще имплементация, убытки bounded. CPMM в 3 раза эффективнее по газу, чем LMSR, для бинарных рынков.
Conditional tokens (ERC-1155)
Современный стандарт для prediction markets — Gnosis Conditional Tokens Framework. Каждый исход события — отдельный ERC-1155 токен. Collateral (например, USDC) лочится в ConditionalTokens контракте. При разрешении условия (resolveCondition()) держатели winning outcome токенов могут redeem collateral 1:1. Это позволяет строить составные рынки: комбинация исходов нескольких независимых условий — «AND-рынки». Например, позиция «ETH > $5000 AND BTC > $100k к декабрю» — это intersection двух conditional tokens.
Архитектура liquidity provisioning
Automated market making через Fixed Product AMM
Для каждого рынка деплоится пул ликвидности на основе Fixed Product AMM (FPMM). LP депонирует равные суммы всех исходов (для бинарного рынка — YES и NO токены). Начальная цена исходов = 50/50.
Контракт FPMMFactory создаёт FPMM инстанс для каждого рынка:
function create(
address conditionalTokens,
address collateralToken,
bytes32[] memory conditionIds,
uint[] memory outcomeSlotCounts,
uint fee // basis points
) external returns (address fpmm)
Fee идёт провайдерам ликвидности — это их incentive. Но fee от prediction markets обычно мала (0.1-2%), а риск для LP значительный: LP держит позиции в исходах до разрешения. Если рынок сильно односторонний — LP накапливает много losing токенов, которые могут обнулиться.
Incentive механика для LP
Простейший подход — liquidity mining: дополнительные rewards в токене протокола для LP. Но это временное решение; после окончания mining ликвидность уходит.
Устойчивее — dynamic fee: выше fee на рынках с низкой ликвидностью, ниже на высококонкурентных. Реализация: fee = base_fee + liquidity_adjustment, где liquidity_adjustment обратно пропорционален depth пула. Например, пул с TVL $2 млн генерирует $5000 комиссий в день при обороте 0.5%.
Ещё один паттерн — shared liquidity pool: вместо per-market пулов одна корзина ликвидности распределяется по нескольким рынкам. Контракт автоматически аллоцирует ликвидность туда, где price impact наиболее высок. Риск диверсифицирован, capital efficiency выше. Экономия на комиссиях для LP достигает 30%.
Oracle resolution и dispute mechanism
Самая чувствительная часть — разрешение исхода. Два подхода:
| Подход |
Скорость |
Децентрализация |
Риск |
| Centralized oracle |
Мгновенно |
Низкая |
Единая точка отказа |
| Optimistic oracle (UMA) |
2-3 дня |
Высокая |
Зависит от bond |
| Chainlink Any API |
1 блок |
Средняя |
Доступность API |
Centralized oracle. Trusted reporter адрес вызывает reportPayouts(). Быстро, но centralized. Для стартового этапа приемлемо с multisig reporter.
Optimistic oracle (UMA-style). Proposer предлагает исход с bond. 48-72 часа dispute window. Disputer может оспорить с bond. Если оспорено — идёт голосование через UMA DVM или Kleros. Проигравший теряет bond. Устойчив к манипуляции: cost of dispute > reward от неправильного разрешения.
Chainlink + Sports/Events API. Для спортивных событий — Chainlink Any API с проверенными источниками (ESPN, официальные спортивные API). Декларативно, автоматически, без человеческого фактора. Ограничение: не все события имеют публичный API.
Почему газ — узкое место для prediction markets?
Prediction markets с большим числом исходов (>2) создают gas проблемы. Для события с 10 исходами (например, чемпионат мира, 32 команды) — FPMM свап требует обновления балансов всех 32 токенов в одной транзакции. Это O(n) операций SLOAD/SSTORE на каждый трейд.
Оптимизация: lazy evaluation — хранить только delta изменений, пересчитывать полный state только при необходимости (например, при redeem). Но это усложняет логику и требует тщательного тестирования инвариантов.
Для рынков с >5 исходами на Ethereum mainnet экономически осмысленнее деплоить на Polygon или Base. Gas на L2 позволяет работать с 20-30 outcome markets без проблем. Сравнение газовых затрат:
| Чейн |
Газ за свап (2 исхода) |
Газ за свап (10 исходов) |
| Ethereum |
~180k |
~1.2M |
| Polygon |
~90k |
~600k |
| Base |
~70k |
~500k |
Процесс разработки
- Аналитика (3-5 дней). Выбор AMM механики (FPMM vs LMSR vs custom), oracle strategy, incentive модель для LP, target чейн.
- Контракты (2-3 недели). Conditional tokens setup + FPMM factory + LP incentives + oracle adapters. Foundry с property-based тестами: «сумма probabilities всегда = 1», «redeem никогда не превышает collateral».
- Oracle интеграция (1 неделя). Chainlink API или UMA optimistic oracle setup, dispute mechanism.
- Frontend (1-2 недели). wagmi/viem интеграция, торговый интерфейс, отображение probability, LP dashboard.
Что входит в нашу работу:
- Смарт-контракты на Solidity (Foundry, тесты, аудит)
- Интеграция с conditional tokens и FPMM
- Настройка оракула (Chainlink/UMA/кастомный)
- Разработка frontend торгового интерфейса и LP dashboard
- Деплой на L2 (Polygon, Arbitrum) для экономии газа
- Документация и обучение команды
- Техническая поддержка после запуска
Ориентиры по срокам
Базовый протокол для бинарных рынков с centralised oracle — 1-2 недели. Полноценная система с оптимистичным oracle, LP incentives и multi-outcome support — от 4-6 недель.
Стоимость рассчитывается после обсуждения типов рынков и механики разрешения. Мы — команда с многолетним опытом в смарт-контрактах, реализовали более 20 проектов в DeFi. Получите консультацию: оценим ваш проект и предложим архитектуру системы ликвидности. Свяжитесь с нами для обсуждения.
Разработка 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-протокола — мы проанализируем риски и предложим оптимальное решение.