TVL — ключевая метрика для любого DeFi-протокола. По данным DefiLlama, проекты без листинга теряют до 70% видимости для институциональных инвесторов. Причина не в сложности, а в типичных ошибках адаптера: неправильный учёт factory-пулов, doublecount, неверная обработка historical blocks. Мы разберём каждую проблему и покажем, как их избежать.
Мы, как блокчейн-инженеры с опытом листинга десятков протоколов, знаем эти проблемы изнутри. Правильный TypeScript-адаптер настраивается за 1-2 дня, но без опыта вы рискуете потратить недели на отладку. Наш подход — модульные тесты на 100+ блоках, использование Multicall3 для батчинга запросов и формальная верификация через Slither. Самостоятельная разработка занимает в 2-3 раза больше времени, чем заказ у нас, а экономия бюджета достигает 30%.
Как устроен адаптер DefiLlama
Каждый протокол в DefiLlama представлен модулем из репозитория DefiLlama/DefiLlama-Adapters. Этот модуль экспортирует функцию tvl(), которая по запросу платформы с параметрами цепочки и блока возвращает текущие балансы в виде {token_address: amount}. DefiLlama периодически дёргает эту функцию для исторических блоков — критично, чтобы адаптер работал корректно не только на свежих, но и на старых данных.
Структура адаптера
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 }, } Динамические адреса контрактов
Factory-паттерн (как в Uniswap: один factory создаёт тысячи пулов) делает хардкод адресов невозможным. Наш опыт показывает, что без использования api.multiCall индексация 10 000 пар займёт часы и десятки тысяч RPC-запросов. Используем Multicall3 для батчинга — сотня вызовов за один запрос.
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] })), }) Как избежать двойного учёта TVL?
Если ваш протокол задействует Aave или Compound, их токены уже учтены в TVL этих платформ. Добавление тех же активов в адаптер — doublecount, который DefiLlama понижает. Выход — считаем только нативные позиции или явно ставим doublecounted: true в конфиге.
Пример edge case
Пул на Curve в Arbitrum при первом добавлении ликвидности отдаёт нулевой баланс для LP-токенов. Адаптер должен проверять, что адрес не равен `0x000...000`, иначе TVL упадёт на 100%.Верификация и ошибки
После отправки PR DefiLlama проверяет данные. Алерты при скачках TVL ±50% между соседними блоками — признак edge case (балансы до инициализации пула). На этапе тестов запускаем адаптер локально через npx defillama test adapter.js, прогоняем на 50 случайных блоках. Если ошибка не воспроизводится — симулируем через Tenderly.
Какие метрики критичны для DeFi-протокола?
Листинг на DefiLlama — это первый шаг. Параллельно настраиваем субграф на The Graph для отслеживания объёмов торгов, числа уникальных пользователей и истории транзакций. Субграф — фундамент вашего дашборда. Для детального on-chain анализа подключаем Dune с SQL-запросами по decoded данным — DefiLlama и Dune работают в связке.
| Метрика | Источник данных |
|---|---|
| TVL (исторический) | DefiLlama адаптер |
| Объём торгов | Субграф The Graph |
| Активные пользователи | Субграф + Dune |
| Транзакции | Dune (SQL) |
| Инструмент | Частота обновления | Тип данных | Сложность настройки |
|---|---|---|---|
| DefiLlama | Каждый блок | TVL, supply | Низкая (адаптер) |
| The Graph | Реальное время | События контрактов | Средняя (субграф) |
| Dune | Каждый блок (decoded) | Любые SQL | Высокая (SQL-запросы) |
Почему выбирают нас?
Наша команда выполнила листинг для 12+ DeFi-протоколов на Ethereum, Arbitrum, Polygon и BNB Chain. Среднее время от запроса до отображения на DefiLlama — 5 рабочих дней. Мы гарантируем корректность исторических данных и прозрачность метрик. Используем формальную верификацию через Slither и Echidna для контрактов — это снижает риск реджекта PR на 80%.
Что входит в нашу работу
- Разработка и тестирование адаптера TypeScript под все сети вашего протокола.
- Исправление edge case (factory, doublecount, reinitialization).
- Отправка PR и прохождение ревью в DefiLlama.
- Настройка субграфа и развёртывание на hosted service.
- Подготовка SQL-запросов для Dune Analytics.
- Документация по поддержке и обновлению адаптера.
Как мы работаем
- Анализ архитектуры протокола: контракты, сети, factory.
- Написание адаптера с модульными тестами.
- Локальный прогон на исторических данных (минимум 100 блоков).
- Отправка PR и устранение замечаний DefiLlama.
- Параллельно развёртывание субграфа.
- Передача готовой инфраструктуры: доступы, документация, обучение команды.
Сроки и стоимость
- Односетевой адаптер: 1-2 дня разработки + 2-7 дней ревью.
- Мультичейн с factory: 2-3 дня.
- Субграф дополнительно: 2-4 дня.
Стоимость рассчитывается индивидуально. Получите консультацию: напишите нам, и мы оценим ваш проект за 24 часа. Мы также предлагаем экспресс-аудит текущего адаптера с выявлением ошибок за один рабочий день.







