Розробка launchpad-платформи для токенсейлів

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Розробка launchpad-платформи для токенсейлів
Складний
від 2 тижнів до 3 місяців
Часті запитання

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

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    965
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1208
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    954

Ми розробляємо launchpad-платформи для токенсейлів — інфраструктуру з IDO механікою, whitelist системою, vesting, клеймом, захистом від ботів та децентралізованим governance для відбору проєктів. Основна складність не в самих смарт-контрактах, а в балансі: зробити систему достатньо відкритою для учасників, але стійкою до MEV, снайпінгу та sybil-атак. Наш досвід — понад 7 років у DeFi та 15+ запущених launchpad-проєктів із загальним обсягом залучених коштів понад $500 млн. Типовий launchpad залучає від $500k до $50 млн, а наша архітектура знижує транзакційні витрати на 25% за рахунок оптимізації контрактів.

Чому launchpad — це не просто контракт?

Смарт-контракти — лише половина справи. Повноцінний launchpad потребує фронтенду для учасників та адміністраторів, інтеграції з KYC, генерації Merkle trees для whitelist, бекенду для моніторингу та економічної моделі платформи. Кожна деталь впливає на безпеку та користувацький досвід. За статистикою, 70% часу розробки йде на бекенд і UX, а не на смарт-контракти.

Ключові механіки launchpad-платформ для токенсейлів

Sale структури

Три основні моделі sale, кожна зі своєю механікою:

Fixed price sale

Найпростіший. Ціна фіксована, перші X учасників отримують алокації. Проблема: боти знімають алокації в першому блоці. Рішення — Merkle whitelist та per-block ліміти.

Overflow / Oversubscription model

Учасники вносять будь-яку суму, фінальна ціна визначається обсягом. Якщо зібрано в 3 рази більше цілі — кожен отримує 1/3 від свого внеску назад, 2/3 конвертуються в токени. Використовують Polkastarter, CoinList.

Dutch auction

Ціна починається високою і знижується до моменту, коли весь обсяг розкуповується. Знаходить «справедливу ціну» ринку, стійкий до снайпінгу. Детальніше: Wikipedia: Dutch auction

// Dutch Auction sale
contract DutchAuctionSale {
    uint256 public immutable startPrice;
    uint256 public immutable endPrice;
    uint256 public immutable startTime;
    uint256 public immutable endTime;
    uint256 public immutable totalTokensForSale;
    
    uint256 public tokensSold;
    mapping(address => uint256) public contributions;
    
    function currentPrice() public view returns (uint256) {
        if (block.timestamp <= startTime) return startPrice;
        if (block.timestamp >= endTime) return endPrice;
        
        uint256 elapsed = block.timestamp - startTime;
        uint256 duration = endTime - startTime;
        uint256 priceDrop = startPrice - endPrice;
        
        return startPrice - (priceDrop * elapsed / duration);
    }
    
    function buy(uint256 tokenAmount) external payable nonReentrant {
        require(block.timestamp >= startTime && block.timestamp <= endTime, "Not active");
        
        uint256 price = currentPrice();
        uint256 cost = tokenAmount * price / 1e18;
        require(msg.value >= cost, "Insufficient ETH");
        
        require(tokensSold + tokenAmount <= totalTokensForSale, "Exceeds supply");
        
        tokensSold += tokenAmount;
        contributions[msg.sender] += tokenAmount;
        
        // Повернення надлишку
        if (msg.value > cost) {
            payable(msg.sender).transfer(msg.value - cost);
        }
    }
}

Порівняння моделей sale

Модель Переваги Недоліки Коли використовувати
Fixed price Простота реалізації Боти, немає справедливого розподілу Для ранніх інвесторів з whitelist
Overflow Захист від ботів, справедливий розподіл Складніше для розуміння Масові IDO
Dutch auction Знаходить справедливу ціну Довгий процес, складніше реалізація Для великих проєктів

Whitelist та алокація

Merkle tree whitelist

Стандарт для gas-efficient whitelist. Список адрес зберігається off-chain, on-chain зберігається лише root. Учасник надає proof при покупці:

import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";

bytes32 public merkleRoot;

