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

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

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

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

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

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

Зауважимо: коли токен запускається через 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