Ви запускаєте hardware-стартап та збираєте $500k через крипто-краудфандинг. Без посередників, але з розумним контрактом, який утримує кошти до виконання проміжних цілей (milestones). Жодних ICO-схем: бекери фінансують продукт, а не спекулятивний токен. Типова проблема класичних платформ — творець може зібрати гроші та зникнути, залишивши бекерів ні з чим. Смарт-контракти вирішують це через ескроу та поетапне фінансування, але реалізація вимагає глибокого розуміння безпеки: reentrancy, oracle manipulation, front-running. Ми розробляємо такі платформи на Solidity 0.8 та Rust (Anchor) з повним стеком: смарт-контракти, фронтенд, адмінку та інтеграцію мультивалютних платежів.
На відміну від Kickstarter, де платформа бере 5% + 3% процесинг і повернення коштів займає два тижні, наш контракт скорочує комісію до 2% та робить повернення атомарним за секунду. Таким чином, крипто-краудфандинг у 2-3 рази дешевший за традиційний, а економія на комісіях для кампанії в $500k становить близько $10,000. Перевірено на 50+ проектах. Розробка базової платформи коштує від $50,000 до $100,000 залежно від складності.
Як створити кампанію?
- Зареєструйтесь та пройдіть KYC.
- Вкажіть мету збору та віхи.
- Завантажте опис та медіа.
- Підтвердіть через смарт-контракт.
Як працює milestone-based краудфандинг?
Кошти бекерів потрапляють в ескроу-контракт. Після завершення кампанії (досягнуто softcap або hardcap) перший milestone активується. Творець виконує завдання, бекери голосують — при схваленні частина коштів розблоковується, при відхиленні запускається рефанд. Такий підхід називається milestone funding.
Приклад смарт-контракту: Campaign та Escrow
Smart contract example
contract CrowdfundingCampaign {
enum Status { Active, Successful, Failed, Cancelled }
struct Milestone {
string description;
uint256 fundsToRelease;
uint256 deadline;
bool isCompleted;
bool isFailed;
uint256 approvalVotes;
uint256 rejectionVotes;
mapping(address => bool) hasVoted;
}
address public creator;
uint256 public softcap;
uint256 public hardcap;
uint256 public deadline;
uint256 public totalRaised;
Status public status;
Milestone[] public milestones;
mapping(address => uint256) public contributions;
IERC20 public paymentToken;
function contribute(uint256 amount) external {
require(status == Status.Active, "Campaign not active");
require(block.timestamp < deadline, "Campaign ended");
require(totalRaised + amount <= hardcap, "Hardcap reached");
paymentToken.transferFrom(msg.sender, address(this), amount);
contributions[msg.sender] += amount;
totalRaised += amount;
if (totalRaised >= hardcap) {
status = Status.Successful;
}
emit ContributionReceived(msg.sender, amount, totalRaised);
}
function finalizeCampaign() external {
require(block.timestamp >= deadline, "Deadline not reached");
require(status == Status.Active, "Already finalized");
if (totalRaised >= softcap) {
status = Status.Successful;
milestones[0].deadline = block.timestamp + milestones[0].duration;
emit CampaignSuccessful(totalRaised);
} else {
status = Status.Failed;
emit CampaignFailed(totalRaised, softcap);
}
}
function claimRefund() external {
require(status == Status.Failed || status == Status.Cancelled, "Not refundable");
uint256 amount = contributions[msg.sender];
require(amount > 0, "Nothing to refund");
contributions[msg.sender] = 0;
paymentToken.transfer(msg.sender, amount);
emit RefundClaimed(msg.sender, amount);
}
}
Milestone governance: бекери як контролери
Governance smart contract
function approveMilestone(uint256 milestoneIndex) external {
require(contributions[msg.sender] > 0, "Not a backer");
Milestone storage milestone = milestones[milestoneIndex];
require(!milestone.hasVoted[msg.sender], "Already voted");
require(!milestone.isCompleted && !milestone.isFailed, "Already resolved");
milestone.hasVoted[msg.sender] = true;
milestone.approvalVotes += contributions[msg.sender];
_checkMilestoneResolution(milestoneIndex);
}
function rejectMilestone(uint256 milestoneIndex) external {
require(contributions[msg.sender] > 0, "Not a backer");
Milestone storage milestone = milestones[milestoneIndex];
require(!milestone.hasVoted[msg.sender], "Already voted");
milestone.hasVoted[msg.sender] = true;
milestone.rejectionVotes += contributions[msg.sender];
_checkMilestoneResolution(milestoneIndex);
}
function _checkMilestoneResolution(uint256 index) internal {
Milestone storage milestone = milestones[index];
uint256 APPROVAL_THRESHOLD = 5000;
uint256 REJECTION_THRESHOLD = 3300;
if (milestone.approvalVotes * 10000 / totalRaised >= APPROVAL_THRESHOLD) {
milestone.isCompleted = true;
paymentToken.transfer(creator, milestone.fundsToRelease);
emit MilestoneApproved(index, milestone.fundsToRelease);
} else if (milestone.rejectionVotes * 10000 / totalRaised >= REJECTION_THRESHOLD) {
milestone.isFailed = true;
status = Status.Cancelled;
emit MilestoneRejected(index);
}
}
Поріг схвалення (50%) та відхилення (33%) асиметричні — це захист від накрутки голосів творцем.
Чому бекери отримують NFT?
Кожен tier внеску дає унікальний NFT, який служить не просто сувеніром. Він — доказ участі, може торгуватися на вторинному ринку та дає доступ до закритих бонусів (Discord роль, early access до продукту).
NFT reward smart contract
contract CampaignRewards is ERC721 {
struct RewardTier {
uint256 minContribution;
uint256 maxSupply;
uint256 minted;
string metadataURI;
}
RewardTier[] public tiers;
mapping(address => uint256) public backerTier;
function mintRewardNFT(address backer, uint256 contribution) internal {
uint256 tierIndex = _getTierForAmount(contribution);
RewardTier storage tier = tiers[tierIndex];
require(tier.minted < tier.maxSupply, "Tier sold out");
uint256 tokenId = _nextTokenId++;
_safeMint(backer, tokenId);
_setTokenURI(tokenId, tier.metadataURI);
tier.minted++;
backerTier[backer] = tierIndex;
emit RewardNFTMinted(backer, tokenId, tierIndex);
}
}
Як працюють мультивалютні внески?
Приймати лише один токен — обмеження. Реалізуємо мультивалютний escrow через on-chain swap:
Multi-currency contribution code
async function processContribution(
userWallet: string,
paymentToken: string,
amount: bigint,
campaignId: string
): Promise<string> {
if (paymentToken === "USDC") {
return await campaign.contribute(amount);
}
const swapData = await getOneInchSwapData({
fromToken: paymentToken,
toToken: USDC_ADDRESS,
amount,
slippage: 1,
receiver: campaign.address,
});
return await multicall([
{ to: swapData.to, data: swapData.data, value: swapData.value },
{ to: campaign.address, data: encodeContribute(convertedAmount) },
]);
}
Які антишахрайські механізми реалізовано?
KYC для творців обов'язковий. Анонімні кампанії — очевидний rug pull. Milestone escrow блокує виведення до першої віхи. Emergency stop дозволяє платформі призупинити шахрайський проект і повернути кошти бекерам. Соціальна верифікація — команда публікує LinkedIn, GitHub, roadmap в IPFS. Додатково використовуємо Slither та Mythril для статичного аналізу на етапі розробки. Ми гарантуємо аудит смарт-контрактів провідними фірмами (Certik, Cyfrin) і працюємо лише з сертифікованими інструментами.
Як відбувається повернення коштів?
Якщо кампанія не набирає softcap або бекери відхиляють milestone, запускається автоматичний рефанд. Смарт-контракт за секунди повертає повну суму через функцію claimRefund. Жодних затримок та ручних перевірок — вся логіка зашита в коді.
Порівняння: крипто-краудфандинг vs традиційний Kickstarter
Крипто-краудфандинг у 2-3 рази дешевший за Kickstarter, а швидкість зарахування коштів у 1000 разів вища. Це приклад Ethereum crowdfunding на базі смарт-контрактів.
| Параметр | Крипто-краудфандинг | Kickstarter |
|---|---|---|
| Комісія платформи | 2-5% | 5% + 3% процесинг |
| Швидкість зарахування | до 1 секунди | 3-5 робочих днів |
| Повернення коштів | атомарний, смарт-контракт | ручний, до 14 днів |
| Прозорість | повна (Etherscan) | обмежена |
Процес розробки
Наші інженери мають 10+ років досвіду в блокчейні та понад 50 успішних контрактів у production. Роботу починаємо з аудиту вашої ідеї та закінчуємо навчанням команди.
| Етап | Тривалість | Результат |
|---|---|---|
| Аналіз вимог | 1-2 тижні | Технічне завдання та токеноміка |
| Смарт-контракти | 4-6 тижнів | Campaign, Escrow, NFT, governance |
| Фронтенд + адмінка | 4-6 тижнів | Dapp з MetaMask, WalletConnect |
| Аудит безпеки | 2-4 тижні | Звіт від Certik/Cyfrin |
| Тестування | 1-2 тижні | Unit, інтеграційні, fuzzing з Echidna |
| Деплой та документація | 1-2 тижні | Mainnet, навчання, доступ до коду |
Що входить в роботу
- Смарт-контракти з повними коментарями (Natspec)
- Dapp-фронтенд з підтримкою MetaMask, WalletConnect, Coinbase Wallet
- Адмін-панель для управління кампаніями, перегляду голосувань та повернень
- Розгортання на mainnet та testnet (Ethereum, Polygon, Arbitrum)
- Документація для користувачів та розробників
- Навчання команди (2 онлайн-сесії)
Терміни та вартість
Базова платформа з двома ролями (creator, backer), milestone voting та NFT rewards займає 10–14 тижнів. Вартість розраховується індивідуально — залежить від кількості ролей, складності голосування та необхідності мультивалютної підтримки. Отримайте консультацію — обговоримо деталі вашого проекту.
Замовте розробку модуля або повної платформи — обговоримо реалізацію на консультації. Отримайте демо-доступ до працюючого прототипу.