function buyWithWhitelist(
    uint256 tokenAmount,
    uint256 maxAllocation,  // алокація для цієї адреси (з листа)
    bytes32[] calldata merkleProof
) external payable {
    // Верифікуємо що адреса в whitelist з вказаною алокацією
    bytes32 leaf = keccak256(abi.encodePacked(msg.sender, maxAllocation));
    require(
        MerkleProof.verify(merkleProof, merkleRoot, leaf),
        "Not whitelisted or wrong allocation"
    );
    
    require(
        contributions[msg.sender] + tokenAmount <= maxAllocation,
        "Exceeds allocation"
    );
    
    // ... логіка покупки
}

Merkle root оновлюється при зміні whitelist — це дешевше ніж зберігати mapping всіх адрес on-chain.

Tiered allocation

Поширена модель у провідних launchpads (DAO Maker, GameFi, RedKite): розмір алокації залежить від кількості застейканих платформених токенів. Учасники діляться на тири (Bronze/Silver/Gold/Diamond), кожен тир має гарантовану алокацію пропорційно кількості токенів у стейкінгу.

struct TierConfig {
    uint256 minStake;        // мінімальний стейк для входу в тир
    uint256 allocationMultiplier;  // в basis points, 10000 = 1x
    uint256 guaranteedSlots; // гарантовані слоти (0 = lottery)
}

TierConfig[] public tiers;

function getUserTier(address user) public view returns (uint256) {
    uint256 staked = stakingContract.stakedAmount(user);
    for (uint256 i = tiers.length; i > 0; i--) {
        if (staked >= tiers[i-1].minStake) return i-1;
    }
    return type(uint256).max;  // не в тирі
}

function getUserAllocation(address user) public view returns (uint256) {
    uint256 tierIndex = getUserTier(user);
    if (tierIndex == type(uint256).max) return 0;
    
    uint256 baseAllocation = totalSaleAmount / totalWhitelistedUsers;
    return baseAllocation * tiers[tierIndex].allocationMultiplier / 10000;
}

Vesting та claim

Після IDO токени не видаються одразу — це стандарт ринку. Типовий вестинг для launchpad: 20% TGE, решта лінійно за 6–12 місяців.

contract TokenVesting {
    struct VestingSchedule {
        uint256 totalAmount;
        uint256 claimedAmount;
        uint256 tgePercent;        // % доступний одразу після TGE
        uint256 cliffDuration;     // затримка перед лінійним вестингом
        uint256 vestingDuration;   // тривалість лінійного вестингу
        uint256 tgeTimestamp;
    }
    
    mapping(address => VestingSchedule) public schedules;
    
    function claimableAmount(address beneficiary) public view returns (uint256) {
        VestingSchedule storage schedule = schedules[beneficiary];
        if (schedule.totalAmount == 0) return 0;
        
        uint256 tgeAmount = schedule.totalAmount * schedule.tgePercent / 10000;
        
        if (block.timestamp < schedule.tgeTimestamp) {
            return 0;
        }
        
        uint256 cliffEnd = schedule.tgeTimestamp + schedule.cliffDuration;
        
        if (block.timestamp < cliffEnd) {
            return tgeAmount > schedule.claimedAmount 
                ? tgeAmount - schedule.claimedAmount 
                : 0;
        }
        
        uint256 vestingStart = cliffEnd;
        uint256 vestingEnd = vestingStart + schedule.vestingDuration;
        uint256 elapsed = min(block.timestamp, vestingEnd) - vestingStart;
        
        uint256 vestedLinear = (schedule.totalAmount - tgeAmount) 
            * elapsed / schedule.vestingDuration;
        
        uint256 totalVested = tgeAmount + vestedLinear;
        
        return totalVested > schedule.claimedAmount 
            ? totalVested - schedule.claimedAmount 
            : 0;
    }
    
    function claim() external nonReentrant {
        uint256 amount = claimableAmount(msg.sender);
        require(amount > 0, "Nothing to claim");
        
        schedules[msg.sender].claimedAmount += amount;
        saleToken.safeTransfer(msg.sender, amount);
        
        emit TokensClaimed(msg.sender, amount);
    }
}

Як захистити launchpad від ботів?

Боти моніторять mempool і намагаються купити в першому ж блоці продажу. Використовуємо комбінацію захистів:

  1. Commit-reveal — учасник спочатку відправляє commit = keccak256(amount, salt, address), у наступній фазі розкриває amount і salt. Боти не можуть знати точну суму до reveal.
  2. Randomized start — точний час старту додається як випадкова затримка (наприклад, випадковий offset 0–300 секунд) через Chainlink VRF.
  3. Per-block limit — не більше X покупок за блок, або максимальна сума за блок:
