Розробка системи зважування активів в індексі

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

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

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

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

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

Розробка системи взвешування активів в індексі

Крипто-індекс без продуманої методології взвешування — це не індекс, а довільна кошик токенів. TokenSets, Index Coop, Alongside — у кожного протоколу своя математика. Вибір методології безпосередньо впливає на дохідність, концентрацію ризику та ребалансувальні витрати. Неправильний вибір коштує дорого: ETH домінує в market cap індексі з 60–70% ваги, що робить індекс майже еквівалентним прямому холдингу ETH.

Методології взвешування: порівняння на практиці

Market Cap Weighting (MCW)

Класика: вага активу пропорційна його ринковій капіталізації. BTC + ETH = 70–80% у будь-якому MCW індексі. Наслідок — низька диверсифікація, експозиція на mega-cap за рахунок small/mid-cap.

Реалізація на Solidity: в кожному циклі ребалансування запитуємо ціни через Chainlink для кожного активу, множимо на circulating supply (зберігається off-chain та передається через оракул), розраховуємо ваги, виконуємо свопи для вирівнювання.

Проблема: circulating supply неможливо надійно отримати on-chain. Більшість MCW індексів зберігають дані про пропозицію в оновлюваному маппінгу та довіряють мультисигу оновлення. Це вектор маніпуляції.

Square Root Market Cap (SQRT MCW)

Застосовуємо корінь квадратний до market cap перед нормалізацією. Вага = sqrt(mcap_i) / sum(sqrt(mcap_j)). ETH у тому ж складі падає з 65% на ~40%. Small-cap отримує помітну вагу. Index Coop використовує варіацію цього підходу в DPI (DeFi Pulse Index).

Математика проста, реалізація on-chain sqrt — немає стандартної функції у Solidity, використовуємо метод Babylonian або FixedPointMathLib з Solmate:

function sqrt(uint256 x) internal pure returns (uint256) {
    if (x == 0) return 0;
    uint256 z = (x + 1) / 2;
    uint256 y = x;
    while (z < y) { y = z; z = (x / z + z) / 2; }
    return y;
}

Equal Weight (EW)

Всі активи мають однакову вагу. Максимальна диверсифікація, максимальні ребалансувальні витрати: при 20 активах кожен рух ціни створює дрейф ваги. EW індекс з щоденним ребалансуванням на Ethereum mainnet — гарантований збиток на газ. Реалістично для L2 (Arbitrum, Base) з газом у сотих частках цента.

Volatility-Adjusted Weighting

Вага обернено пропорційна волатильності активу: менш нестійкий актив отримує більшу вагу. Мета — мінімізація загальної волатильності портфеля (підхід мінімальної дисперсії).

Розрахунок on-chain: потрібні історичні ціни для обчислення реалізованої волатильності. Або історичні дані Chainlink (дорого), або кастомний оракул цін з rolling window сховищем. На 20 активах з 30-денним вікном — зберігання 600 ціновим точок. Оновлення кожні 24 години — помірне навантаження.

Методологія Диверсифікація Газ ребалансу Складність оракула
Market Cap Низька Низький Висока (пропозиція)
SQRT Market Cap Середня Низький Висока (пропозиція)
Equal Weight Висока Високий Тільки ціни
Volatility-Adj Висока Середній Ціни + історія
Fundamental Середня Низький TVL/Volume дані

On-chain реалізація розрахунку ваги

Fixed-point арифметика для точності

Всі розрахунки ваг у Solidity в integer з 18-знаковою точністю (WAD = 1e18). Приклад нормалізації ваг:

// rawWeights[i] — ненормалізовані ваги (наприклад sqrt від market cap)
uint256 totalWeight = 0;
for (uint i = 0; i < n; i++) {
    totalWeight += rawWeights[i];
}
// normalizedWeights[i] в WAD (сума = 1e18)
for (uint i = 0; i < n; i++) {
    normalizedWeights[i] = rawWeights[i] * 1e18 / totalWeight;
}

Аудит: перевірити переповнення при великих rawWeights, перевірити що sum(normalizedWeights) == 1e18 ± 1 (помилка округлення).

Тригер ребалансування

Два підходи: часовий (кожні N блоків) та дрейф-базований (коли будь-який актив відхиляється від цільового ваги більше ніж на поріг, наприклад 5%).

Дрейф-базований ефективніший по газу: при стабільному ринку ребалансування рідкісні. Реалізація через Chainlink Automation: checkUpkeep повертає true якщо abs(currentWeight - targetWeight) > threshold для хоча б одного активу.

Поріг = 5% означає: при 20 активах з EW 5% target, актив з вагою 5.25% не тригерить ребаланс. Тільки при 5.26% — ребаланс. Це скорочує кількість ребалансувань в 3–5 разів порівняно з щоденним.

Інтеграція свопу при ребалансуванні

При ребалансуванні контракт продає overweight активи та купує underweight. Оптимальний маршрут — через DEX-агрегатор (1inch, Paraswap API) або прямо через Uniswap v3 Universal Router. Для індексу важлива атомарна ребалансування: або всі свопи вдалися, або ні. Якщо ребалансування ревертується в середині — індекс застрягає в незбалансованому стані.

Рішення: batch swap в одній транзакції через multicall або кастомний rebalancer контракт з откатом через try/catch.

Процес та таймлайн

Дизайн методології (1 день): вибір підходу до взвешування, джерела даних, тригер ребалансування.

Розробка контракту (2–3 дні): WeightCalculator з обраною методологією, логіка ребалансування, інтеграція з оракулом.

Оракул та off-chain дані (1 день): якщо потрібні дані про пропозицію або історичні ціни — off-chain сервіс оновлення.

Тестування (1 день): unit-тесты розрахунків ваг з відомими значеннями, fork-тесты ребалансування.

Всього: 3–5 днів для реалізації з однією методологією. Мультиметодологічні системи з governance-перемиканням — 1–2 тижні. Вартість розраховується індивідуально.