Настройка аналитики блокчейн-проекта (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 создаёт тысячи пар), адаптер не может хардкодить адреса. Нужно получить список всех созданных контрактов из событий или через 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 дня.
Стоимость рассчитывается индивидуально.







