Платформа Mirror.xyz собрала миллионы долларов для независимых авторов через NFT-краудфандинг несколько лет назад. Идея продавать долю от будущего дохода или эксклюзивный контент вместо обещаний — принципиально новая модель. Но реализовать её технически сложнее, чем просто «Kickstarter на блокчейне». Мы, команда блокчейн-инженеров с 10+ летним опытом, создаём децентрализованные краудфандинг-платформы под ключ. Наши решения включают прозрачное распределение средств через смарт-контракты, верифицируемые milestones и возврат средств без посредников. Оценим ваш проект бесплатно.
Как обеспечить прозрачное распределение средств?
Наивная реализация: собрать ETH на адрес создателя. Так не работает — пользователи не доверяют неизвестному адресу. Нужен escrow-контракт, который держит средства и освобождает их при выполнении условий. Мы используем архитектуру milestone-based escrow с голосованием бэкеров.
struct Campaign {
address creator;
uint256 goal;
uint256 deadline;
uint256 raised;
bool goalReached;
Milestone[] milestones;
}
struct Milestone {
string description;
uint256 releaseAmount;
bool completed;
uint256 votes;
uint256 votesAgainst;
}
Вместо автоматического перевода средств при достижении цели — голосование бэкеров за выполнение milestone. Если 50%+ бэкеров (взвешенных по сумме взноса) подтверждают — escrow отправляет releaseAmount создателю. Если большинство против — средства возвращаются пропорционально взносам. Этот механизм проверен в Giveth и The DAO (до инцидента) — и работает, пока governance активен.
Почему NFT лучше традиционных долей?
Каждый взнос создаёт NFT (ERC-1155) для бэкера. NFT содержит метаданные: сумму, дату, ID кампании. Функции:
- Access control: платформа проверяет
balanceOf(address, campaignId) для доступа к контенту.
- Revenue sharing: если кампания предполагает роялти от продаж, NFT служит claim-токеном. Контракт распределяет ETH пропорционально весу NFT.
- Transferability: бэкер может продать позицию на вторичном рынке (OpenSea, Blur). Это создаёт ликвидность, недоступную в традиционном краудфандинге.
| Стандарт |
Где применять |
Стоимость mint |
Управление несколькими кампаниями |
| ERC-721 |
Уникальные взносы (каждый NFT свой) |
Высокая |
Нужен новый контракт на кампанию |
| ERC-1155 |
Однородные взносы внутри кампании |
Низкая (batch) |
Один контракт для всех |
ERC-1155 предпочтительнее: один контракт, более дешёвый mint, поддержка полугрибка.
Refund механизм без доверия
Если кампания не достигла цели к дедлайну, каждый бэкер может вызвать refund() и получить средства обратно. Без посредников. Паттерн — pull refund: контракт не отправляет средства автоматически (gas griefing). Каждый бэкер сам вызывает функцию.
function refund(uint256 campaignId) external {
Campaign storage c = campaigns[campaignId];
require(block.timestamp > c.deadline, "Campaign active");
require(!c.goalReached, "Goal was reached");
uint256 amount = contributions[campaignId][msg.sender];
require(amount > 0, "No contribution");
contributions[campaignId][msg.sender] = 0; // CEI pattern
(bool success,) = msg.sender.call{value: amount}("");
require(success, "Transfer failed");
}
Нулевой баланс перед переводом — это Checks-Effects-Interactions. Без него reentrancy через receive() в контракте бэкера.
Платформенный уровень: фабрика кампаний и индексация
Factory + Clone для газ-эффективного деплоя
Каждая кампания — отдельный контракт. Деплой через new Campaign() стоит много газа (сотни тысяч gas). На Ethereum это существенные затраты. Неприемлемо для indie-авторов. Решение: EIP-1167 Minimal Proxy (Clone). CampaignFactory деплоит лёгкий прокси-клон (~45k gas). Прокси делегирует вызовы имплементации. Стоимость создания кампании снижается в 10 раз. Экономия газа до 90%.
Минус: прокси нельзя апгрейдить отдельно. Все клоны используют одну имплементацию. Для обновления — новая фабрика, старые кампании остаются на старой логике (это не баг, а фича — неизменность завершённых кампаний).
The Graph subgraph для индексации
Платформа с сотнями кампаний требует эффективного поиска. On-chain view функции не масштабируются. Решение — The Graph subgraph. Мы деплоим subgraph, который индексирует события:
type Campaign @entity {
id: ID!
creator: Bytes!
goal: BigInt!
raised: BigInt!
deadline: BigInt!
backers: [Backer!]! @derivedFrom(field: "campaign")
milestones: [Milestone!]! @derivedFrom(field: "campaign")
}
Frontend делает GraphQL-запросы к subgraph вместо прямых RPC. Фильтрация по автору, статусу, категории — всё, что невозможно сделать on-chain.
Мультивалютный краудфандинг
Принимать только ETH — терять аудиторию. Интеграция ERC-20 (USDC, DAI) через SafeERC20 из OpenZeppelin. Одна кампания = одна валюта (упрощает escrow). Для мультивалютных кампаний — конвертация через Uniswap v3 при взносе. Важный нюанс: USDC имеет blacklist — контракт может быть заблокирован Circle. Для долгосрочных escrow используем DAI.
Модерация и dispute resolution
On-chain арбитраж через Kleros
Если бэкеры и создатель не могут прийти к консенсусу по milestone — нужен арбитраж. Kleros Protocol: депозит от обеих сторон, случайные jurors выносят вердикт, проигравший теряет депозит. Интеграция через IArbitrable интерфейс.
Что входит в работу
- Документация архитектуры и спецификация смарт-контрактов
- Исходный код с unit-тестами (Foundry) и fork-тестами
- Инструкция по деплою и верификации контрактов
- Конфигурация The Graph subgraph
- Обучение команды (1 день онлайн)
- Техническая поддержка 1 месяц после запуска
Процесс работы
- Проектирование механик (3–5 дней): milestone-структура, NFT-экономика, условия рефанда, параметры governance.
- Core смарт-контракты (1–1.5 недели): Campaign, CampaignFactory (EIP-1167), MilestoneVoting, RefundEscrow.
- NFT и revenue sharing (3–4 дня): ERC-1155, claim-механизм, распределение роялти.
- The Graph subgraph (2–3 дня): schema, mappings, деплой.
- Frontend интеграция (1–2 недели): wagmi/viem, создание кампании, страница бэкинга, дашборд.
- Тестирование (3–5 дней): unit-, fork-тесты, фаззинг.
- Деплой (2–3 дня): скрипты Foundry, верификация, subgraph.
Итого: 3 недели – 3 месяца в зависимости от функциональности. MVP без голосования по milestones — 3–4 недели. Полная платформа с арбитражем и NFT — 2–3 месяца. Стоимость рассчитывается после детализации требований.
Пример конфигурации смарт-контракта Campaign
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract Campaign {
/// ... реализация
}
Почему выбирают нас
- 10+ лет опыта в разработке блокчейн-решений
- 30+ успешных проектов (DeFi, NFT, DAO)
- 5 лет на рынке
- Аудиты контрактов ведущими фирмами
Гарантируем прозрачность кода и безопасность средств. Свяжитесь с нами, чтобы обсудить вашу идею — оценим проект и предложим оптимальное решение.
Разработка 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-протокола — мы проанализируем риски и предложим оптимальное решение.