Перейти к содержанию
Learning Platform
Начальный
25 минут
DeFi AMM Lending TVL Composability

DeFi экосистема

Зачем это блокчейну?

В предыдущих модулях мы научились писать смарт-контракты на Solidity, работать с ERC-20 токенами и развертывать их на Ethereum. Но что делают самые важные контракты в экосистеме? Они создают параллельную финансовую систему — DeFi (Decentralized Finance).

В 2024 году в DeFi-протоколах заблокировано более $100 миллиардов. Биржи без посредников, кредиты без банков, стейблкоины без центральных эмитентов. Все это работает на смарт-контрактах, которые мы уже умеем писать.

В этом модуле мы разберем математику и механизмы, стоящие за каждым типом DeFi-протокола. Начнем с обзора экосистемы, а затем углубимся в формулы AMM, имплементацию Uniswap, механизмы кредитования и оракулы.

7 категорий DeFi-протоколов

DeFi экосистема состоит из семи основных категорий. Каждая решает конкретную финансовую задачу без традиционных посредников:

DeFi экосистема: 7 категорий протоколов
🔄
DEXes (AMM)
Обмен токенов через пулы ликвидности
UniswapCurveBalancer
🏦
Lending
Займы и кредитование без посредников
AaveCompoundSky (MakerDAO)
💲
Stablecoins
Токены с привязкой к доллару
USDTUSDCDAI/USDS
📊
Derivatives
Бессрочные фьючерсы и опционы
dYdXGMXHyperliquid
🔮
Oracles
Внешние данные на блокчейне
ChainlinkPythUMA
🔀
Aggregators
Лучшая цена с нескольких DEX
1inchParaswapCoW Swap
📈
Yield
Автоматическая оптимизация доходности
YearnConvexLido
Композируемость (DeFi Legos):
DEXesAggregators
DEXesLending
LendingYield
OraclesLending
OraclesDerivatives
Протоколы комбинируются как Lego: депозит в Aave дает aToken, который можно использовать как залог в MakerDAO, а полученный DAI -- инвестировать в Yearn для максимальной доходности.

1. DEXes (Decentralized Exchanges)

Обмен токенов через пулы ликвидности. Вместо ордер-бука (как на Binance) используют математические формулы — Automated Market Makers (AMM). Любой пользователь может стать провайдером ликвидности и получать комиссии.

Ключевые протоколы: Uniswap (xy=k), Curve (оптимизирован для стейблкоинов), Balancer (мульти-токенные пулы).

2. Lending (Кредитование)

Депозит токенов для получения процентов или использование залога для займа. Процентные ставки устанавливаются алгоритмически на основе спроса и предложения — никакой кредитный комитет не принимает решения.

Ключевые протоколы: Aave (flash loans, multi-chain), Compound (пионер алгоритмических ставок), Sky/MakerDAO (эмитент DAI).

3. Stablecoins (Стейблкоины)

Токены с привязкой к доллару. Три типа:

  • Фиатные: USDC (Circle), USDT (Tether) — обеспечены долларами на банковском счете
  • Крипто-обеспеченные: DAI/USDS (MakerDAO/Sky) — залог в ETH, WBTC, других токенах
  • Алгоритмические: привязка через механизмы смарт-контрактов (высокий риск)

4. Derivatives (Деривативы)

Торговля с кредитным плечом (до 50x) без центрального посредника. Бессрочные фьючерсы (perpetuals) — самый популярный инструмент: нет срока экспирации, funding rate привязывает цену к спотовой.

Ключевые протоколы: dYdX, GMX (Arbitrum), Hyperliquid.

5. Oracles (Оракулы)

Смарт-контракты не могут получить данные извне блокчейна. Оракулы доставляют цены активов, погоду, результаты событий. Без оракулов невозможны ликвидации в lending, расчет деривативов, привязка стейблкоинов.

Ключевые протоколы: Chainlink (крупнейшая сеть, тысячи узлов), Pyth (низкая латентность), UMA (оптимистичные оракулы).

6. Aggregators (Агрегаторы)

Разбивают крупные ордера по нескольким DEX для получения лучшей цены. Алгоритмы маршрутизации находят оптимальный путь обмена, минимизируя проскальзывание.

Ключевые протоколы: 1inch (крупнейший), Paraswap, CoW Swap (batch auctions).

7. Yield (Оптимизация доходности)

Автоматически перемещают капитал между протоколами для максимизации доходности. Yearn находит лучшие ставки. Lido предлагает ликвидный стейкинг ETH (stETH). Convex оптимизирует доходность на Curve.

Ключевые протоколы: Yearn, Convex, Lido (liquid staking).

TVL: метрика капитала в DeFi