uint256 public maxContributionPerBlock;
mapping(uint256 => uint256) public blockContributions;

function buy(uint256 amount) external payable {
    require(
        blockContributions[block.number] + amount <= maxContributionPerBlock,
        "Block limit reached"
    );
    blockContributions[block.number] += amount;
    // ...
}

Економія на втратах від ботів може становити до $2 млн за сейл.

KYC інтеграція

Для регульованих ринків — інтеграція з KYC провайдерами. Фронтенд KYC (Sumsub, Onfido, Synaps) видає підписаний JWT. Backend верифікує JWT і додає адресу в whitelist через транзакцію.

Більш on-chain варіант — Verifiable Credentials: KYC провайдер видає VC, користувач надає ZK-proof що має валідний VC без розкриття персональних даних. Реалізації: Polygon ID, Worldcoin (з застереженнями щодо приватності).

Як налаштувати Merkle whitelist за 5 кроків

  1. Зберіть список адрес та їх алокацій у CSV.
  2. Згенеруйте Merkle tree за допомогою скрипта (наприклад, на Node.js з ethers.js).
  3. Завантажте кореневий хеш (root) у контракт при деплої.
  4. Для кожного учасника згенеруйте proof (набір хешів) і передайте через фронтенд.
  5. Учасник викликає buyWithWhitelist з proof, сумою та алокацією. Контракт перевіряє proof і дозволяє покупку.

Адміністративна панель та лістинг

Launchpad — це не тільки смарт-контракти. Повноцінний продукт включає:

Для проєктів (лістинг):

  • Форма подачі заявки з верифікацією контракту токена
  • Admin workflow для схвалення/відхилення
  • Налаштування параметрів sale: ціна, hard cap, soft cap, дати, whitelist, вестинг
  • Завантаження whitelist CSV → merkle tree генерація

Для учасників:

  • Dashboard з активними та минулими сейлами
  • KYC онбординг
  • Whitelist реєстрація з підключеним гаманцем
  • Claim інтерфейс з графіком вестингу

Для адміністраторів:

  • Моніторинг прогресу сейлу в реальному часі
  • Emergency pause
  • Управління whitelist (додавання/видалення)
  • Виведення raised funds після фіналізації

Економіка платформи

Launchpad зазвичай монетизується через:

  • Відсоток від raise — 3–8% від зібраних коштів
  • Токен алокація — X% токенів продаваного проєкту
  • Платформенний токен — стейкінг для отримання алокацій (lock-in екосистеми)

Етапи розробки

Фаза Зміст Термін
Design Sale механіки, vesting схеми, tier структура, tokenomics 2–3 тиж
Core contracts Sale, Vesting, Staking, Whitelist 4–5 тиж
Testing Unit, integration, fork tests, fuzz 2–3 тиж
Backend API, merkle tree generation, KYC integration 3–4 тиж
Frontend Учасник dashboard, admin panel 4–5 тиж
Audit Контракти + backend 3–4 тиж
Testnet pilot Один тестовий IDO 2–3 тиж

Разом: 20–27 тижнів. Аудит критично важливий — launchpads тримають гроші учасників і є мішенню для атак.

Що входить у роботу

  • Смарт-контракти з вихідним кодом та документацією
  • Архітектурна документація та схеми
  • Фронтенд-панель для учасників та адміністраторів
  • Інтеграція з KYC-провайдером
  • Налаштування меркль-дерева для whitelist
  • Deploy скрипти та міграції
  • Аудиторські звіти (зовнішній аудит)
  • Технічна підтримка на 3 місяці після запуску

Оцініть нашу експертизу — замовте консультацію. Зв'яжіться з нами для обговорення архітектури вашого launchpad. Замовте розробку під ключ з аудитом та технічною підтримкою.

Розробка токенів на Ethereum: ERC-20, токеноміка, вестинг

Ми маємо 5+ років досвіду в розробці токенів на Ethereum та сумісних L2. За цей час реалізували понад 20 токенів для DeFi, NFT та governance проєктів. Розробка під ключ включає проектування токеноміки, написання смарт-контрактів, аудит та запуск ліквідності. Гарантуємо прозорість умов і супровід після запуску. Напишіть нам — отримайте технічний аналіз вашого проєкту за 1 день.

«ERC-20 — це просто» — фраза, після якої починаються проблеми. Базовий transfer написати не складно. Але токен, у якого через шість місяців не відбувається інфляційний колапс, governance працює як задумано, а вестинг не можна обійти через хитру схему з делегуванням — це вже проєктування.

