Розробка платформи децентралізованого краудфандингу для創ів
Mirror.xyz зібрав $10M для незалежних авторів через NFT-based краудфандинг ще у 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 — голосування бекерів за completion milestone. Якщо 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 (fungible результати при однакових взносах).
Механізм повернення без довіри
Якщо кампанія не досягне 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 кампаній та індексація
Factory + Clone паттерн для газ-ефективного деплою
Кожна кампанія — окремий контракт. Деплой через new Campaign() коштує 500k–800k газу. На Ethereum mainnet при $2000 ETH та 30 gwei — $30–50 за кампанію. Неприйнятно для indie авторів.
Рішення: EIP-1167 Minimal Proxy (Clone). CampaignFactory деплоїт lightweight proxy-clone у 45k газу. Proxy delegatecall в implementation контракт. Вартість створення кампанії — $3–5.
Мінус: proxy неможна апгрейдити окремо. Всі клони використовують одну implementation. Для оновлення логіки — деплой нової factory, старі кампанії залишаються на старій логіці (не баг, а фіча — immutability завершених кампаній).
The Graph субграф для індексації
Платформа з сотнями кампаній потребує ефективного пошуку та фільтрації. On-chain view функції не масштабуються. Рішення — The Graph субграф індексації подій:
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 запити до субграфу замість прямих RPC викликів. Це дозволяє фільтрувати кампанії за автором, статусом, категорією, сортувати за сумою — усе те, що неможливо зробити ефективно on-chain.
Мультивалютний краудфандинг
Приймати тільки ETH — втрата аудиторії. Інтеграція ERC-20 (USDC, DAI) через SafeERC20 з OpenZeppelin. Одна кампанія = одна валюта (спрощує escrow логіку). Для мультивалютних кампаній — конвертація через Uniswap v3 при взносі.
Важливий нюанс: USDC має blacklist функціональність — контракт-отримувач може бути заблокований Circle. Для довгострокових escrow це рідкісний, але реальний ризик. Використовуйте DAI або USDC з оговоркою в документації.
Модерація та dispute resolution
On-chain арбітраж через Kleros
Якщо бекери й творець не можуть прийти до consensus щодо milestone — потрібна арбітраж. Kleros Protocol забезпечує decentralized court: депозит від обох сторін, випадково вибрані jurors з Kleros PNK стейкерів виносять вердикт, проигравший втрачає депозит.
Інтеграція через IArbitrable інтерфейс: campaign контракт реалізує rule(uint256 disputeId, uint256 ruling) — викликається Kleros після голосування. На основі ruling контракт або звільняє payment milestone, або ініціює 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 субграф (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, верифікація, субграф деплой.
Всього: 3 тижні — 3 місяці залежно від набору функцій. MVP з базовим краудфандингом без milestone voting — 3–4 тижні. Повна платформа з arbitration, revenue sharing NFT та frontend — 2–3 місяці. Вартість розраховується після деталізації вимог.







