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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка платформы децентрализованного краудфандинга для создателей
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    873
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830

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

Mirror.xyz собрал $10M для независимых авторов через NFT-based crowdfunding ещё в 2021-м. Юникальность подхода: вместо Kickstarter-модели с обещаниями, авторы продают долю от будущего revenue или выпускают NFT, дающие доступ к контенту. Децентрализованная платформа краудфандинга — это не просто «Kickstarter на блокчейне». Это принципиально другая экономическая модель: прозрачное распределение средств через смарт-контракты, verifiable milestones, возврат средств без посредников.

Ключевые механики и их реализация

Campaign контракт: escrow с milestone логикой

Наивная реализация: собрать ETH на адрес создателя. Так не работает в Web3 — пользователи не доверяют неизвестному адресу. Нужен escrow контракт, который держит средства и освобождает их только при выполнении условий.

Архитектура milestone-based escrow:

struct Campaign {
    address creator;
    uint256 goal;           // цель в ETH/токенах
    uint256 deadline;       // unix timestamp
    uint256 raised;
    bool goalReached;
    Milestone[] milestones;
}

struct Milestone {
    string description;
    uint256 releaseAmount;  // сумма к выплате при достижении
    bool completed;
    uint256 votes;          // голоса бэкеров за подтверждение
    uint256 votesAgainst;
}

Вместо автоматического перевода средств при достижении goal — голосование бэкеров по milestone completion. Если 50%+ бэкеров (взвешенных по сумме взноса) подтверждают — escrow отправляет releaseAmount создателю. Если большинство против — средства возвращаются пропорционально взносам.

Этот механизм был реализован в Giveth и The DAO (до хака) — и работает, пока governance активен.

NFT как proof-of-backing и access token

Каждый взнос создаёт NFT (ERC-721 или ERC-1155) для бэкера. NFT несёт метаданные: сумма взноса, дата, ID кампании. Функции NFT:

Access control: контент-платформа проверяет balanceOf(address, campaignId) для открытия эксклюзивного контента. Без NFT — нет доступа.

Revenue sharing: если кампания предполагает royalty от будущих продаж или публикаций, NFT служит claim токеном. Контракт распределяет поступающий ETH пропорционально весу NFT.

Transferability: бэкер может продать позицию на вторичном рынке (OpenSea, Blur). Это создаёт реальную ликвидность для crowd-financing, чего нет в традиционном краудфандинге.

Стандарт: ERC-1155 предпочтительнее ERC-721 для краудфандинга — один контракт для всех кампаний, более дешёвый mint (batch), поддержка полугрибка (fungible tier внутри кампании при одинаковых взносах).

Refund механизм без доверия

Если кампания не достигла goal к deadline — каждый бэкер может вызвать refund() и получить свои средства обратно. Без посредников, без заявок в поддержку.

Паттерн реализации — pull refund (не push): контракт не отправляет средства автоматически всем бэкерам (gas griefing при тысячах участников). Каждый бэкер сам вызывает refund(), контракт переводит его долю.

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 паттерн
    (bool success,) = msg.sender.call{value: amount}("");
    require(success, "Transfer failed");
}

Нулевой баланс перед transfer — это Checks-Effects-Interactions. Без этого: reentrancy через receive() в контракте бэкера.

Платформенный уровень: фабрика кампаний и индексация

Factory + Clone паттерн для газ-эффективного деплоя

Каждая кампания — отдельный контракт. Деплой через new Campaign() стоит 500k–800k gas. На Ethereum mainnet при $2000 ETH и 30 gwei — $30–50 за кампанию. Неприемлемо для indie-авторов.

Решение: EIP-1167 Minimal Proxy (Clone). CampaignFactory деплоит lightweight proxy-клон в 45k gas. Proxy delegatecall в implementation контракт. Стоимость создания кампании — $3–5.

Минус: proxy нельзя апгрейдить отдельно. Все клоны используют одну implementation. Для обновления логики — деплой новой фабрики, старые кампании остаются на старой логике (это не баг, а фича — неизменность завершённых кампаний).

The Graph subgraph для индексации

Платформа с сотнями кампаний требует эффективного поиска и фильтрации. On-chain view функции не масштабируются. Решение — The Graph 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. Одна кампания = один currency (упрощение escrow логики). Для мультивалютных кампаний — конвертация через Uniswap v3 при взносе.

Важный нюанс: USDC имеет blacklist функциональность — контракт-получатель может быть заблокирован Circle. Для долгосрочных escrow это редкий, но реальный риск. Используйте DAI или USDC с оговоркой в документации.

Модерация и dispute resolution

On-chain arbitration через Kleros

Если бэкеры и создатель не могут прийти к consensus по milestone — нужен арбитраж. Kleros Protocol предоставляет decentralized court: депозит от обеих сторон, случайно выбранные jurors из Kleros PNK стейкеров выносят вердикт, проигравший теряет депозит.

Интеграция через IArbitrable интерфейс: campaign контракт реализует rule(uint256 disputeId, uint256 ruling) — вызывается Kleros после голосования. На основе ruling контракт либо освобождает milestone payment, либо инициирует refund.

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

Проектирование механик (3–5 дней): milestone структура, NFT экономика, refund условия, governance параметры (voting quorum, voting period).

Core смарт-контракты (1–1.5 недели): Campaign, CampaignFactory (EIP-1167), MilestoneVoting, RefundEscrow.

NFT и revenue sharing (3–4 дня): ERC-1155 контракт, claim механизм, royalty распределение.

The Graph subgraph (2–3 дня): schema, mappings, деплой на Hosted Service или Decentralized Network.

Frontend интеграция (1–2 недели): wagmi/viem хуки, создание кампании, страница бэкинга с wallet connect, дашборд создателя.

Тестирование (3–5 дней): unit-тесты всех сценариев (success, failure, milestone dispute), fork-тесты на mainnet.

Деплой (2–3 дня): Foundry script, верификация, subgraph деплой.

Итого: 3 недели — 3 месяца в зависимости от набора функций. MVP с базовым краудфандингом без milestone voting — 3–4 недели. Полная платформа с arbitration, revenue sharing NFT и frontend — 2–3 месяца. Стоимость рассчитывается после детализации требований.