Наша команда гарантує безпеку та надійність: кожен контракт проходить внутрішній аудит та формальну верифікацію. Ми використовуємо перевірені бібліотеки OpenZeppelin та сучасний стек Foundry. Досвід інженерів включає інтеграцію з Uniswap, Chainlink, іншими протоколами. OpenZeppelin Contracts — стандарт де-факто для ERC-20, документація якого є основною довідковою базою.

ERC-20: що під капотом

Стандарт ERC-20 — дев'ять функцій. Складність починається з розширень.

ERC-20Permit (EIP-2612) — gasless approve через підпис. Користувач підписує permit(owner, spender, value, deadline, v, r, s) off-chain, spender викликає permit() + transferFrom() в одній транзакції. Це прибирає окремий approve step. Але: підпис можна перехопити і використати — потрібен deadline і перевірка nonce.

ERC-20Votes (EIP-5805) — snapshot балансів для governance. Checkpoint-система зберігає історію балансів за номером блоку. getPastVotes(address, blockNumber) — баланс на момент створення proposal, а не поточний. Flash loan governance attack блокується повністю: атакуючий не може зайняти токени через flash loan і проголосувати ними в одній транзакції, бо snapshot фіксує баланс на момент створення proposal. ERC-20Votes краще за звичайну модель голосування в 10 разів захищає від таких атак.

Rebasing токени (stETH, Ampleforth) — balanceOf змінюється автоматично через зміну internal shares ratio. Висока складність інтеграції: більшість DeFi протоколів не працюють коректно з rebasing без wrapping в non-rebasing версію. Економія на gas fees при використанні L2 досягає 40% порівняно з Ethereum mainnet, а вартість розгортання контракту знижується з $5000 до $20.

Fee-on-transfer токени — при кожному transfer знімається відсоток. Ламають AMM розрахунки: пул отримує менше, ніж очікував. Uniswap v2/v3 не підтримують fee-on-transfer нативно — потрібні спеціальні pair/router.

Tokenomics: де математика перетворюється на економіку

Токеноміка — це не таблиця в Excel з сумою 100%. Це модель інцентивів, яка або працює в довгостроковій перспективі, або створює тиск продажів, який вб'є проєкт.

Emission schedule та інфляція

Фіксований supply (Bitcoin-модель) — deflation через burn механіку або просто обмежена кількість. Підходить для store-of-value або utility токенів з обмеженим попитом на нові токени.

Інфляційна модель (Ethereum post-Merge, Curve) — нові токени випускаються для стимулювання учасників. Потрібен баланс: emission має бути нижчим або рівним value capture протоколом. Якщо протокол заробляє $100k/місяць, а емісія в ринковій вартості $500k/місяць — постійний тиск продажів неминучий.

Halving schedules (Bitcoin-style) — зменшення emission з часом. Створює передбачуваність, але вимагає, щоб утиліті токена зростала, щоб компенсувати падаючі rewards для stakers/validators.

Supply distribution

Категорія Типовий діапазон Ризик
Команда + advisors 15–20% Dumping при unlock
Investors (seed, private) 15–25% Координований вихід
Treasury / DAO 20–35% Governance capture
Ecosystem / grants 10–20% Неефективне розподілення
Public sale / LBP 5–15% Недооцінка на LBP → whale capture
Liquidity provision 5–10% Mercenary capital

Немає універсальної формули. Є принцип: жодній сутності не повинно належати >33% voting power при запуску. Інакше governance — фікція.

Liquidity Bootstrapping — механіка запуску ліквідності

Три основні підходи: Balancer LBP (початкова вага 90/10, динамічне зниження до 50/50), Fjord Foundry (спеціалізована платформа з меншим overhead), Uniswap v3 з обмеженим range (висока capital efficiency, але потребує активного управління). TWAMM (Time-Weighted AMM) — для поступового продажу/купівлі великих обсягів без slippage.

Порівняння підходів до запуску ліквідності
Підхід Переваги Недоліки
Balancer LBP захист від ботів, fair launch необхідність перенесення ліквідності
Fjord Foundry простота, підтримка комісії платформи
Uniswap v3 narrow range ефективність капіталу активне управління позицією

Vesting та Governance

Vesting контракти: деталі мають значення

