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







