Проектування механізмів спалювання токенів

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

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

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

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

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

Проектування механізму спалювання токенів

Спалювання токенів — це не самостійна мета, а інструмент управління пропозицією. Проблема більшості проектів: burn механізм додається як маркетинговий хід без зв'язку з економічною моделлю. Токени спалюються, пропозиція падає, ціна... не обов'язково зростає, якщо попит не зростає разом з нею.

Перед реалізацією потрібна відповідь на запитання: яку поведінку повинна стимулювати спалювання? Спалювання комісій генерує дефляцію при використанні протоколу (BNB, ETH після EIP-1559). Buyback-and-burn пов'язує дефляцію з доходом протоколу. Burn-to-use потребує знищення токенів для доступу до функціоналу. Це різні механізми з різними економічними властивостями.

EIP-1559: Канонічний приклад fee burn

Після London hard fork (2021) Ethereum спалює base fee кожного блоку. Механізм елегантний: користувачі платять base_fee (динамічна, залежить від навантаження мережі) + priority_fee (майнерам/валідаторам). Base fee спалюється — навічно виходить з обігу. Priority fee йде валідаторам.

ETH грошово-кредитна політика після EIP-1559:
Issuance (staking rewards) - Burned (base fees) = Чистісна зміна в пропозиції

При високому навантаженні мережі: burn > issuance → дефляція
При низькому навантаженні: issuance > burn → інфляція
Нейтральна точка: ~15M gas/block utilization

Це правильна конструкція: burn прямо пов'язаний з корисністю токена (газ для виконання транзакцій). Більше активності → більше спалювання.

Реалізація механізмів спалювання

Базовий burn через ERC-20

// OpenZeppelin ERC20Burnable
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";

contract MyToken is ERC20Burnable {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1_000_000 * 10**18);
    }
    
    // burn() і burnFrom() успадковані з ERC20Burnable
    // burn(): власник спалює свої токени
    // burnFrom(): спалює з дозволом (для протокольного використання)
}

_burn в ERC-20: зменшує balanceOf[account] та totalSupply. Токени відправляються на address(0) — null адреса. Це домовленість, не криптографічне знищення, але еквівалентно: ніхто не володіє ключами до address(0).

Fee burn у протоколі

contract Protocol {
    IERC20 public token;
    uint256 public constant FEE_BPS = 50; // 0.5%
    uint256 public constant BURN_SHARE = 50; // 50% комісії спалюється
    
    function executeAction(uint256 amount) external {
        uint256 fee = (amount * FEE_BPS) / 10000;
        uint256 burnAmount = (fee * BURN_SHARE) / 100;
        uint256 treasuryAmount = fee - burnAmount;
        
        // Передача від користувача
        token.transferFrom(msg.sender, address(this), amount);
        
        // Спалювання частини комісії
        ERC20Burnable(address(token)).burn(burnAmount);
        
        // Залишок в казну
        token.transfer(treasury, treasuryAmount);
        
        // Логіка дії з (amount - fee)
        _executeCore(amount - fee);
    }
}

Дизайнерське рішення: який відсоток комісій спалювати vs відправляти в казну. 100% burn максимально дефляційний, але позбавляє протокол доходів. BNB Auto-Burn спалює 100% комісій BNB Chain щоквартально через buyback.

Buyback-and-Burn

Протокол накопичує дохід (USDC/ETH), періодично купує власний токен на ринку і спалює його.

contract BuybackBurner {
    IUniswapV2Router02 public router;
    address public token;
    address public revenueToken; // USDC або ETH
    
    address[] private path;
    
    constructor(address _router, address _token, address _revenueToken) {
        router = IUniswapV2Router02(_router);
        token = _token;
        revenueToken = _revenueToken;
        path = [_revenueToken, _token];
    }
    
    function executeBuyback(uint256 revenueAmount, uint256 minTokenOut) external onlyAdmin {
        IERC20(revenueToken).approve(address(router), revenueAmount);
        
        uint256[] memory amounts = router.swapExactTokensForTokens(
            revenueAmount,
            minTokenOut,      // захист від slippage
            path,
            address(this),
            block.timestamp + 300
        );
        
        uint256 tokensBought = amounts[amounts.length - 1];
        ERC20Burnable(token).burn(tokensBought);
        
        emit BuybackExecuted(revenueAmount, tokensBought);
    }
}

Slippage та MEV. Великий buyback видно в mempool — front-runners купують перед вами, ви платите дорожче, вони продають. Рішення: використовувати DEX aggregator (1inch), приватний mempool (Flashbots Protect), розбивати buyback на дрібні частини через TWAP.

Дефляційний transfer tax

Кожен transfer спалює X% — популяризовано мемкоїнами. Технічно:

function _transfer(address from, address to, uint256 amount) internal override {
    uint256 burnAmount = (amount * burnRate) / 10000; // burnRate у basis points
    uint256 transferAmount = amount - burnAmount;
    
    super._transfer(from, address(0), burnAmount);   // burn
    super._transfer(from, to, transferAmount);       // реальний transfer
    
    totalSupply -= burnAmount; // або через _burn для коректності
}

Проблема transfer tax: несумісна з більшістю DeFi протоколів. Uniswap V2 не підтримує fee-on-transfer токени коректно без спеціальних параметрів. Uniswap V3 не підтримує взагалі. Aave, Compound — не приймають fee-on-transfer як забезпечення. Це фундаментальне обмеження: transfer tax ізолює токен від DeFi екосистеми.

Burn schedule: Дискретний vs безперервний

Дискретний burn (квартальний buyback, epoch-based burn): передбачуваний, створює очікувані подій на ринку. Ризик: front-running перед відомими датами.

Безперервний burn (fee burn при кожній транзакції): більш передбачуваний supply deflation, без тимчасових аномалій. Але потребує постійної активності протоколу.

Програмований halving burn: burn rate знижується зі часом по графіку. Створює спадну дефляцію.

// Динамічний burn rate на основі часу
function currentBurnRate() public view returns (uint256) {
    uint256 elapsed = block.timestamp - deployTimestamp;
    uint256 periods = elapsed / PERIOD_DURATION; // напр., квартал
    
    // Початковий rate 1%, знижується на 10% кожен період
    // Після 10 періодів стабілізується на мінімумі
    uint256 rate = INITIAL_RATE;
    for (uint256 i = 0; i < periods && i < 10; i++) {
        rate = (rate * 90) / 100; // -10% кожен період
    }
    return rate > MIN_RATE ? rate : MIN_RATE;
}

Економічне моделювання

Перед впровадженням burn механізму потрібна кількісна модель. Мінімальні параметри:

Параметр Опис
Annual burn rate % total supply спалюється в рік при поточній активності
Break-even activity Рівень активності при якому burn = emission
Supply у горизонті 5 років При поточних параметрах
Sensitivity Як змінюється burn при 2x/10x зростанні обсягу

Інструменти: TokenTerminal, Dune Analytics для моделювання на історичних даних подібних протоколів. Spreadsheet модель з Monte Carlo для чутливості.

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

Економічний дизайн (1-2 тижні). Визначити тип механізму під конкретну модель протоколу. Побудувати кількісну модель динаміки пропозиції.

Розробка (1-3 тижні). Burn механізм у токен контракті або окремий Burner контракт. Тести на edge cases: burn 0 amount, burn більше balance, reentrancy у fee collection.

Аудит-фокус. Перевірити: немає способу через burn маніпулювати ціною оракула (якщо totalSupply використовується в розрахунках), коректність permission на вызов burn, захист buyback від sandwich атак.