Lending: протокол EVAA
Лендинг-протоколы позволяют зарабатывать проценты на депозитах и занимать активы под залог — это один из столпов DeFi. EVAA — ведущий лендинг-протокол на TON, и понимание его архитектуры необходимо для интеграции кредитования в ваши приложения. Изучение EVAA раскрывает паттерны проектирования сложных DeFi-систем в асинхронной среде TON.
Lending (кредитование) — второй по значимости тип DeFi-протокола после DEX. На TON основным lending-протоколом является EVAA. Рассмотрим, как работает децентрализованное кредитование на шардированном блокчейне.
Концепция lending
Lending-протокол объединяет два типа пользователей:
| Роль | Действие | Мотивация |
|---|---|---|
| Supplier (поставщик) | Вносит активы в протокол | Получает проценты от заёмщиков |
| Borrower (заёмщик) | Берёт активы под залог | Получает ликвидность без продажи залога |
Supply: поставка активов
Когда пользователь вносит токены в EVAA:
- Пользователь отправляет Jetton (например, USDT) в EVAA Pool
- EVAA Pool принимает Jetton и обновляет баланс пользователя
- Пользователь получает aToken (receipt-токен) — Jetton, подтверждающий его долю в пуле
aToken — это процентный receipt: его стоимость растёт со временем по мере накопления процентов от заёмщиков.
Supply flow (асинхронный):
User -> Jetton Wallet USDT (User) -> transfer USDT
-> Jetton Wallet USDT (EVAA) -> internal_transfer
-> EVAA Pool -> обновление баланса
-> aUSDT Jetton Master -> mint aUSDT
-> aUSDT Jetton Wallet (User) -> User получает aUSDT
Borrow: заём под залог
Чтобы занять токены, пользователь должен сначала предоставить залог (collateral):
- Пользователь вносит залог (например, TON) в EVAA
- Протокол рассчитывает максимальную сумму займа на основе стоимости залога
- Пользователь запрашивает заём (например, USDT)
- EVAA отправляет Jetton заёмщику
Collateral Factor (коэффициент залога)
Не всю стоимость залога можно использовать для займа. Каждый актив имеет collateral factor — долю стоимости, доступную для заимствования:
Залог: 1,000 TON (допустим, цена TON = $2)
Стоимость залога: $2,000
Collateral factor TON: 75%
Доступно для займа: $2,000 * 75% = $1,500
Пользователь может занять до $1,500 в USDT
Процентные ставки: модель утилизации
Ставки в lending-протоколах динамические и зависят от utilization rate (коэффициента использования) пула:
Utilization = Общий долг / Общие резервы
Если в пуле 100,000 USDT и 65,000 заняты:
Utilization = 65,000 / 100,000 = 65%
Чем выше utilization, тем выше ставка заимствования:
Utilization Borrow Rate
0% ~1-2% (низкий спрос)
50% ~3-5% (умеренный спрос)
80% ~8-12% (высокий спрос)
95%+ ~25-50%+ (критический -- стимул вернуть долг)
Этот механизм балансирует спрос и предложение: высокие ставки привлекают новых поставщиков и побуждают заёмщиков возвращать долги.
Health Factor и ликвидация
Health Factor (коэффициент здоровья)
Health factor показывает, насколько залог покрывает долг:
Health Factor = (Стоимость залога * Collateral Factor) / Стоимость долга
HF > 1.0 -- позиция безопасна
HF = 1.0 -- на грани ликвидации
HF < 1.0 -- позиция ликвидируема
Процесс ликвидации
Когда health factor падает ниже 1.0 (стоимость залога упала или долг вырос из-за процентов):
- Ликвидатор (любой пользователь) видит позицию с HF < 1.0
- Ликвидатор погашает часть долга заёмщика (отправляет Jetton в протокол)
- Ликвидатор получает залог заёмщика с дисконтом (обычно 5—15%)
- Позиция заёмщика частично закрывается, health factor восстанавливается
Пример ликвидации:
Заёмщик: залог 1,000 TON ($2,000), долг $1,600 USDT
Цена TON падает до $1.5 -> залог стоит $1,500
Health Factor = ($1,500 * 0.75) / $1,600 = 0.70 < 1.0
Ликвидатор:
- Погашает $800 долга (50% от $1,600)
- Получает $800 / $1.5 * 1.05 = ~560 TON (залог + 5% дисконт)
- Прибыль ликвидатора: ~5% от суммы ликвидации
Риск ликвидации
Ликвидация происходит автоматически, когда health factor падает ниже порога. При высокой волатильности рынка это может произойти за минуты. Заёмщики должны следить за health factor и поддерживать его значительно выше 1.0 (рекомендуется 1.5+).
Особенности lending на TON
Асинхронная проверка залога
На Ethereum lending-протокол проверяет залог синхронно — в момент займа контракт мгновенно читает стоимость залога. На TON это невозможно:
- EVAA Pool запрашивает стоимость залога у Price Oracle (контракт с ценами)
- Oracle отвечает сообщением с текущей ценой
- EVAA Pool проверяет достаточность залога и выдаёт заём
Между запросом и ответом проходит время, поэтому протокол использует conservative pricing — цены берутся с запасом для защиты от манипуляций.
Шардированная модель EVAA
Aave/Compound vs EVAA
На Ethereum Aave — это один Pool контракт, который хранит все позиции всех пользователей. На TON EVAA использует шардированную модель: позиция каждого пользователя — отдельный контракт. Это следует той же логике, что Jetton Wallet — балансы распределены по шардчейнам для масштабируемости.
Ключевые выводы
- Supply — вносите активы и получаете процентный доход через aToken (Jetton receipt)
- Borrow — берёте заём под залог, ставка зависит от utilization
- Health factor — отношение стоимости залога к долгу; < 1.0 = ликвидация
- Ликвидация — любой может погасить чужой долг и получить залог с дисконтом
- На TON — проверка залога и оракулы работают асинхронно, позиции пользователей шардированы
Частые ошибки
- Не учитывают health factor при оценке позиции: если залог обесценится, позиция будет ликвидирована с штрафом.
- Забывают, что процентные ставки динамические и зависят от utilization rate: ставка может резко вырасти при высоком спросе на заимствования.
- Путают supply APY и borrow APY: первая показывает доходность вкладчика, вторая — стоимость кредита для заёмщика.
- Не обрабатывают сценарий ликвидации в своём коде: если ваш контракт взаимодействует с EVAA, он должен корректно реагировать на ликвидацию позиции.
Проверка знанийЧто такое health factor и что происходит, когда он падает ниже 1.0?
Check Your Understanding
Finished the lesson?
Mark it as complete to track your progress
Войдите чтобы оценить урок