ERC-4626
ERC-4626 — это стандарт Ethereum Request for Comments (ERC), определяющий единый интерфейс для токенизированных хранилищ (vaults), предназначенных для размещения средств в протоколах децентрализованных финансов (DeFi). Стандарт был предложен в 2021 году разработчиками Джоуи Санторо (Fei Protocol), Аттилой Салаи (Yield) и другими, и получил статус финального (Final) в декабре 2022 года. ERC-4626 стандартизирует взаимодействие с хранилищами, которые принимают базовый актив (например, DAI, USDC, ETH) и выпускают взамен токены долей (shares), представляющие долю в пуле ликвидности или доходной стратегии.
История
До появления ERC-4626 каждый DeFi-протокол, предлагающий доходные хранилища (например, Yearn Finance, Curve, Convex), реализовывал собственный интерфейс для депозита, вывода средств и расчёта долей. Это создавало фрагментацию: разработчики интеграций (агрегаторы доходности, кошельки, роботы-советники) вынуждены были писать отдельные адаптеры для каждого протокола. ERC-4626 был разработан для устранения этой проблемы путём введения единого API, аналогичного тому, как ERC-20 стандартизировал интерфейс для токенов.
Стандарт был впервые предложен в Ethereum Improvement Proposal (EIP) 4626 в ноябре 2021 года. После обсуждений и доработок он был принят сообществом и включён в реестр ERC. На момент 2024 года ERC-4626 поддерживается десятками протоколов, включая Yearn Finance, Balancer, Aave, Morpho, и используется в большинстве новых доходных хранилищ.
Структура и функции
ERC-4626 расширяет интерфейс ERC-20, добавляя специфические функции для работы с хранилищем. Токен хранилища сам является ERC-20, что позволяет его передавать, обменивать и использовать в других протоколах.
Основные функции
Стандарт определяет несколько обязательных и опциональных функций:
asset()— возвращает адрес базового актива, который принимает хранилище.totalAssets()— возвращает общее количество базового актива, управляемого хранилищем.convertToShares(uint256 assets)— рассчитывает количество токенов долей, которое можно получить за указанное количество базового актива по текущему курсу.convertToAssets(uint256 shares)— рассчитывает количество базового актива, которое можно получить за указанное количество токенов долей.maxDeposit(address receiver)— возвращает максимальное количество базового актива, которое может быть внесено одним пользователем.previewDeposit(uint256 assets)— симулирует результат депозита без фактического выполнения транзакции.deposit(uint256 assets, address receiver)— вносит базовый актив в хранилище и начисляет токены долей получателю.maxMint(address receiver)— возвращает максимальное количество токенов долей, которое может быть выпущено для одного пользователя.previewMint(uint256 shares)— симулирует результат выпуска токенов долей.mint(uint256 shares, address receiver)— выпускает указанное количество токенов долей, принимая соответствующее количество базового актива.maxWithdraw(address owner)— возвращает максимальное количество базового актива, которое может быть выведено владельцем.previewWithdraw(uint256 assets)— симулирует результат вывода средств.withdraw(uint256 assets, address receiver, address owner)— выводит указанное количество базового актива, сжигая соответствующее количество токенов долей.maxRedeem(address owner)— возвращает максимальное количество токенов долей, которое может быть погашено владельцем.previewRedeem(uint256 shares)— симулирует результат погашения токенов долей.redeem(uint256 shares, address receiver, address owner)— погашает указанное количество токенов долей, возвращая соответствующее количество базового актива.
События
Стандарт определяет одно обязательное событие:
Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)— генерируется при депозите или выпуске токенов.Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)— генерируется при выводе средств или погашении токенов.
Принцип работы
Хранилище ERC-4626 работает по принципу пула ликвидности. Пользователи вносят базовый актив (например, USDC) и получают токены долей, которые представляют их долю в общем пуле. Хранилище использует собранные средства для реализации доходной стратегии (например, кредитование на Aave, обеспечение ликвидности на Uniswap, стейкинг). Доход от стратегии увеличивает общую стоимость пула, что приводит к росту стоимости одного токена доли относительно базового актива.
Курс конвертации между базовым активом и токенами долей определяется формулой: shares = assets * totalSupply / totalAssets. При депозите и выводе средств курс может немного отличаться из-за округления в пользу хранилища (для защиты от атак с манипуляцией округлением).
Преимущества
- Интероперабельность: единый интерфейс позволяет любому приложению, поддерживающему ERC-4626, взаимодействовать с любым хранилищем без написания кастомного кода.
- Упрощение интеграции: разработчики агрегаторов доходности, кошельков и DeFi-протоколов могут использовать стандартные вызовы функций.
- Прозрачность: функции
preview*позволяют пользователям и приложениям рассчитать точный результат операции до её выполнения. - Безопасность: стандарт включает защиту от атак с округлением, что снижает риски потери средств.
Недостатки и ограничения
- Отсутствие стандартизации стратегий: ERC-4626 определяет только интерфейс, но не регламентирует, как хранилище управляет средствами. Разные хранилища могут иметь разные риски, комиссии и стратегии, что требует от пользователей дополнительного анализа.
- Зависимость от реализации: хотя интерфейс стандартизирован, внутренняя логика может содержать ошибки или уязвимости, характерные для конкретного протокола.
- Округление в пользу хранилища: при больших объёмах операций накопленные округления могут привести к незначительным потерям для пользователей, хотя это предусмотрено для защиты от атак.
Применение
ERC-4626 широко используется в экосистеме DeFi:
- Доходные хранилища: Yearn Finance, Beefy Finance, Harvest Finance используют стандарт для представления своих стратегий.
- Протоколы кредитования: Aave, Morpho предлагают хранилища, соответствующие ERC-4626, для упрощения депозитов.
- Агрегаторы доходности: Zapper, Zerion, DeBank используют стандарт для отображения балансов и выполнения операций.
- Роботы-советники: автоматизированные стратегии управления капиталом могут подключаться к любым хранилищам через единый интерфейс.
Примеры реализаций
- Yearn Finance Vaults: хранилища, которые автоматически перераспределяют средства между различными стратегиями для максимизации доходности. Каждый Vault соответствует ERC-4626.
- Balancer Linear Pools: пулы, которые объединяют ликвидность из нескольких источников, используя ERC-4626 для представления долей.
- Morpho Vaults: хранилища, которые оптимизируют распределение средств между рынками кредитования для получения лучшей ставки.
Интересные факты
- ERC-4626 был одним из первых стандартов, принятых после перехода Ethereum на Proof-of-Stake, и его разработка совпала с ростом популярности доходных стратегий в DeFi.
- Стандарт не требует, чтобы хранилище было некастодиальным: теоретически он может быть реализован и в централизованных решениях, но на практике используется только в децентрализованных протоколах.
- Некоторые реализации добавляют дополнительные функции, такие как динамические комиссии, ограничения на максимальный депозит или механизмы ребалансировки, что выходит за рамки стандарта, но сохраняет совместимость с ним.
Источники
- Ethereum Improvement Proposal 4626 (EIP-4626)
- Документация OpenZeppelin по реализации ERC-4626
- Статья «ERC-4626: The Standard for Tokenized Vaults» на Ethereum.org
- Анализ безопасности ERC-4626 от Trail of Bits (2022)
- Репозиторий Yearn Finance на GitHub
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →