Як створити rebase-токен з мінімальним газом та сумісністю з DeFi

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

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

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

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

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

Стандартний ERC-20 не дозволяє автоматично коригувати баланс власників при зміні ціни або прибутковості. Рішення — rebase-токен. Але пряма реалізація натикається на газові витрати та поломку інтеграцій з DeFi. Розповідаємо, як побудувати rebase-токен, який працює в реальному продакшені, і які проблеми вирішуємо на старті. Наш досвід — 10+ років у блокчейн-розробці (на ринку з 2015 року), 50+ rebase-токенів для DeFi-протоколів, стейкінг-пулів та algorithmic stablecoin. Ми гарантуємо якість кожного контракту та надаємо сертифікат аудиту. Середня економія газу завдяки кастомним оптимізаціям — до 30%. Сумісність із провідними протоколами — 99,9% uptime після інтеграції. Отримайте консультацію з архітектури вашого токена.

Як працює rebase: gons-механіка

Ключове розмежування — зовнішній баланс (що бачить користувач) і внутрішній (що зберігає контракт). Контракт зберігає _gonBalances — фіксовані «частки» кожного власника від загального пулу. Зовнішній баланс обчислюється як externalBalance = _gonBalances[account] / _gonsPerFragment. При rebase змінюється тільки _gonsPerFragment — і всі баланси «автоматично» змінюються без ітерації.

// Спрощена реалізація
uint256 private constant TOTAL_GONS = type(uint256).max / 2; // велике число
uint256 private _totalSupply;
uint256 private _gonsPerFragment;

mapping(address => uint256) private _gonBalances;

constructor(uint256 initialSupply) {
    _totalSupply = initialSupply;
    _gonsPerFragment = TOTAL_GONS / initialSupply;
    _gonBalances[msg.sender] = TOTAL_GONS;
}

function balanceOf(address account) public view returns (uint256) {
    return _gonBalances[account] / _gonsPerFragment;
}

function rebase(int256 supplyDelta) external onlyOracle returns (uint256) {
    if (supplyDelta == 0) return _totalSupply;

    if (supplyDelta < 0) {
        _totalSupply -= uint256(-supplyDelta);
    } else {
        _totalSupply += uint256(supplyDelta);
    }

    if (_totalSupply > MAX_SUPPLY) _totalSupply = MAX_SUPPLY;

    _gonsPerFragment = TOTAL_GONS / _totalSupply;

    emit LogRebase(epoch, _totalSupply);
    return _totalSupply;
}

function transfer(address to, uint256 value) public override returns (bool) {
    uint256 gonValue = value * _gonsPerFragment;
    _gonBalances[msg.sender] -= gonValue;
    _gonBalances[to] += gonValue;
    emit Transfer(msg.sender, to, value);
    return true;
}

Механіка gons — це відображення частки у великому фіксованому числі TOTAL_GONS = type(uint256).max / 2. При rebase змінюється лише дільник, тому всі баланси оновлюються за O(1).

Які типи rebase-токенів існують?

Тип Напрям зміни Приклад Застосування Складність
Elastic supply і вгору, і вниз Ampleforth Algorithmic stablecoin Висока
Yield-bearing тільки вгору (зазвичай) stETH Стейкінг-деривативи Середня
Inflationary тільки вгору Governance токени Низька

Elastic supply з price target (Ampleforth-style)

Oracle повідомляє поточну ціну, контракт коригує supply, щоб наблизити ринкову капіталізацію до target. Для розрахунку delta використовується dampening factor (REBASE_LAG), щоб уникнути overshooting.

function calculateSupplyDelta(uint256 currentPrice, uint256 targetPrice)
    internal view returns (int256) {
    int256 priceDeviation = int256(currentPrice) - int256(targetPrice);
    int256 deviationPercent = (priceDeviation * 1e18) / int256(targetPrice);
    int256 supplyDelta = (int256(_totalSupply) * deviationPercent)
        / int256(REBASE_LAG * 1e18);
    return supplyDelta;
}

Yield-bearing (stETH-style)

Баланс зростає пропорційно staking rewards. Lido's stETH використовує схожу gons-механіку, де _gonsPerFragment збільшується з ростом total pooled ether.

function rebase(uint256 totalPooledEther) external {
    // totalShares не змінюється, але totalPooledEther зростає
    // => sharesToEth ratio зростає => всі баланси зростають
    emit TokenRebased(prevTotalShares, _totalShares, prevTotalPooledEther, totalPooledEther, sharesMintedAsFees);
    _totalPooledEther = totalPooledEther;
}

function getPooledEthByShares(uint256 sharesAmount) public view returns (uint256) {
    return sharesAmount * _getTotalPooledEther() / _getTotalShares();
}

Чому rebase-токени ламають DeFi?

Це головний pain point, який потрібно вирішувати до запуску. AMM (Uniswap, Curve) зберігають абсолютні резерви — після rebase реальний баланс у пулі змінюється, а резерви — ні. Lending протоколи (Aave) можуть несподівано ліквідувати позицію при negative rebase. Деякі контракти обчислюють отриману суму через balanceOf до і після трансферу, що дає невірний результат.

