Настройка аналітики блокчейн-проекту (DefiLlama)
DefiLlama — основний агрегатор TVL (Total Value Locked) у DeFi. Протокол без листингу на DefiLlama фактично невидимий для інституціональних інвесторів та аналітиків, які використовують платформу як primary source даних. Потрапити туди — не маркетинг, а технічна задача: написати адаптер на TypeScript, що уміє розраховувати TVL вашого протоколу у будь-який історичний момент.
Як влаштовані адаптери DefiLlama
Репозиторій DefiLlama/DefiLlama-Adapters приймає pull requests. Кожен адаптер — TypeScript-модуль, який експортує функцію tvl(), що приймає параметри ланцюга та блока, та повертає об'єкт з токенами та їхніми кількостями.
// Упрощена структура адаптера
async function tvl(api: ChainApi) {
// Отримати балансы контрактів
const balance = await api.call({
abi: 'erc20:balanceOf',
target: tokenAddress,
params: [protocolVaultAddress],
})
api.add(tokenAddress, balance)
}
module.exports = {
ethereum: { tvl },
arbitrum: { tvl },
}
DefiLlama періодично викликає цю функцію, підставляючи номер блока — адаптер повинен коректно працювати для будь-якого історичного блока, не тільки поточного.
Типові складності при написанні адаптера
Динамічні адреси контрактів
Якщо протокол використовує factory-паттерн (як Uniswap: один factory створює тисячі пар), адаптер не може hardcodити адреси. Потрібно отримати список всіх створених контрактів з подій або через getAllPairs() у factory, потім агрегувати TVL по кожному.
const pairsCount = await api.call({ abi: 'uint256:allPairsLength', target: factory })
const pairs = await api.multiCall({
abi: 'function allPairs(uint256) returns (address)',
target: factory,
calls: Array.from({ length: Number(pairsCount) }, (_, i) => ({ params: [i] })),
})
api.multiCall батчить вызови через Multicall3 — сотні контрактів за один RPC-запит. Без батчингу factory з 10,000 пар нереально проіндексувати.
Подвійний облік TVL
Якщо протокол використовує Aave або Compound під капотом — токени у цих протоколах вже враховані у їхньому TVL. Додати їх ж у свій адаптер — подвійний облік, який DefiLlama помічає як помилку та знижує. Потрібно або рахувати тільки нативні позиції, або явно вказати doublecounted: true у конфігу.
Верифікація даних
Після мерджу PR DefiLlama може займати кілька днів на перевірку коректності даних. Алерти виникають якщо TVL стрибає на ±50% між блоками без пояснення — значить адаптер некоректно обробляє якийсь edge case (наприклад, балансы до/після ініціалізації пулу).
Метрики крім TVL
Паралельно з листингом на DefiLlama настроюємо субграф на The Graph для детальнішої аналітики: обсяг торгів, кількість унікальних користувачів, історія транзакцій. Субграф — основа для власного дашборду протоколу та для сторонніх аналітичних платформ (Dune Analytics працює окремо, через прямі запити до ноди).
Для Dune — написання SQL-запитів по decoded даним транзакцій. DefiLlama та Dune доповнюють один одного: перший — для агрегованого TVL, другий — для детального on-chain аналізу.
Орієнтири за часом
Написання та мердж адаптера для однієї мережі — 1-2 дні технічної роботи плюс 2-7 днів на ревью від DefiLlama. Мультичейн адаптер з factory-поддержкою — 2-3 дні розробки. Настройка субграфу паралельно — додає 2-4 дні.
Вартість розраховується індивідуально.







