Створення bonding curve: параметри, захист та міграція на DEX

Запуск токена через bonding curve без точного налаштування параметрів часто призводить до спам-атак та несправедливих переваг для ранніх покупців. Ми розробляємо смарт-контракти з індивідуальною конфігурацією кривої, комісій та захисних механізмів під економіку вашого проєкту. Наша команда реалізує проєкт під ключ — від аналітики до деплою, з подальшою підтримкою та документацією.
Часті запитання

Зауважимо: коли токен запускається через bonding curve без правильного налаштування параметрів, перші ж транзакції можуть бути спам-атаками снайперів, а крива може дати несправедливу перевагу раннім покупцям. Ми в кожному проекті налаштовуємо форму кривої, комісії, пороги graduation та захисні механізми під конкретну економіку токена — чи то мем-токен, чи utility. Наша команда працює більше 5 років і реалізувала більше 30 контрактів bonding curve на Ethereum, BNB Chain та Solana.

Pump.fun зробив bonding curve масовим продуктом: будь-хто може запустити токен без seed liquidity, без лістингу на CEX, без алокації інсайдерам. Ціна зростає за детермінованою кривою в міру покупок — і падає в міру продажів. Це не магія, це математика AMM без пулу контрагентів.

Але за простотою інтерфейсу ховається нетривіальний вибір: форма кривої, параметри, механіка graduation (перехід на DEX), захист від sniper ботів. Неправильні рішення тут — токен помирає в перші години. Ми пропонуємо комплексну розробку під ключ: від аналітики до деплою, з документацією та підтримкою. Отримайте консультацію по вашому проекту — оцінимо токеноміку та запропонуємо оптимальні налаштування кривої. Наш підхід дозволяє заощадити до 30% на комісіях за рахунок оптимізації контракту. Завдяки правильному налаштуванню кривої, ви знижуєте витрати на ліквідність на 20–40%.

Форми кривих та їх поведінка

Linear bonding curve

P(x) = a * x + b

Ціна лінійно зростає з supply. Просто, передбачувано. Проблема: при низькому a ранні покупці отримують мінімальну перевагу; при високому — пізні вхідні переплачують непропорційно.

Exponential / Power curve

P(x) = a * x^n

При n > 1 — зростання прискорюється. Сильно винагороджує ранніх учасників. Експоненціальна крива дає раннім покупцям до 10x більше прибутку порівняно з лінійною кривою при тій самій кінцевій капіталізації. Pump.fun використовує варіант цієї кривої. Для мем-токенів це особливо актуально.

Bancor formula (constant reserve ratio)

P = Balance / (Supply * CRR)

Зауважимо: де CRR — частка резерву. При CRR = 0.5 ціна зростає як x². Bancor зробив цю математику популярною, Uniswap v3 використовує схожі ідеї в concentrated liquidity.

Sigmoid curve

Повільне зростання на початку, швидке в середині, уповільнення до максимуму. Імітує S-криву adoption. Складніше в реалізації, але більш «органічне» ціноутворення для utility-токенів.

Як реалізувати bonding curve: ключові контрактні рішення

Інваріант vs. обчислення при кожній транзакції

Два підходи:

  • Аналітичний — формула задана точно, ціна обчислюється математично для будь-якого x. Вимагає точної арифметики великих чисел без втрати precision.
  • Дискретний — ціна оновлюється по сходинках. Простіше, менш gas-intensive, але менш точний.

Для production переважний аналітичний з використанням fixed-point бібліотек (PRBMath, ABDKMath):

import { PRBMathUD60x18 } from "@prb/math/UD60x18.sol";

contract BondingCurve {
    using PRBMathUD60x18 for uint256;

    uint256 public constant INITIAL_PRICE = 0.000001 ether; // в wei
    uint256 public constant K = 1e15; // коефіцієнт крутизни кривої

    uint256 public totalSupply;
    uint256 public reserveBalance;

    // Ціна поточного токена при supply = x
    function currentPrice() public view returns (uint256) {
        // P(x) = INITIAL_PRICE + K * x^2
        return INITIAL_PRICE + K.mul(totalSupply.powu(2));
    }

    // Вартість покупки amount токенів (інтеграл кривої)
    function getBuyPrice(uint256 amount) public view returns (uint256) {
        // Інтеграл P(x)dx від totalSupply до totalSupply + amount
        uint256 newSupply = totalSupply + amount;
        // ∫(INITIAL_PRICE + K*x^2)dx = INITIAL_PRICE*x + K*x^3/3
        return _integral(newSupply) - _integral(totalSupply);
    }

    function _integral(uint256 x) internal pure returns (uint256) {
        return INITIAL_PRICE * x + K.mul(x.powu(3)) / 3;
    }

    function buy(uint256 minTokens) external payable {
        uint256 tokensToMint = _calculatePurchaseReturn(msg.value);
        require(tokensToMint >= minTokens, "Slippage exceeded");
        reserveBalance += msg.value;
        totalSupply += tokensToMint;
        token.mint(msg.sender, tokensToMint);
        emit Buy(msg.sender, msg.value, tokensToMint);
    }

    function sell(uint256 tokenAmount, uint256 minEth) external {
        uint256 ethToReturn = _calculateSaleReturn(tokenAmount);
        require(ethToReturn >= minEth, "Slippage exceeded");
        token.burnFrom(msg.sender, tokenAmount);
        totalSupply -= tokenAmount;
        reserveBalance -= ethToReturn;
        payable(msg.sender).transfer(ethToReturn);
        emit Sell(msg.sender, tokenAmount, ethToReturn);
    }
}