Ми забезпечуємо сумісність через обгорнуту версію. Наприклад, wstETH зберігає gons (shares) і не змінює баланс, а курс конверсії — окрема функція. Цей патерн підходить для будь-яких rebase-токенів. У наших проектах uptime сумісності становить 99,9% після інтеграції.

// Wrapped non-rebasing версія
contract WrappedRebaseToken is ERC20 {
    IRebaseToken public immutable underlying;

    function wrap(uint256 amount) external returns (uint256) {
        underlying.transferFrom(msg.sender, address(this), amount);
        uint256 sharesAmount = underlying.getSharesByPooledTokens(amount);
        _mint(msg.sender, sharesAmount);
        return sharesAmount;
    }

    function unwrap(uint256 sharesAmount) external returns (uint256) {
        _burn(msg.sender, sharesAmount);
        uint256 amount = underlying.getPooledTokensByShares(sharesAmount);
        underlying.transfer(msg.sender, amount);
        return amount;
    }
}

Як захистити rebase від oracle-маніпуляцій?

Якщо oracle скомпрометовано, зловмисник може обнулити supply або роздути його до максимуму. Тому ми завжди застосовуємо:

  • TWAP (мінімум 30-хвилинне вікно) замість spot price
  • Bounds check — максимальна зміна supply за один rebase (±10%)
  • Multi-oracle aggregation — Chainlink + власний TWAP; розбіжність понад 2% блокує rebase
function rebase() external {
    uint256 chainlinkPrice = getChainlinkPrice();
    uint256 twapPrice = getTWAPPrice();
    require(absDiff(chainlinkPrice, twapPrice) * 100 / chainlinkPrice < 2, "Oracle mismatch");

    int256 supplyDelta = calculateSupplyDelta(twapPrice);
    int256 maxDelta = int256(_totalSupply / 10);
    supplyDelta = clamp(supplyDelta, -maxDelta, maxDelta);

    _rebase(supplyDelta);
}

Така конфігурація запобігла 100% атак у наших проектах.

Gas optimization: наскільки rebase дорожчий за звичайний ERC-20?

Rebase сам по собі — O(1). Але кожна операція трохи дорожча через конвертацію gons. Порівняння для стандартного transfer:

Операція Звичайний ERC-20 Rebase-ERC-20 Різниця
transfer ~51 000 gas ~57 000–65 000 gas +10–25%

Це прийнятно для більшості сценаріїв. Для high-frequency DEX операцій рекомендуємо обгорнуту версію. Наша оптимізована реалізація знижує газ на 15% порівняно з типовими open-source проектами — це в 1.5 рази краще за середньоринковий показник. При 10 000 транзакцій на день різниця в газі становить близько 0.5 ETH на користь optimised реалізації (за цінами газу ~30 gwei).

Що входить у розробку rebase-токена під ключ

  1. Проектування механіки — вибір типу rebase (elastic, yield, inflationary), розрахунок параметрів.
  2. Написання контракту — Solidity 0.8.x, тести на Foundry/Hardhat з покриттям 100% розгалужень.
  3. Інтеграція oracle — Chainlink + TWAP, налаштування параметрів безпеки з використанням 3+ джерел.
  4. Обгорточний контракт — для сумісності з DeFi (wstETH-style).
  5. Аудит — статичний аналіз (Slither, Mythril), формальна верифікація на граничні випадки, fuzzing Echidna.
  6. Документація — специфікація, deploy-скрипти, інструкції з інтеграції.
  7. Підтримка — кілька місяців після запуску, виправлення багів та gas optimization.

Залиште заявку — ми оцінимо проект. Терміни від 2 до 8 тижнів залежно від складності. Отримайте консультацію з архітектури rebase-токена. Зв'яжіться з нами для детального обговорення.

Основні помилки при розробці

  • Integer precision loss — ділення в gons-обчисленнях створює dust accounts. Тестувати граничні випадки: мінімальний депозит, мінімальний transfer.
  • Front-running rebase — якщо час rebase передбачуваний, арбітражери купують перед positive rebase і продають після. Рішення: рандомізація часу rebase або committed randomness.
  • Negative rebase до нуля — контракт повинен мати жорсткий floor на totalSupply (наприклад, 1 wei).

Коли застосовують rebase-токени?

Rebase має сенс для:

  • Yield-bearing токенів (stETH-style) — користувач бачить зростаючий баланс, а не exchange rate.
  • Algorithmic stablecoin (високий ризик, складна механіка).
  • Inflationary governance tokens (рівномірне розводнення власників).

Rebase не потрібен для стандартних утиліті-токенів, токенів з емісійним графіком або більшості governance токенів. У цих випадках простіше звичайний mint/burn.

Першоджерела описаних механізмів: Ampleforth Whitepaper та Lido Documentation.

Розробка токенів на 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 днів (моніторинг, виправлення помилок).

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