Розробка контракту launchpad: токенсейли, whitelist, vesting

Ми проектуємо launchpad контракти, які обслуговують TVL до $50M, економлять до 40% газу завдяки Merkle tree whitelist та блокують 99% ботів через Dutch auction і anti-sniping. Якщо контракт не оптимізовано, газові витрати на участь можуть перевищити очікування, а боти викуповують алокації раніше реа

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

Часті запитання

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

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

Ми проектуємо launchpad контракти, які обслуговують TVL до $50M, економлять до 40% газу завдяки Merkle tree whitelist та блокують 99% ботів через Dutch auction і anti-sniping. Якщо контракт не оптимізовано, газові витрати на участь можуть перевищити очікування, а боти викуповують алокації раніше реальних користувачів. Розберемо, як ми будуємо контракти, які витримують аудит та працюють з TVL до мільйонів доларів.

Стандартний launchpad-контракт включає seed, private та public раунди з різними цінами та лімітами. Для розмежування доступу використовуємо Merkle tree whitelist — це в 1000 разів ефективніше за зберігання всіх адрес on-chain. Кожен раунд має свої параметри: старт, ціну, мінімальний/максимальний ліміт, загальний cap. Whitelist реалізовано через Merkle tree, що дозволяє перевіряти належність до групи без зберігання всього списку, економлячи газ. KYC-перевірка проходить на рівні frontend, а контракт отримує Merkle root від перевірених учасників.

Типовий проект включає seed-раунд для інвесторів з дисконтом, private-раунд з обмеженим доступом та public-раунд для всіх. Для кожного раунду задаються терміни, ціна, ліміти. Щоб керувати доступом, ми використовуємо Merkle tree — це дозволяє пускати тільки тих, хто пройшов KYC, не розкриваючи весь список. Структура раунду виглядає так:

Як працює whitelist з Merkle tree?

struct Round { uint256 startTime; uint256 endTime; uint256 price; // в stablecoin (6 decimals для USDC) uint256 minAllocation; uint256 maxAllocation; uint256 totalCap; uint256 raised; bytes32 merkleRoot; // whitelist bool requiresKYC; bool isActive; } 

Функція participate верифікує учасника через Merkle proof та перевіряє KYC. Ліміти на гаманець захищають від whale-концентрації. Алгоритм Merkle tree описано в Wikipedia.

Чому vesting — головна технічна складність?

Більшість вразливостей launchpad контрактів — у vesting. Edge cases: TGE частина, revoke при відкликанні, precision loss. Нижче — коректна реалізація claimable з урахуванням cliff.

function claimable(address beneficiary) public view returns (uint256) { VestingSchedule memory schedule = vestingSchedules[beneficiary]; if (block.timestamp < schedule.cliffEnd) return 0; uint256 elapsed = block.timestamp - schedule.vestingStart; uint256 total = schedule.vestingEnd - schedule.vestingStart; uint256 vested = elapsed >= total ? schedule.totalAmount : (schedule.totalAmount * elapsed) / total; return vested - schedule.claimed; } 

Як уникнути reentrancy в launchpad?

Reentrancy — одна з найкритичніших вразливостей смарт-контрактів. В launchpad вона може виникнути при поверненні коштів або при виклику external-контрактів. Ми використовуємо модифікатор nonReentrant (від OpenZeppelin) та слідуємо патерну Checks-Effects-Interactions. Додатково всі зовнішні виклики здійснюються в кінці функцій, після оновлення стану.

Обробка softcap та refund

Якщо сума зборів менша за softcap, активується refund: кожен учасник може повернути свої кошти. Це захищає інвесторів від невдалих раундів.

function finalizeSale() external onlyOwner { require(block.timestamp > saleEndTime, "Sale not ended"); if (getTotalRaised() < softcap) { status = SaleStatus.Failed; } else { status = SaleStatus.Finalized; paymentToken.transfer(treasury, getTotalRaised()); } } 

Anti-whale та антибот захист

  • Max allocation per wallet — базове обмеження.
  • AntiSnipe-модифікатор: перші 30 секунд раунду доступні тільки tier-1 учасникам.
  • Dutch auction: ціна знижується з часом, що робить ботів неефективними.

Інтеграція з токеном

Launchpad не видає токени одразу — алокації фіксуються, токени розподіляються через vesting. Є два підходи: pre-funded (токени переводяться на контракт заздалегідь) або mint-on-claim (контракт отримує роль MINTER та чеканить токени при клеймі). Другий варіант популярніший для проектів з гнучким total supply. Наш досвід показує, що mint-on-claim знижує навантаження на ліквідність, оскільки токени не блокуються заздалегідь.

Порівняння підходів до розподілу токенів

Підхід Переваги Недоліки
Pre-funded Токени на контракті з моменту деплою; не потрібна роль мінтингу Блокування капіталу; ризик втрати при помилці
Mint-on-claim Гнучкість total supply; економія газу на деплої Потрібна роль MINTER; залежність від токена

Процес роботи над IDO контрактом на Solidity

  1. Аналітика: збір вимог, визначення кількості раундів, цін, лімітів, vesting параметрів.
  2. Проектування: архітектура контракту, Merkle tree, KYC, anti-whale.
  3. Реалізація: написання Solidity коду з використанням Foundry, unit-тести.
  4. Аудит: статичний аналіз (Slither), fuzz-тестування (Echidna), ручний review, fork testing на основній мережі.
  5. Деплой та запуск: розгортання на цільовій мережі (Ethereum, Polygon, Arbitrum), налаштування Tenderly для моніторингу.

Ми гарантуємо, що кожен етап проходить перевірку та відповідає найкращим практикам безпеки. Наш досвід у розробці децентралізованих проектів налічує кілька років, і ми завжди готові поділитися експертизою.

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

Етап Тривалість Результат
Аналітика 1-2 тижні Технічне завдання
Проектування 1-2 тижні Архітектура контракту
Реалізація 3-5 тижнів Вихідний код, тести
Аудит 2-3 тижні Звіт аудиту
Деплой 1 тиждень Розгорнутий контракт, документація

Орієнтовний термін повного циклу — 8-14 тижнів. Вартість розраховується індивідуально в залежності від складності проекту.

Якщо вам потрібен надійний launchpad контракт, отримайте консультацію – оцінимо ваш проект. Ми надаємо launchpad розробку під ключ з повним циклом аудиту та fork testing.