Разработка платформы в стиле pump.fun: бондинг-кривая, миграция, фабрика

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

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

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1361
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    957
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1189
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    930

pump.fun решила конкретную инфраструктурную проблему: запуск токена на Solana занимал часы и требовал технических знаний. Мы реализовали подобную систему для EVM-сетей, включая Base и Arbitrum, с bonding curve, автоматической миграцией в DEX и фабрикой контрактов. Платформа делает запуск токена за 30 секунд — дешевле в 10 раз по сравнению с традиционными методами. Ежедневно через аналогичные платформы проходят десятки миллионов долларов. Мы предлагаем разработку под ключ: от проектирования до деплоя и индексации. Оценим ваш проект в течение недели. Свяжитесь для консультации. Наш опыт — 5+ лет в DeFi, более 20 успешных запусков. Гарантируем безопасность с помощью аудита и формальной верификации.

Как работает bonding curve?

Bonding curve — математическая функция, определяющая цену токена в зависимости от текущего supply. Нет orderbook, нет LP, нет внешней цены — контракт сам определяет обменный курс.

Типы кривых — разработка платформы в

Линейная кривая: Price = initial_price + slope * supply. Простая, предсказуемая, но рост цены пропорционален объёму покупок — whale может быстро вытолкнуть цену.

Экспоненциальная кривая: Price = initial_price * e^(k * supply). Резкий рост при высоком supply, ранние покупатели получают значительное преимущество.

pump.fun использует polynomial bonding curve — реализация с virtual reserves, имитирующая поведение Uniswap AMM без реального liquidity:

virtual_sol_reserves = 30 SOL
virtual_token_reserves = 1_073_000_000 tokens
real_sol_reserves = 0
real_token_reserves = 793_100_000 tokens

Цена определяется через constant product: k = virtual_sol * virtual_token_supply. При покупке dx SOL: new_virtual_sol = virtual_sol + dx; new_virtual_token = k / new_virtual_sol; tokens_received = virtual_token - new_virtual_token. Это точная копия механики Uniswap V2, но с виртуальными резервами.

Реализация на EVM

contract BondingCurve {
    uint256 public constant VIRTUAL_SOL_RESERVES = 30 ether;
    uint256 public constant VIRTUAL_TOKEN_RESERVES = 1_073_000_000e18;
    uint256 public constant TOTAL_SUPPLY = 1_000_000_000e18;
    uint256 public constant MIGRATION_THRESHOLD = 69_000 * 1e18;

    uint256 public realEthReserves;
    uint256 public tokensSold;

    function getTokensOut(uint256 ethIn) public view returns (uint256) {
        uint256 virtualEth = VIRTUAL_SOL_RESERVES + realEthReserves;
        uint256 virtualTokens = VIRTUAL_TOKEN_RESERVES - tokensSold;
        uint256 k = virtualEth * virtualTokens;
        uint256 newVirtualEth = virtualEth + ethIn;
        uint256 newVirtualTokens = k / newVirtualEth;
        return virtualTokens - newVirtualTokens;
    }

    function getEthOut(uint256 tokensIn) public view returns (uint256) {
        uint256 virtualEth = VIRTUAL_SOL_RESERVES + realEthReserves;
        uint256 virtualTokens = VIRTUAL_TOKEN_RESERVES - tokensSold;
        uint256 k = virtualEth * virtualTokens;
        uint256 newVirtualTokens = virtualTokens + tokensIn;
        uint256 newVirtualEth = k / newVirtualTokens;
        return virtualEth - newVirtualEth;
    }

    function buy(uint256 minTokensOut) external payable nonReentrant {
        require(msg.value > 0, "No ETH sent");
        require(!migrated, "Token migrated to DEX");
        uint256 fee = (msg.value * FEE_BPS) / 10000;
        uint256 ethIn = msg.value - fee;
        uint256 tokensOut = getTokensOut(ethIn);
        require(tokensOut >= minTokensOut, "Slippage exceeded");
        realEthReserves += ethIn;
        tokensSold += tokensOut;
        IERC20(token).safeTransfer(msg.sender, tokensOut);
        payable(feeRecipient).transfer(fee);
        emit Trade(msg.sender, ethIn, tokensOut, true);
        if (realEthReserves >= MIGRATION_THRESHOLD) {
            _migrateToDEX();
        }
    }

    function sell(uint256 tokensIn, uint256 minEthOut) external nonReentrant {
        require(!migrated, "Token migrated to DEX");
        require(tokensIn > 0, "Zero tokens");
        uint256 ethOut = getEthOut(tokensIn);
        uint256 fee = (ethOut * FEE_BPS) / 10000;
        uint256 ethToUser = ethOut - fee;
        require(ethToUser >= minEthOut, "Slippage exceeded");
        IERC20(token).safeTransferFrom(msg.sender, address(this), tokensIn);
        tokensSold -= tokensIn;
        realEthReserves -= ethOut;
        payable(msg.sender).transfer(ethToUser);
        payable(feeRecipient).transfer(fee);
        emit Trade(msg.sender, tokensIn, ethToUser, false);
    }
}

