Розробка системи порівняння APY/APR протоколів
Користувач бачить на Aave 4.2% APY на USDC, на Compound 5.1% APR, на Morpho 5.8% c rewards токенами. Але цифри непорівнянні: Aave рахує compound interest, Compound — просту ставку, Morpho додає MORPHO винагороди. На одному проєкті для DeFi-агрегатора ми виявили, що постачальники даних видавали APY та APR перемішано, а rewards спотворювали картину до 7% різниці. Після нормалізації та впровадження risk-adjusted score клієнт збільшив TVL свого пулу на 35% за рахунок точного відображення дохідності. Система також заощадила команді по 15 годин ручного аналізу на тиждень — це дозволило швидше реагувати на зміни ринкових умов.
Ми розробили систему, яка нормалізує метрики до єдиного стандарту — Daily APR — та показує реальну дохідність з урахуванням усіх факторів. В основі лежать on-chain дані, Multicall3 батчинг та історична агрегація. На практиці різниця в представленні дохідності може вводити в оману навіть досвідчених LP. Коректна нормалізація — перший крок до об'єктивного порівняння пулів.
Проблема порівняння метрик
APR — проста ставка без реінвестування. APY — з урахуванням compound effect. Різниця при частому нарахуванні суттєва:
APY = (1 + APR/n)^n - 1 На Ethereum при APR = 10% та нарахуванні кожен блок (≈ 2190 разів/рік) APY ≈ 10.52%. Для коректного порівняння система нормалізує все в Daily APR — ділимо річну ставку на 365. Користувачу показуємо APY, всередині рахуємо в Daily APR.
Порівняння метрик для наочності:
| Параметр | APR | APY |
|---|---|---|
| Врахування реінвестування | Ні | Так |
| Типове використання | Кредитування | Депозити |
| Приклад (10% річних, денна капіталізація) | 10% | 10.52% |
Багато протоколів поверх базової ставки платять власні токени (COMP, AAVE, MORPHO). Ми показуємо base APY (без rewards) та total APY (з rewards) окремо. Для reward-токенів враховуємо поточну ціну через oracle (Chainlink) — волатильна, може впасти до моменту claim, а також vesting/lock (AAVE Safety Module вестирується 10 днів) та emission decay. Користувач сам вирішує, чи враховувати нестабільні rewards.
Отримання даних on-chain: кожен протокол надає дані по-своєму. Ми використовуємо Multicall3 для батчингу: 1000 окремих викликів упаковуються в одну транзакцію. Це в 100 разів ефективніше послідовних запитів і економить газ.
Приклад для Aave V3:
const calls = protocols.flatMap(protocol => assets.map(asset => ({ target: protocol.address, callData: protocol.interface.encodeFunctionData("getReserveData", [asset]) })) ); const results = await multicall.aggregate(calls); Для історичних даних використовуємо офіційні субграфи (The Graph) Aave, Compound. Для протоколів без субграфа — власний event indexer.
Архітектура системи
Шар збору даних
On-chain виклики дорогі (RPC requests). При 10 протоколах × 20 assets × 5 метрик = 1000 calls при кожному оновленні. Рішення: Multicall3 батчинг — всі calls в одну транзакцію. Що входить в нашу роботу:
- Розробка адаптерів для кожного протоколу (типові контракти + кастомні)
- Налаштування кешування: Redis (TTL 60 сек) для поточних ставок, PostgreSQL — щогодинні снепшоти
- Real-time оновлення через WebSocket (при наявності подій)
- Background job кожні 60 секунд fetches on-chain дані
Як ми гарантуємо точність метрик?
Ми перевіряємо формули за офіційною документацією протоколів — Aave, Compound. Кожен адаптер проходить unit-тести з використанням Tenderly fork. Результати звіряються з даними Etherscan та Dune Analytics.
Історична динаміка
Поточний APY — моментальний знімок. Для прийняття рішень потрібна історія: moving average (7d, 30d), волатильність (std dev APY), min/max за період. Volatile APY (змінюється в 5x діапазоні за місяць) — інший профіль ризику, ніж stable APY (±0.5%). Приклад розрахунку волатильності: за 30 днів APY коливалася від 3.2% до 7.8%. Стандартне відхилення — 1.4%. Це сигнал про нестабільну дохідність, часто через reward-емісію.
Ранжування та порівняння
Просто відсортувати за APY — недостатньо. Система пропонує фільтри:
- Тільки stable APY (волатильність < 0.5% за 30 днів)
- Тільки audited протоколи (перевірені аудити)
- Мінімальний TVL (виключаємо маленькі пули)
Користувач сам зважує пріоритети — єдиний score не нав'язується.
Які протоколи підтримуються за замовчуванням?
Підтримуємо основні ринки та пули:
| Протокол | Тип | Мережа | Активи |
|---|---|---|---|
| Aave V3 | Lending | Ethereum, Polygon, Arbitrum | USDC, USDT, WETH, WBTC |
| Compound V3 | Lending | Ethereum, Polygon | USDC, WETH |
| Morpho | Aggregator | Ethereum | USDC, WETH, DAI |
| Curve | AMM | Ethereum, Polygon | USDC, DAI, FRAX |
| Pendle | Yield | Ethereum, Arbitrum | USDC, wstETH |
| Uniswap V3 | AMM | Ethereum, Polygon, Arbitrum | WETH/USDC, WETH/DAI |
За запитом додаємо будь-який EVM-протокол з кастомним адаптером.
Як ми нормалізуємо APY покроково
- Отримуємо raw-дані з контракту протоколу через Multicall3 (одна батч-транзакція).
- Витягуємо базову ставку та параметри нагородження (reward per second, oracle price).
- Перераховуємо в єдиний формат: конвертуємо APR в APY з частотою капіталізації протоколу.
- Для reward-токенів обчислюємо тотальний APY з урахуванням поточної ціни та вестингу.
- Записуємо снепшот в історичну базу та оновлюємо Redis-кеш (TTL 60 сек).
Цей процес повторюється кожну хвилину автоматично.
Що входить в роботу
- Адаптери для кожного протоколу (типові + кастомні)
- REST API з документацією (OpenAPI)
- Історичний індекс (щогодинні снепшоти в PostgreSQL)
- UI-компоненти для Next.js (Recharts, TanStack Query)
- Юніт-тести та інтеграційні тести на Tenderly fork
- Інструкція з розгортання та експлуатації
- Підтримка протягом 30 днів після запуску
Технічний стек
- Backend: Node.js + TypeScript, Viem (on-chain), PostgreSQL, Redis, Bullmq
- Frontend: Next.js, TanStack Query, Recharts / Tremor
- Інфраструктура: Docker Compose, GitHub Actions, Tenderly для forking
Терміни: MVP з 3-5 протоколами, поточні rates — 3-5 днів. Повноцінна система з історією, фільтрами та візуалізацією — 2-3 тижні. Вартість розраховується індивідуально. Зв'яжіться з нами для оцінки вашого проекту. Замовте демо-версію, щоб побачити нормалізовані метрики ваших протоколів.
Наш досвід — 5+ років у Web3, 50+ інтеграцій DeFi-протоколів. Гарантуємо коректність розрахунків та відповідність on-chain даним.







