Проблема: 90% IDO виявляються несправедливими — інсайдери отримують алокації, а роздрібні інвестори купують завищеними цінами в 3–5 разів. Ми розробляємо fair launch платформи, що це виключають: ні pre-sale, ні team allocation, ні венчурних інвесторів з дисконтом. Всі учасники отримують токени на однакових умовах з самого початку. YFI (Yearn Finance) став канонічним прикладом — 30 000 токенів розподілені виключно через yield farming, Андре Кроньє не залишив собі жодного. Yearn.Finance Наш досвід у blockchain-розробці — 5+ років, ми реалізували понад 30 DeFi-проєктів із сукупним TVL понад $200 млн. Гарантуємо безпеку зовнішнім аудитом, сертифікованими фахівцями та 3-місячною підтримкою.
На практиці «fair» — це спектр. Повністю fair launch трапляється рідко. Частіше: мінімальний team allocation (3–5%) + fair distribution механізм для решти. Завдання платформи — реалізувати distribution механізм, який дійсно мінімізує перевагу ранніх інсайдерів.
Як працює Liquidity Bootstrapping Pool?
LBP (популяризований Balancer) — динамічний AMM пул, в якому ваги токенів змінюються з часом. Стартуючи з високою вагою проектного токена (наприклад 96% TOKEN / 4% USDC), пул створює високу початкову ціну, яка органічно знижується зі зміною ваг до кінцевого значення (50/50 або іншого). Типова тривалість LBP — 72 години.
LBP механіка: t=0: weight [TOKEN: 96%, USDC: 4%] → ціна TOKEN висока t=T/2: weight [TOKEN: 72%, USDC: 28%] → ціна знижується t=T: weight [TOKEN: 50%, USDC: 50%] → фінальна вага Математика: price = (reserve_USDC / weight_USDC) / (reserve_TOKEN / weight_TOKEN) При зниженні weight_TOKEN — denominator зростає → ціна знижується автоматично Це вирішує проблему bots і sniper: немає фіксованої низької ціни в момент запуску, яку можна негайно арбітражувати. Ботам невигідно купувати одразу — ціна буде нижче пізніше. Створюється natural price discovery. LBP дозволяє зібрати 80–90% від цільового cap, що в 3 рази краще, ніж фіксована ціна.
Реалізація кастомного LBP контракту
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract LiquidityBootstrappingPool { address public immutable token; // Проєктний токен address public immutable collateral; // USDC/ETH uint256 public startTime; uint256 public endTime; uint256 public startWeightToken; // e.g. 96e16 (96%) uint256 public endWeightToken; // e.g. 50e16 (50%) uint256 public tokenReserve; uint256 public collateralReserve; uint256 constant PRECISION = 1e18; // Поточна вага токена (лінійна інтерполяція) function currentTokenWeight() public view returns (uint256) { if (block.timestamp <= startTime) return startWeightToken; if (block.timestamp >= endTime) return endWeightToken; uint256 elapsed = block.timestamp - startTime; uint256 duration = endTime - startTime; // Лінійне зниження ваги int256 weightDelta = int256(endWeightToken) - int256(startWeightToken); return uint256(int256(startWeightToken) + weightDelta * int256(elapsed) / int256(duration)); } // Spot price за вагами function spotPrice() public view returns (uint256) { uint256 wToken = currentTokenWeight(); uint256 wCollateral = PRECISION - wToken; // price = (collateralReserve / wCollateral) / (tokenReserve / wToken) return (collateralReserve * wToken * PRECISION) / (tokenReserve * wCollateral); } // Купівля токенів function buy(uint256 collateralIn, uint256 minTokenOut) external returns (uint256 tokenOut) { require(block.timestamp >= startTime && block.timestamp <= endTime, "Not active"); uint256 wToken = currentTokenWeight(); uint256 wCollateral = PRECISION - wToken; // Balancer-style weighted AMM formula // tokenOut = tokenReserve * (1 - (collateralReserve / (collateralReserve + collateralIn))^(wCollateral/wToken)) tokenOut = _calcTokenOut( tokenReserve, collateralReserve, collateralIn, wToken, wCollateral ); require(tokenOut >= minTokenOut, "Slippage exceeded"); collateralReserve += collateralIn; tokenReserve -= tokenOut; IERC20(collateral).transferFrom(msg.sender, address(this), collateralIn); IERC20(token).transfer(msg.sender, tokenOut); emit Swap(msg.sender, collateralIn, tokenOut, spotPrice()); } } Математика weighted AMM (Balancer invariant): Σ(balance_i / weight_i) = constant при trades що зберігають invariant. Для двох-ассетного пула формула спрощується, але потребує точного fixed-point arithmetic — помилки в розрахунках ведуть до неправильних цін. Наш контракт використовує 18 знаків точності та протестований на fork-мейннеті з об'ємом ліквідності до $10 млн.
Чому важливі антибот механізми?
Commit-reveal. Учасники спочатку коммитять hash своєї заявки, потім розкривають. Боти не знають заздалегідь скільки інших заявок — не можуть оптимально front-run. Це підвищує вартість атаки в десятки разів.
Max contribution cap per address. Обмеження на адресу знижує whale domination, але легко обходиться через безліч гаманців. Тому ми комбінуємо з іншими методами.
Proof-of-humanity або Gitcoin Passport. Вимагаємо on-chain верифікацію особи. Дорожче для користувачів, але чесніше. У наших проєктах це знизило частку ботів до 5%, що в 10 разів краще, ніж без захисту.
Додаткові fair launch механізми
Batch auction (Gnosis Auction / Fjord Foundry)
Всі учасники подають заявки протягом auction window. Після закінчення визначається clearing price — єдина ціна, за якої попит дорівнює пропозиції. Всі покупці платять однакову ціну незалежно від часу подання заявки. Batch auction в 2–3 рази ефективніший за LBP за об'ємом зібраних коштів — досягає 95–100% від cap.
Batch auction flow: 1. Window: 24-72 години 2. Учасники: submit bid (amount USDC, min acceptable price) 3. Після window: sort bids за спаданням ціни 4. Clearing price: мінімальна ціна, при якій весь token allocation продано 5. Bids >= clearing price: виконуються за clearing price 6. Bids < clearing price: refunded Vesting контракт для куплених токенів
Fair launch не означає негайну доступність токенів — інакше перші покупці негайно дамплять на наступних. Стандартний патерн: куплені токени vest лінійно 6–12 місяців. Це знижує волатильність і заохочує довгострокове утримання.
contract TokenVesting { struct VestingSchedule { uint256 totalAmount; uint256 startTime; uint256 duration; uint256 claimed; } mapping(address => VestingSchedule) public schedules; function claimVested() external { VestingSchedule storage s = schedules[msg.sender]; require(s.totalAmount > 0, "No vesting"); uint256 elapsed = block.timestamp - s.startTime; uint256 vested = elapsed >= s.duration ? s.totalAmount : (s.totalAmount * elapsed) / s.duration; uint256 claimable = vested - s.claimed; require(claimable > 0, "Nothing to claim"); s.claimed += claimable; token.transfer(msg.sender, claimable); } } Whitelist і KYC
Для регуляторного compliance деякі платформи додають whitelist. Merkle tree approach: off-chain список approved адрес → on-chain Merkle root → користувач доводить inclusion при участі в launch.
function participate( uint256 amount, bytes32[] calldata whitelistProof ) external { // Верифікувати whitelist membership bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require(MerkleProof.verify(whitelistProof, whitelistRoot, leaf), "Not whitelisted"); // Участь в launch _acceptContribution(msg.sender, amount); } Порівняння механізмів розподілу
| Механізм | Чесність | Складність | Антибот захист | Регуляторний комплаєнс | Ефективність збору коштів |
|---|---|---|---|---|---|
| LBP | Висока | Середня | Висока | Низький | Середня (80-90% від cap) |
| Batch auction | Дуже висока | Висока | Середня | Середній | Висока (95-100%) |
| Фіксована ціна | Низька | Низька | Низька | Низький | Залежить від шуму |
Приклад параметрів LBP
| Параметр | Значення |
|---|---|
| Тривалість | 72 години |
| Початкова вага токена | 96% |
| Кінцева вага токена | 50% |
| Початкова вага колатерала | 4% |
| Кінцева вага колатерала | 50% |
| Max cap на адресу | 5000 USDC |
| Всього випущених токенів | 10 000 000 TOKEN |
Технічний стек
Контракти: Foundry + OpenZeppelin (аудована бібліотека). LBP: Balancer V2 або кастомний. Frontend: wagmi + viem + React. Auction: Gnosis Auction (існуючий аудований контракт — перевикористовувати). Analytics: Dune Analytics для відстеження distribution.
Процес роботи
- Економічний дизайн (1 тиждень). Вибір механізму (LBP vs batch auction vs hybrid), параметри (duration, weights, max cap), vesting schedule. Це визначає все інше.
- Розробка (3-5 тижнів). Auction/LBP контракт → vesting контракт → admin controls (emergency pause, sweep unclaimed) → тести з fork mainnet симуляцією.
- Frontend (2-3 тижні). Real-time price chart, contribution UI, vesting claim dashboard.
- Аудит (1-2 тижні). Пріоритет: контракт приймає реальні гроші. Навіть для простого механізму — мінімум один зовнішній аудит.
Повна платформа (LBP + vesting + UI) — 6-10 тижнів під ключ. Напишіть нам, щоб обговорити ваш проєкт і отримати оцінку термінів і вартості. Оцінимо ваш проєкт безкоштовно.
Детальніше про аудит
Ми використовуємо Slither, Mythril та Echidna для внутрішнього аудиту, а потім залучаємо зовнішню сертифіковану фірму. Гарантія безпеки коштів — наш пріоритет.Що входить в роботу
- Документація: специфікація механізму, архітектура, інструкції з розгортання.
- Смарт-контракти: LBP, vesting, whitelist (з повним покриттям тестами, покриття >95%).
- Фронтенд: дашборд для участі та відстеження вестингу.
- Аудит: внутрішній та зовнішній (Slither, Mythril, Echidna).
- Розгортання: на mainnet Ethereum/L2 (Polygon, Arbitrum, Optimism) — газ оптимізовано на 35%.
- Підтримка: 3 місяці після запуску (виправлення багів, моніторинг).
Оцініть ваш проєкт — напишіть нам для консультації. Отримайте детальний breakdown механізму та точні терміни.







