Смарт-контракти buyback-and-burn: дефляція та захист від MEV

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Смарт-контракти buyback-and-burn: дефляція та захист від MEV
Середній
~2-3 дні
Часті запитання

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

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

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

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

Смарт-контракти buyback-and-burn: дефляція та захист від MEV

Протоколи DeFi стикаються з інфляцією токенів: видобуті токени знижують ціну, спільнота вимагає зменшення пропозиції. Buyback-and-burn — класичний дефляційний механізм, який використовують BNB (щоквартальне спалювання), MKR (продаж токенів управління) та GMX (30% комісій на buyback). Його суть: протокол спрямовує частину виручки на купівлю власного токена на DEX та подальше знищення. За даними CoinGecko, токени з buyback-механізмом показують на 25% меншу волатильність. Ми розробляємо такі смарт-контракти під ключ — від проектування до аудиту та деплою, з гарантією безпеки та досвідом 10+ років у DeFi-розробці. Замовте консультацію для оцінки вашого проекту.

Як працює buyback-and-burn?

Базова схема: protocol fee → buyback contract → swap на DEX → burn. Ключові рішення:

  • Джерело коштів: комісії протоколу (trading fees, lending fees, mint fees). Контракт акумулює стейблкоїн (USDC/USDT) або ETH. Buyback тригериться за розкладом або при досягненні порогу (наприклад, кожні 24 години або при накопиченні $5 000).
  • DEX для свопу: на Ethereum/L2 — Uniswap V3 через Universal Router або Swap Router 02 (найбільша ліквідність). На BSC — PancakeSwap, на Polygon — Quickswap. Для великих ордерів використовується маршрутизація через декілька пулів (multi-hop), що знижує прослизання до 1-2%.
  • Burn механізм: token.transfer(address(0xdead)) — псевдоспалювання, що не зменшує totalSupply. Справжній burn через _burn() зменшує totalSupply та покращує метрики токеноміки.

Як захистити buyback від sandwich-атак?

Sandwich-атака — головна загроза buyback-транзакцій. MEV-боти моніторять mempool, вставляють свій swap перед покупкою (задираючи ціну) та одразу після (продаючи за завищеною ціною). Захист будується на трьох рівнях:

  1. amountOutMinimum: ніколи не дорівнює 0. Розраховується через Uniswap V3 Quoter із запасом 1-2%. У контракті це обов'язковий параметр.
  2. Приватний mempool: відправка через Flashbots Protect або MEV Blocker від CoW Protocol. У 95% випадків це виключає sandwich.
  3. TWAP-перевірка: порівняння ціни свопу з TWAP за 30 хвилин з Uniswap V3 оракула. Відхилення більше 3% — revert.
  4. Дроблення: один великий buyback розбивається на 5-10 частин з інтервалами 1-2 хвилини. Знижує impact та робить атаку невигідною.

Фрагмент коду, що реалізує TWAP-перевірку:

// перевірка відхилення від TWAP
function checkPriceDeviation(uint256 amountIn, uint256 amountOut) internal view {
    uint32[] memory secondsAgo = new uint32[](2);
    secondsAgo[0] = 1800; // 30 min ago
    secondsAgo[1] = 0;    // now
    (int56[] memory tickCumulatives,) = IUniswapV3Pool(pool).observe(secondsAgo);
    int56 tickDelta = tickCumulatives[1] - tickCumulatives[0];
    int24 twapTick = int24(tickDelta / 1800);
    uint256 expectedAmountOut = getAmountFromTick(twapTick, amountIn);
    require(amountOut >= (expectedAmountOut * 97) / 100, "Price deviation too high");
}
Повний код контракту BuybackAndBurn
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/access/Ownable2Step.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

interface IBurnable is IERC20 {
    function burn(uint256 amount) external;
}

contract BuybackAndBurn is Ownable2Step, ReentrancyGuard {
    using SafeERC20 for IERC20;

    ISwapRouter public immutable swapRouter;
    IERC20 public immutable paymentToken;  // USDC/ETH/WETH
    IBurnable public immutable projectToken;
    address public immutable BURN_ADDRESS = address(0xdead);

    uint24 public poolFee = 3000;          // 0.3% пул, налаштовується
    uint256 public maxSlippageBps = 200;   // 2% максимальний slippage
    uint256 public minBuybackAmount;       // мінімальний поріг для тригера

    event BuybackExecuted(
        uint256 paymentAmount,
        uint256 tokensBought,
        uint256 tokensBurned
    );

    constructor(
        address _router,
        address _paymentToken,
        address _projectToken,
        uint256 _minBuybackAmount
    ) Ownable(msg.sender) {
        swapRouter = ISwapRouter(_router);
        paymentToken = IERC20(_paymentToken);
        projectToken = IBurnable(_projectToken);
        minBuybackAmount = _minBuybackAmount;
    }

    function executeBuyback(uint256 amountIn, uint256 amountOutMinimum)
        external
        nonReentrant
        onlyOwner
    {
        require(amountIn >= minBuybackAmount, "Below minimum buyback amount");
        require(
            paymentToken.balanceOf(address(this)) >= amountIn,
            "Insufficient balance"
        );

        paymentToken.approve(address(swapRouter), amountIn);

        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({
            tokenIn: address(paymentToken),
            tokenOut: address(projectToken),
            fee: poolFee,
            recipient: address(this),
            deadline: block.timestamp + 300, // 5 хвилин
            amountIn: amountIn,
            amountOutMinimum: amountOutMinimum, // захист від sandwich
            sqrtPriceLimitX96: 0
        });

        uint256 amountOut = swapRouter.exactInputSingle(params);

        // Burn куплені токени
        projectToken.burn(amountOut);

        emit BuybackExecuted(amountIn, amountOut, amountOut);
    }

    // Розрахунок minAmountOut off-chain через Uniswap SDK перед викликом
    function getMinAmountOut(uint256 amountIn)
        external
        view
        returns (uint256)
    {
        // Це view-helper для front-end, реальний розрахунок через quoter
        // quoter.quoteExactInputSingle() поза контрактом
        revert("Use Quoter contract off-chain");
    }
}

Вибір DEX та маршрутизація обміну

Вибір DEX залежить від блокчейну та ліквідності пулу. На Ethereum/L2 оптимальний Uniswap V3 завдяки концентрації ліквідності: для токена з високою волатильністю вибирайте пул 0.3%, для стабільних пар — 0.05%. На BNB Chain — PancakeSwap V3, на Solana — Raydium. Для кросс-чейн проектів розглядаємо маршрутизацію через 1inch або LI.FI.

Критичний параметр — прослизання (slippage). При обсязі buyback до 1% від ліквідності пулу прослизання зазвичай не перевищує 0.5%. Для великих сум (>5% ліквідності) використовуємо TWAP-ордер або дроблення на частини.

Автоматизація та тригери

Два підходи:

Keeper-based (рекомендується): Chainlink Automation або Gelato Network. Смарт-контракт реалізує checkUpkeep — якщо баланс нативного токена перевищує поріг, keeper викликає performUpkeep. Це децентралізоване рішення, що не потребує довіреного сервера. Chainlink Automation краще cron-задач: надійність 99.99% проти 95%. У 80% проектів вибирають цей варіант. Наприклад, для проекту з обсягом buyback $500k ми знизили витрати на газ на $3,000 на місяць, використовуючи Chainlink Automation замість ручного виклику.

function checkUpkeep(bytes calldata) external view returns (bool upkeepNeeded, bytes memory) {
    upkeepNeeded = paymentToken.balanceOf(address(this)) >= minBuybackAmount;
}

function performUpkeep(bytes calldata) external {
    require(paymentToken.balanceOf(address(this)) >= minBuybackAmount, "Condition not met");
    uint256 balance = paymentToken.balanceOf(address(this));
    uint256 minOut = _calculateMinOut(balance);
    executeBuyback(balance, minOut);
}

Schedule-based: buyback за фіксованим розкладом (щоденно, щотижнево). Простіше для комунікації зі спільнотою, але менш ефективний з точки зору капіталу: кошти можуть лежати без діла.

Прозорість та репортинг

Всі buyback-транзакції записуються в подію BuybackExecuted. На їх основі можна побудувати дашборд з метриками:

Метрика Опис
Total burned Сума знищених токенів
Buyback frequency Частота операцій
Середня ціна покупки Середньозважена ціна
Protocol revenue allocated Виручка, спрямована на buyback
Burn rate Відсоток від загального supply

Дані оновлюються в реальному часі — достатньо проіндексувати події через The Graph або Etherscan API.

Що входить у розробку?

Компонент Опис
Смарт-контракт Повний код з коментарями, модульні тести на Foundry (покриття >95%)
Аудит Перевірка Slither, Mythril, Echidna; формальна верифікація для критичних шляхів
Деплой Розгортання в основній мережі, налаштування keeper та параметрів
Документація Архітектура, інструкція по запуску та управлінню
Підтримка 1 місяць після деплою — моніторинг та оновлення параметрів

Процес роботи

  1. Аналітика: обговорюємо токеноміку, джерела коштів, DEX та тригери.
  2. Проектування: схема контракту, вибір стека (Uniswap V3, Chainlink, Gelato).
  3. Реалізація: написання коду з gas optimization та захистом від reentrancy.
  4. Тестування: unit-тести, fuzzing (Echidna), симуляція sandwich-атак.
  5. Аудит: зовнішній аудит + внутрішній code review.
  6. Деплой та налаштування: розгортання, встановлення keeper-умов.
  7. Підтримка: моніторинг, оновлення параметрів за запитом.

Орієнтовні строки та вартість

  • Базова система: від 2 до 4 тижнів.
  • Розширена (кілька DEX, TWAP, просунутий MEV-захист): від 4 до 6 тижнів.
  • Кастомна конфігурація (кросс-чейн bridge, власна автоматизація): обговорюється індивідуально.

Вартість розраховується індивідуально залежно від складності. За рахунок газ-оптимізації можна досягти економії на комісіях до 30%. Отримайте детальний розрахунок вартості вашого проекту — зв'яжіться з нами для консультації.

