Разработка децентрализованной краудфандинг-платформы для создателей

Платформа Mirror.xyz собрала миллионы долларов для независимых авторов через NFT-краудфандинг несколько лет назад. Идея продавать долю от будущего дохода или эксклюзивный контент вместо обещаний — принципиально новая модель. Но реализовать её технически сложнее, чем просто «Kickstarter на блокчейне»

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

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

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

  • 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

Платформа 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 месяц после запуска

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

  1. Проектирование механик (3–5 дней): milestone-структура, NFT-экономика, условия рефанда, параметры governance.
  2. Core смарт-контракты (1–1.5 недели): Campaign, CampaignFactory (EIP-1167), MilestoneVoting, RefundEscrow.
  3. NFT и revenue sharing (3–4 дня): ERC-1155, claim-механизм, распределение роялти.
  4. The Graph subgraph (2–3 дня): schema, mappings, деплой.
  5. Frontend интеграция (1–2 недели): wagmi/viem, создание кампании, страница бэкинга, дашборд.
  6. Тестирование (3–5 дней): unit-, fork-тесты, фаззинг.
  7. Деплой (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 лет на рынке
  • Аудиты контрактов ведущими фирмами

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