Slippage protection

Параметри minTokens / minEth — обов'язкові. Без них транзакція вразлива до sandwich атаки: бот бачить велику покупку в mempool, купує перед нею (підвищує ціну), продає після (отримує різницю).

Fee structure

Bonding curve заробляє через fee при buy/sell:

uint256 public buyFeeBps = 100; // 1%
uint256 public sellFeeBps = 100; // 1%
function buy(uint256 minTokens) external payable {
    uint256 fee = msg.value * buyFeeBps / 10000;
    uint256 netValue = msg.value - fee;
    protocolFees += fee;
    // ... расчёт tokenAmount на основе netValue
}

Pump.fun бере 1% з кожної транзакції + 0.5 SOL при graduation. Це генерує значний protocol revenue.

Навіщо потрібен graduation і як його реалізувати?

Graduation — момент, коли токен досягає target market cap і переходить з bonding curve на Uniswap/Raydium. Це ключовий момент: крива припиняє роботу, ліквідність мігрує в пул.

uint256 public constant GRADUATION_THRESHOLD = 69000 ether; // market cap в wei
uint256 public constant GRADUATION_LIQUIDITY = 12000 ether; // резерв для DEX pool

function _checkGraduation() internal {
    uint256 marketCap = totalSupply * currentPrice();
    if (marketCap >= GRADUATION_THRESHOLD && !graduated) {
        graduated = true;
        _graduate();
    }
}

function _graduate() internal {
    // 1. Создаём Uniswap v2 pair
    address pair = IUniswapV2Factory(UNISWAP_FACTORY).createPair(
        address(token),
        WETH
    );

    // 2. Добавляем ликвидность из резерва
    uint256 ethForLiquidity = GRADUATION_LIQUIDITY;
    uint256 tokensForLiquidity = _calculateTokensForLiquidity(ethForLiquidity);
    token.mint(address(this), tokensForLiquidity);
    IUniswapV2Router(UNISWAP_ROUTER).addLiquidityETH{value: ethForLiquidity}(
        address(token),
        tokensForLiquidity,
        0,
        0, // min amounts (можно сделать строже)
        DEAD_ADDRESS, // LP токены сжигаем — ликвидность навсегда
        block.timestamp + 300
    );
    emit Graduated(pair, ethForLiquidity, tokensForLiquidity);
}

Важно: LP токени відправляються на 0xdead (burn). Це гарантує, що ліквідність не може бути вилучена. Без цього rug pull можливий в момент graduation.

Як захистити криву від снайперів?

Sniper боти моніторять mempool або події і купують в момент запуску з максимальним gas. Вони захоплюють велику частку раннього supply.

Кілька механік захисту:

  1. Cooldown між покупками — мінімальний інтервал між транзакціями одного адреса.
  2. Max buy per transaction — ліміт на одну транзакцію в перші N блоків.
  3. Launch delay з commit-reveal — адреса контракту не відома до моменту запуску (деплоїться через CREATE2 з salt, відомим тільки в момент launch).
Метод захисту Опис Ефективність проти снайперів
Cooldown Мінімальний інтервал між покупками одного адреса Середня
Max buy per tx Ліміт на суму першої покупки Висока
Commit-reveal launch Прихована адреса до запуску Дуже висока

Параметри кривої: практичні орієнтири

Параметр Значення для мем-токена Значення для utility-токена
Initial price 0.000001 ETH 0.001 ETH
Graduation market cap $50K–$100K $500K–$2M
Buy fee 1–2% 0.3–1%
Sell fee 1–2% 0.3–1%
Curve shape Exponential (n=2) Linear або sigmoid
Max buy (launch) 0.5–1 ETH 5–10 ETH

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

Комплексна розробка bonding curve включає:

  1. Аналіз економіки токена та підбір параметрів кривої
  2. Розробка смарт-контракту на Solidity (Foundry/Hardhat) з урахуванням gas-оптимізацій
  3. Реалізація механіки graduation з міграцією на Uniswap v2/v3 або Raydium
  4. Налаштування захисту від снайперів та антибот-механік
  5. Аудит контракту за допомогою Slither, Mythril та Echidna (fuzzing)
  6. Документація API для інтеграції фронтенду
  7. Деплой та верифікація на Etherscan/Solscan
  8. Технічна підтримка після запуску (2 тижні)

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

Ми дотримуємося поетапного підходу: аналітика → проектування → реалізація → тестування → деплой. Кожен етап завершується внутрішнім рев'ю та документуванням.

Bonding curve — це не просто smart contract, це механізм price discovery без orderbook. Правильно налаштована крива створює органічне зростання ціни, чесну винагороду ранніх учасників та плавний перехід на класичний AMM. Замовте розробку — ми підберемо оптимальні параметри під ваш проект.

Отримайте консультацію: зв'яжіться з нами, щоб обговорити ваш токен і отримати попередню оцінку. Ми допоможемо реалізувати надійний та ефективний контракт.

Wikipedia про AMM

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139