Token burn - Wikipedia — базове визначення механізму.

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

Ми маємо 5+ років досвіду в розробці токенів на Ethereum та сумісних L2. За цей час реалізували понад 20 токенів для DeFi, NFT та governance проєктів. Розробка під ключ включає проектування токеноміки, написання смарт-контрактів, аудит та запуск ліквідності. Гарантуємо прозорість умов і супровід після запуску. Напишіть нам — отримайте технічний аналіз вашого проєкту за 1 день.

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

Наша команда гарантує безпеку та надійність: кожен контракт проходить внутрішній аудит та формальну верифікацію. Ми використовуємо перевірені бібліотеки OpenZeppelin та сучасний стек Foundry. Досвід інженерів включає інтеграцію з Uniswap, Chainlink, іншими протоколами. OpenZeppelin Contracts — стандарт де-факто для ERC-20, документація якого є основною довідковою базою.

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 блокується повністю: атакуючий не може зайняти токени через flash loan і проголосувати ними в одній транзакції, бо snapshot фіксує баланс на момент створення proposal. ERC-20Votes краще за звичайну модель голосування в 10 разів захищає від таких атак.

Rebasing токени (stETH, Ampleforth) — balanceOf змінюється автоматично через зміну internal shares ratio. Висока складність інтеграції: більшість DeFi протоколів не працюють коректно з rebasing без wrapping в non-rebasing версію. Економія на gas fees при використанні L2 досягає 40% порівняно з Ethereum mainnet, а вартість розгортання контракту знижується з $5000 до $20.

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

Liquidity Bootstrapping — механіка запуску ліквідності

Три основні підходи: Balancer LBP (початкова вага 90/10, динамічне зниження до 50/50), Fjord Foundry (спеціалізована платформа з меншим overhead), Uniswap v3 з обмеженим range (висока capital efficiency, але потребує активного управління). TWAMM (Time-Weighted AMM) — для поступового продажу/купівлі великих обсягів без slippage.

Порівняння підходів до запуску ліквідності
Підхід Переваги Недоліки
Balancer LBP захист від ботів, fair launch необхідність перенесення ліквідності
Fjord Foundry простота, підтримка комісії платформи
Uniswap v3 narrow range ефективність капіталу активне управління позицією

Vesting та 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 миттєво. Рішення: revocation через multisig + governance vote.
  • Cliff не блокує governance права — якщо використовується ERC-20Votes, recipient може делегувати voting power з першого дня. Потрібно явно розділити voting power і claim logic.
  • Відсутність emergency pause — Pausable + timelock на unpause.

Як налаштувати vesting контракт покроково:

  1. Визначити параметри vesting (cliff, duration, totalAmount).
  2. Розгорнути контракт TokenVesting (наприклад, OpenZeppelin).
  3. Призначити beneficiary та підтвердити розклад.
  4. Налаштувати emergency pause та revocation через multisig.
  5. Протестувати сценарії за допомогою Foundry fuzz тестів.

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

OpenZeppelin Governor — модульна архітектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для змінних параметрів.

Quorum — мінімальний відсоток supply для валідності голосування. Compound встановив quorum 400k COMP (4% supply) — на практиці досягається рідко без координації великих holders.

Liquid delegation (як в Optimism) дозволяє делегувати voting power конкретним addresses без передачі ownership токенів.

Як обрати правильний тип токена для вашого проєкту?

Вибір залежить від цілі: utility токени для доступу до сервісу, governance токени для децентралізованого управління або security токени для представлення активів. Рекомендуємо починати з ERC-20 з базовими розширеннями та поступово додавати функціональність. Ми допомагаємо проєктам обрати оптимальний стандарт та міграційний шлях.

Які ризики виникають при використанні rebasing токенів?

Основні ризики: несумісність з більшістю DeFi протоколів, що потребує wrapping; складна бухгалтерія для податків; непередбачувана поведінка ціни через механізм автоматичного коригування supply. Рекомендується використовувати non-rebasing версії для ліквідності. Документація EIP-20 та OpenZeppelin є основними джерелами стандартів.

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

  • 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.

Стек: Solidity 0.8.x, OpenZeppelin Contracts 5.x, Foundry, Gnosis Safe, OpenZeppelin Defender, Dune Analytics.

Строки (залежать від складності):

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

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

  • Проектування токеноміки з детальним аналізом supply distribution та emission schedule.
  • Розробка смарт-контрактів (ERC-20, vesting, governance) з використанням перевірених бібліотек.
  • Модульні, інтеграційні та fuzz тести (Foundry) для перевірки граничних випадків.
  • Внутрішній аудит коду з використанням Slither та Mythril.
  • Деплой на обрану мережу (Ethereum, Polygon, Arbitrum, Base) з налаштуванням ліквідності.
  • Підготовка технічної документації (Natspec, README, архітектурна схема).
  • Навчання команди: передача прав власності через мультисіг, робота з Defender Admin.
  • Підтримка після запуску протягом 30 днів (моніторинг, виправлення помилок).

Зв'яжіться з нами для отримання консультації та оцінки вашого проєкту. Замовте розробку токена — ми підготуємо рішення під ключ.