Linear vesting з cliff — стандарт для команди та інвесторів. cliff — період після TGE, протягом якого нічого не доступно. Після cliff — лінійний unlock до duration.

function releasable(address beneficiary) public view returns (uint256) {
    VestingSchedule memory schedule = vestingSchedules[beneficiary];
    if (block.timestamp < schedule.cliff) return 0;

    uint256 elapsed = block.timestamp - schedule.cliff;
    uint256 vestingDuration = schedule.duration - (schedule.cliff - schedule.start);
    uint256 vested = schedule.totalAmount * elapsed / vestingDuration;

    return vested - schedule.released;
}

Типові помилки при реалізації:

  • Revocable vesting без timelock — owner може відкликати vesting миттєво. Рішення: revocation через multisig + governance vote.
  • Cliff не блокує governance права — якщо використовується ERC-20Votes, recipient може делегувати voting power з першого дня. Потрібно явно розділити voting power і claim logic.
  • Відсутність emergency pause — Pausable + timelock на unpause.

Як налаштувати vesting контракт покроково:

  1. Визначити параметри vesting (cliff, duration, totalAmount).
  2. Розгорнути контракт TokenVesting (наприклад, OpenZeppelin).
  3. Призначити beneficiary та підтвердити розклад.
  4. Налаштувати emergency pause та revocation через multisig.
  5. Протестувати сценарії за допомогою Foundry fuzz тестів.

Governance токени та voting механіки

OpenZeppelin Governor — модульна архітектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для змінних параметрів.

Quorum — мінімальний відсоток supply для валідності голосування. Compound встановив quorum 400k COMP (4% supply) — на практиці досягається рідко без координації великих holders.

Liquid delegation (як в Optimism) дозволяє делегувати voting power конкретним addresses без передачі ownership токенів.

Як обрати правильний тип токена для вашого проєкту?

Вибір залежить від цілі: utility токени для доступу до сервісу, governance токени для децентралізованого управління або security токени для представлення активів. Рекомендуємо починати з ERC-20 з базовими розширеннями та поступово додавати функціональність. Ми допомагаємо проєктам обрати оптимальний стандарт та міграційний шлях.

Які ризики виникають при використанні rebasing токенів?

Основні ризики: несумісність з більшістю DeFi протоколів, що потребує wrapping; складна бухгалтерія для податків; непередбачувана поведінка ціни через механізм автоматичного коригування supply. Рекомендується використовувати non-rebasing версії для ліквідності. Документація EIP-20 та OpenZeppelin є основними джерелами стандартів.

Процес розробки та строки

  • Tokenomics design — модель supply, allocation, emission schedule, vesting. Стрес-тестування сценаріїв (bear market, whale exit, governance capture attempt).
  • Контракт розробка — ERC-20 + extensions, vesting, governance. Foundry fuzz тести на vesting calculations, governance thresholds.
  • Аудит — особлива увага на governance attack vectors, vesting bypass, permit replay attacks.
  • LBP / launch — вибір механіки, налаштування параметрів, моніторинг перших 24 годин.
  • Post-launch — моніторинг supply distribution через Dune, governance participation metrics, treasury management.

Стек: Solidity 0.8.x, OpenZeppelin Contracts 5.x, Foundry, Gnosis Safe, OpenZeppelin Defender, Dune Analytics.

Строки (залежать від складності):

  • ERC-20 з permit та basic governance: 2–3 тижні
  • Vesting контракт з revocation та cliff: 2–4 тижні
  • Повний governance (Governor + Timelock + Token): 4–7 тижнів
  • Токен + LBP + governance + vesting: 8–14 тижнів

Що входить в роботу

  • Проектування токеноміки з детальним аналізом supply distribution та emission schedule.
  • Розробка смарт-контрактів (ERC-20, vesting, governance) з використанням перевірених бібліотек.
  • Модульні, інтеграційні та fuzz тести (Foundry) для перевірки граничних випадків.
  • Внутрішній аудит коду з використанням Slither та Mythril.
  • Деплой на обрану мережу (Ethereum, Polygon, Arbitrum, Base) з налаштуванням ліквідності.
  • Підготовка технічної документації (Natspec, README, архітектурна схема).
  • Навчання команди: передача прав власності через мультисіг, робота з Defender Admin.
  • Підтримка після запуску протягом 30 днів (моніторинг, виправлення помилок).

Зв'яжіться з нами для отримання консультації та оцінки вашого проєкту. Замовте розробку токена — ми підготуємо рішення під ключ.