Total Value Locked (TVL) — суммарная стоимость активов, заблокированных в смарт-контрактах протокола. Это основная метрика для оценки масштаба DeFi-протокола.

TVL: капитал в DeFi протоколах
Lido~$33B
Aave~$20B
EigenLayer~$15B
Sky (MakerDAO)~$8B
Uniswap~$5B
Compound~$3B
TVL данные приблизительные и меняются ежедневно. Источник: DeFiLlama

Что показывает TVL?

  • Доверие: Чем больше TVL, тем больше пользователей доверяют протоколу свои средства
  • Ликвидность: Высокий TVL = низкое проскальзывание при обмене
  • Зрелость: Протоколы с многолетним TVL прошли проверку временем

Ограничения TVL

  • Double-counting: Один и тот же актив может учитываться в нескольких протоколах (например, stETH из Lido депонирован в Aave)
  • Leverage: TVL может быть раздут заемным капиталом
  • Не учитывает доходность: Высокий TVL не означает высокую прибыльность для LP

Ключевые концепции DeFi

Permissionless (Без разрешений)

Любой человек с криптокошельком может взаимодействовать с DeFi-протоколом. Нет KYC, нет заявок, нет одобрений. Смарт-контракт обрабатывает транзакцию одинаково для всех:

// Никакой проверки личности -- только адрес и подпись
function swap(address tokenIn, uint amountIn, uint amountOutMin) external {
    // Любой msg.sender может вызвать
}

Non-custodial (Некастодиальность)

Пользователь контролирует свои средства. Средства хранятся в смарт-контракте, а не на балансе компании. Ключевое отличие от CEX:

  • CEX (Binance): Вы доверяете биржи хранить ваши монеты. “Not your keys, not your coins”
  • DeFi (Uniswap): Средства в аудированном смарт-контракте. Вы взаимодействуете напрямую со своим кошельком

Composable (Композируемость)

“DeFi Legos” — протоколы комбинируются друг с другом. Пример цепочки:

  1. Депозит ETH в Lido → получаете stETH
  2. Депозит stETH в Aave как залог → берете займ в DAI
  3. Депозит DAI в Yearn → получаете автоматически оптимизированный доход

Каждый шаг — взаимодействие с отдельным смарт-контрактом. Композируемость возможна благодаря стандартам (ERC-20) и открытому коду.

Transparent (Прозрачность)

Все транзакции на блокчейне. Каждый может:

  • Прочитать исходный код смарт-контракта
  • Проверить состояние пулов ликвидности
  • Увидеть все свопы, кредиты и ликвидации

Smart Contract Risk (Риск кода)

Код — это контрагент. В DeFi нет службы поддержки и кнопки “отменить”:

  • Баги = потеря средств (Harvest Finance — 34M,CreamFinance34M, Cream Finance -- 130M)
  • Аудит снижает, но не устраняет риск
  • Timelock и multisig ограничивают damage от компрометации

AMM vs Order Book

Два способа организовать обмен токенов. Традиционные биржи (CEX) используют ордер-бук. DeFi использует AMM:

AMM vs Order Book: сравнение моделей
Критерий
Order Book (CEX)
AMM (DEX)
Ликвидность
Market makers (профессиональные трейдеры)
Liquidity providers (любой пользователь)
Ценообразование
Bid/ask спред (заявки покупателей и продавцов)
Формула (xy = k определяет цену)
Скорость
Instant matching (микросекунды)
Block confirmation (12 сек Ethereum)
KYC
Обязателен (паспорт, адрес)
Не требуется (только кошелек)
Кастодиальность
Биржа хранит средства
Пользователь контролирует средства
Листинг
Биржа решает (заявка, аудит, листинг)
Permissionless (любой создает пул)
Проскальзывание
Низкое для ликвидных пар
Зависит от размера пула
Доход LP
N/A (только для трейдеров)
Комиссии с каждого свопа (0.3%)

Ключевой insight: AMM позволяет создать ликвидный рынок для ЛЮБОГО токена без маркет-мейкеров. На CEX для нового токена нужен листинг и маркет-мейкер. На Uniswap любой может создать пул за одну транзакцию.

Десятичные знаки токенов

Это критически важная деталь для DeFi-разработки. Разные токены используют разное количество десятичных знаков. Путаница приводит к катастрофическим ошибкам — отправка 1 USDC вместо 1,000,000 USDC или наоборот.

TokenDecimals1.0 в rawviem / ethers.js
ETH / WETH181000000000000000000parseEther("1")
DAI181000000000000000000parseUnits("1", 18)
USDC61000000parseUnits("1", 6)
USDT61000000parseUnits("1", 6)
WBTC8100000000parseUnits("1", 8)

