Платформа 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 лет на рынке
- Аудиты контрактов ведущими фирмами
Гарантируем прозрачность кода и безопасность средств. Свяжитесь с нами, чтобы обсудить вашу идею — оценим проект и предложим оптимальное решение.