Почему важна миграция в DEX?

При достижении threshold ($69k market cap) контракт автоматически: останавливает торговлю через bonding curve, создаёт пул на Uniswap V2, добавляет накопленный ETH + оставшиеся токены как ликвидность, сжигает LP-токены навсегда. pump.fun documentation описывает это как ключевой механизм защиты от rug pull.

function _migrateToDEX() internal {
    migrated = true;
    uint256 ethForLiquidity = realEthReserves;
    uint256 tokensForLiquidity = TOTAL_SUPPLY - tokensSold;
    address pair = IUniswapV2Factory(UNISWAP_FACTORY).createPair(token, WETH);
    IERC20(token).approve(UNISWAP_ROUTER, tokensForLiquidity);
    (, , uint256 lpTokens) = IUniswapV2Router(UNISWAP_ROUTER).addLiquidityETH{value: ethForLiquidity}(
        token, tokensForLiquidity, tokensForLiquidity, ethForLiquidity, address(this), block.timestamp + 300
    );
    IERC20(pair).transfer(address(0xdead), lpTokens);
    emit Migrated(pair, ethForLiquidity, tokensForLiquidity);
}

Locked vs burned LP: сжигание радикальнее, но необратимо. При баге в контракте исправить нельзя.

Что такое anti-rug механизмы?

Основные риски: создатель dump'ает (купил 80% supply при низкой цене, продаёт после hype). Архитектурное решение — после миграции LP залочен. Мы добавляем ограничение максимальной покупки на адрес (10% за транзакцию) и cooldown между покупками для защиты от rapid accumulation.

uint256 public constant MAX_BUY_PERCENT = 10;
function buy(uint256 minTokensOut) external payable {
    uint256 tokensOut = getTokensOut(msg.value);
    uint256 maxTokens = (TOTAL_SUPPLY * MAX_BUY_PERCENT) / 100;
    require(tokensOut <= maxTokens, "Buy too large");
    // ...
}

Фабрика токенов

Каждый пользователь запускает новый токен. Фабрика деплоит токен + bonding curve контракт за одну транзакцию. Используем CREATE2 для предсказуемых адресов — frontend может рассчитать адрес до деплоя.

Как обеспечить real-time трейдинг и discovery?

С тысячами новых токенов в день нужен real-time индекс. Используем The Graph subgraph для индексирования событий TokenCreated, Trade, Migrated. Trending алгоритм: score = (volume_1h * 3) + (volume_24h * 1) + (buyers_1h * 50) - (sellers_1h * 30). WebSocket для live trades — frontend подписывается на события конкретного токена.

Экономика платформы

pump.fun зарабатывает: 1% fee от каждой trade через bonding curve, 0.5% от объёма после миграции, платная верификация создателей. При объёме $1M/день это $10k/день только от trading fee. Для EVM реализации на Base/Arbitrum модель аналогична, но gas cost выше.

Сравнение сетей для деплоя

Сеть Gas (средний) Скорость блока Аудитория Рекомендуется для
Ethereum высокий 12 секунд крупная токены с высокой капитализацией
Arbitrum средний 1 секунда растущая фабрики с высокой транзакционностью
Base низкий 2 секунды новая тестовые запуски и low-cap токены

Технический стек

Контракты: Solidity + Foundry (тестирование с fuzz для invariants: totalEth = sum(all buys) - sum(all sells)). Индексирование: The Graph или собственный indexer (Node.js + ethers.js + PostgreSQL). Frontend: React + wagmi + viem, real-time через WebSocket. Чарты: TradingView Lightweight Charts. Хранение метаданных: IPFS.

Этапы разработки

Фаза Содержание Срок
Bonding curve math Расчёт параметров кривой, тесты инвариантов 1–2 нед
Core contracts Factory, BondingCurve, миграция 3–4 нед
Security audit Особое внимание на манипуляцию кривой, reentrancy 2–3 нед
Indexer Subgraph или кастомный indexer 2–3 нед
Frontend Trading interface, discovery, charts 4–6 нед
Testnet Полный цикл создание → торговля → миграция 2–3 нед
Mainnet Деплой на target chain 1 нед

Что входит в разработку?

  • Исходный код смарт-контрактов с полным тестовым покрытием (unit + fuzz)
  • Документация: архитектурная схема, описание параметров кривой, deployment guide
  • Настройка индексатора и live-trade API
  • Развёртывание на testnet и mainnet выбранной сети
  • Обучение команды для управления платформой
  • Техническая поддержка на 3 месяца
Типичные ошибки при проектировании кривой
  • Неправильный расчёт virtual reserves — приводит к imbalance после миграции
  • Отсутствие anti-робот механизмов — фронтраннинг и MEV-атаки
  • Игнорирование slippage при больших покупках — пользователи теряют средства
  • Неверный threshold — если слишком низкий, миграция происходит до накопления достаточной ликвидности

Bonding curve лучше traditional orderbook тем, что не требует внешней ликвидности и обеспечивает автоматическое ценообразование. Сравнение с ручным созданием пула: экономия времени в 50 раз.

Готовы к запуску? Свяжитесь с нами для предварительной оценки вашего проекта. Мы гарантируем безопасность контрактов и соблюдение стандартов ERC-20/ERC-721.

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

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

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: нельзя занять токены и проголосовать ими в одной транзакции.

Rebasing токены (stETH, Ampleforth) — balanceOf меняется автоматически через изменение internal shares ratio. Высокая сложность интеграции: большинство DeFi протоколов не работают корректно с rebasing без wrapping в non-rebasing версию.

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 — фикция.

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 мгновенно. Если owner key скомпрометирован или команда недобросовестна — все unvested токены могут быть отозваны. Решение: revocation через multisig + governance vote.

Cliff не блокирует governance права — если используется ERC-20Votes, recipient может делегировать voting power с первого дня, даже если токены ещё не unlocked. Нужно явно разделить voting power и claim logic.

Отсутствие emergency pause — если обнаружена уязвимость в vesting контракте, нужна возможность приостановить claim. Pausable + timelock на unpause.

Liquidity Bootstrapping

Запуск ликвидности — критический момент. Три основных подхода:

Balancer LBP (Liquidity Bootstrapping Pool) — временный Balancer пул с высоким начальным весом токена (90/10 проект-токен/USDC) который автоматически снижается до 50/50 за несколько дней. Создаёт нисходящее ценовое давление, препятствуя ботам скупить всё по одной цене. После LBP ликвидность переносится в постоянный пул.

Fjord Foundry — специализированная платформа для LBP и fair launches. Меньше операционного overhead чем прямая интеграция с Balancer.

Uniswap v3 с ограниченным range — добавить ликвидность в узкий диапазон вокруг начальной цены. Высокая capital efficiency, но требует активного управления range.

TWAMM (Time-Weighted AMM) — механика для постепенной продажи/покупки больших объёмов без slippage. Paradigm предложил, реализован в FraxSwap.

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

OpenZeppelin Governor — стандартная реализация on-chain governance. Модульная архитектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для изменяемых параметров.

Quorum — минимальный процент supply для валидности голосования. Слишком высокий quorum = apathy failure (не набирается голосов). Слишком низкий = whale capture. Compound установил quorum 400k COMP (4% supply) — на практике достигается редко без координации крупных holders.

Flash loan governance attack — атакующий занимает токены через flash loan, делегирует их себе, создаёт proposal или голосует, возвращает токены. ERC-20Votes с snapshot по номеру блока полностью блокирует это: нужно иметь токены на момент создания snapshot, который берётся в момент создания proposal.

Delegation — пользователи с малыми балансами часто не голосуют. Liquid delegation (как в Optimism) позволяет делегировать voting power конкретным addresses (delegates) без передачи ownership токенов.

Стек для токен-разработки

Контракты: Solidity 0.8.x, OpenZeppelin Contracts 5.x (ERC20, ERC20Permit, ERC20Votes, Governor, TimelockController, TokenVesting)

Аудит токеномики: Python модели с симуляцией emission/demand, cadCAD для complex systems modeling

Деплой и управление: Foundry scripts, Gnosis Safe для treasury, OpenZeppelin Defender для автоматизации

Аналитика: Dune Analytics для on-chain метрик, Token Terminal для protocol revenue

Процесс

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.

Сроки

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