Предупреждение: Смешивание decimals без конвертации вызывает катастрофические ошибки. Всегда проверяйте token.decimals() перед вычислениями. USDC имеет 6 decimals, а ETH — 18. Разница в 10^12 раз!

// ПРАВИЛЬНО: учитываем decimals каждого токена
import { parseUnits, formatUnits } from 'viem';

const usdcAmount = parseUnits("100", 6);    // 100_000_000n (100 USDC)
const ethAmount = parseUnits("0.05", 18);   // 50_000_000_000_000_000n (0.05 ETH)
const wbtcAmount = parseUnits("0.001", 8);  // 100_000n (0.001 WBTC)

// НЕПРАВИЛЬНО: использование parseEther для USDC
// const wrong = parseEther("100"); // Это 100 * 10^18 -- КАТАСТРОФА для USDC

Паттерн Approve + Interact

Для взаимодействия с любым DeFi-протоколом необходим двухшаговый паттерн (из ERC-20, урок ETH-08):

  1. Approve: Дать протоколу разрешение тратить ваши токены
  2. Interact: Вызвать функцию протокола (swap, deposit, borrow)
import { getContract, parseUnits } from 'viem';

// Шаг 1: Approve -- разрешить Uniswap Router тратить USDC
const usdc = getContract({ address: USDC_ADDRESS, abi: erc20Abi, client: walletClient });
await usdc.write.approve([UNISWAP_ROUTER, parseUnits("1000", 6)]);

// Шаг 2: Swap -- вызвать функцию обмена
const router = getContract({ address: UNISWAP_ROUTER, abi: routerAbi, client: walletClient });
await router.write.swapExactTokensForTokens([
  parseUnits("100", 6),  // amountIn: 100 USDC
  parseUnits("0.04", 18), // amountOutMin: минимум 0.04 ETH
  [USDC_ADDRESS, WETH_ADDRESS], // path
  myAddress,              // to
  BigInt(Math.floor(Date.now() / 1000) + 1800), // deadline: 30 минут
]);

Без approve протокол не сможет забрать ваши токены — это защитный механизм ERC-20. Каждый DeFi-протокол требует approve перед первым взаимодействием.

Структура модуля DeFi

Этот модуль состоит из следующих уроков:

#ТемаСодержание
1DeFi экосистемаКатегории, TVL, ключевые концепции (этот урок)
2AMM: xy = kФормула постоянного произведения, расчет свопов, комиссии
3Uniswap V2Имплементация, LP-токены, flash swaps, fork-тестирование
4Uniswap V3/V4Концентрированная ликвидность, hooks, singleton
5Impermanent LossМатематика IL, стратегии минимизации
6Lending: AaveМодель кредитования, процентные ставки, ликвидации
7Flash LoansАтомарные займы, арбитраж, fork-тестирование
8Chainlink OraclesPrice feeds, VRF, автоматизация
9Oracle DesignOracle problem, TWAP, манипуляции
10StablecoinsМеханизмы привязки, CDP, алгоритмические
11DerivativesPerpetuals, funding rate, синтетические активы
12TokenomicsGovernance, ve-модель, token design

Связь с предыдущими модулями

DeFi опирается на все, что мы изучили ранее:

  • ERC-20 (ETH-08): Все DeFi-протоколы работают с ERC-20 токенами. Approve/transferFrom — фундаментальный паттерн взаимодействия
  • Solidity (ETH-06/07): DeFi-контракты написаны на Solidity. Паттерны из ETH-07 (ReentrancyGuard, AccessControl) критичны для безопасности
  • Gas (ETH-05): DeFi-транзакции могут быть дорогими. Swap на Uniswap V3 стоит ~150,000 gas. Оптимизация газа — реальная экономия
  • EVM (ETH-04): Понимание storage layout помогает при fork-тестировании (slot manipulation)

Практика: DeFi Fork Lab

В этом модуле мы будем тестировать DeFi-протоколы на форке мейннета — копии реального состояния Ethereum с настоящими балансами, пулами и контрактами.

Настройка

  1. Получите бесплатный RPC-ключ на Alchemy или Infura
  2. Обновите .env в лабораторной:
MAINNET_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY_HERE
  1. Запустите форк-ноду:
# Docker Compose (Anvil fork)
docker compose --profile fork up -d

# Или через Hardhat (EDR fork)
npx hardhat test --network mainnetFork
  1. Проверьте работу форка:
cast chain-id --rpc-url http://localhost:8546
# Должен вернуть 1 (Ethereum mainnet)

Fork позволяет тестировать взаимодействие с реальными контрактами Uniswap, Aave, Chainlink без реальных средств. Мы будем активно использовать это в следующих уроках.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс