DeFi

ERC-4626: как токенизируются доли доходного vault

Как стандарт ERC-4626 связывает базовый актив, доли vault, внесение и вывод средств, почему цена доли меняется и где возникают риски.

ERC-4626: как токенизируются доли доходного vault

До ERC-4626 каждый доходный vault мог по-своему называть внесение активов, выпуск долей и расчёт курса. Интеграторам приходилось писать отдельную логику, а пользователю было трудно сравнивать операции. ERC-4626 задаёт единый интерфейс для vault, доли которого представлены взаимозаменяемым ERC-20 токеном.

Стандарт описывает бухгалтерию между базовым активом и shares, но не стратегию доходности. Два совместимых vault могут размещать средства совершенно по-разному и иметь несопоставимые риски. Надпись ERC-4626 говорит об интерфейсе, а не о качестве управления капиталом.

Assets и shares в одной модели

Функция asset указывает ERC-20 токен, который принимает vault. Это может быть стейблкоин, ликвидный стейкинговый токен или другой совместимый актив. totalAssets показывает количество базового актива, которым управляет vault, включая накопленный результат и предусмотренный учёт комиссий.

Взамен депозита пользователь получает shares – доли vault. Если в хранилище 1 000 единиц актива и выпущено 1 000 долей, исходный курс равен одной единице на долю. После получения дохода assets может стать 1 100 при прежнем количестве shares. Тогда каждая доля представляет уже 1,1 единицы базового актива.

Баланс shares поэтому не обязан увеличиваться. Доход часто отражается ростом количества assets, которое можно получить за ту же долю. Рыночная цена share-токена на DEX может отличаться от внутреннего курса vault из-за ликвидности, спроса и доступности прямого погашения.

Чем deposit отличается от mint

deposit отвечает на вопрос: сколько shares будет выпущено за указанное количество assets. Пользователь задаёт сумму базового актива, а контракт рассчитывает доли. mint работает в обратном направлении: пользователь указывает желаемое количество shares, а контракт определяет, сколько assets нужно внести.

Для выхода предусмотрена симметричная пара. withdraw задаёт количество assets, которое пользователь хочет получить, и рассчитывает необходимые shares. redeem задаёт количество сжигаемых shares и возвращает соответствующие assets. Во всех случаях владелец позиции и получатель могут задаваться отдельными параметрами, а расходование чужих shares требует разрешения.

maxDeposit, maxMint, maxWithdraw и maxRedeem показывают ограничения для конкретного владельца в текущем состоянии. Нулевое значение не обязательно означает потерю средств: vault может быть поставлен на паузу, достигнуть лимита или временно не иметь доступной ликвидности.

Для чего нужны convert и preview

convertToShares и convertToAssets дают идеализированную оценку среднего курса. По стандарту они не должны зависеть от конкретного пользователя и не предназначены для точного предсказания операции с комиссиями и ограничениями. Это удобные функции для оценки и бухгалтерского отображения.

previewDeposit, previewMint, previewWithdraw и previewRedeem рассчитывают результат ближе к условиям немедленной операции. Они должны учитывать параметры vault, влияющие на конкретное действие, однако состояние может измениться до включения транзакции в блок. Приложению всё равно нужны границы допустимого результата и защита от проскальзывания.

Разница между convert и preview особенно заметна при комиссиях на вход или выход. Если интерфейс показывает только идеальный курс, пользователь может получить меньше shares либо потратить больше assets. Перед подписью полезно сравнить preview, минимальный результат и фактические изменения, которые показывает симуляция.

Округление и атака первым депозитом

Shares и assets хранятся целыми числами минимальных единиц, поэтому расчёты округляются. При очень маленьком депозите пользователь может получить ноль или слишком мало shares. Стандарт задаёт направление округления для операций так, чтобы vault не обещал больше, чем способен выдать, но реализация формул остаётся критичной.

У пустого либо почти пустого vault возникает известный сценарий inflation attack. Злоумышленник получает первые shares, затем напрямую отправляет assets в контракт и искусственно повышает курс. Следующий небольшой депозит из-за округления может получить непропорционально мало долей, а выгоду извлечёт первый владелец.

Разработчики применяют виртуальные assets и shares, стартовую ликвидность или минимальный депозит, чтобы сделать атаку дорогой. Эти меры распространены, но не являются универсальной гарантией самого стандарта. Пользователю следует проверить текущий totalAssets, totalSupply и ожидаемый результат, особенно у нового vault с малой ликвидностью.

Какие риски стандарт не закрывает

ERC-4626 не определяет, куда стратегия отправляет средства, какие оракулы использует, кто может менять параметры и как обрабатывается убыток. Vault может кредитовать заёмщиков, предоставлять ликвидность, покупать позиции или держать актив без стратегии. Риски нужно искать в его конкретных контрактах и документации.

Цена доли способна снизиться, если стратегия понесла убыток, получила плохой долг или оценила актив по неверному oracle. Доходность не гарантирует ликвидность: часть средств может быть занята, а мгновенный withdraw ограничен. Если стратегия зависит от займа, применяйте отдельную проверку источника цены.

Если vault обновляемый, отдельно проверяйте proxy, admin и timelock. Материал о Transparent, UUPS и Beacon proxy помогает различить типы обновляемости, а статья о timelock и emergency pause объясняет управляющие задержки и остановки.

При использовании shares как залога появляется ещё один слой. Кредитный протокол должен правильно оценивать курс и способность погашения. Манипуляция тонким рынком share-токена или резкое изменение totalAssets способны повлиять на ликвидации. Один и тот же актив внутри нескольких vault также создаёт вложенную зависимость.

Как читать ERC-4626 vault на практике

  • Сверьте asset и убедитесь, что это ожидаемый токен в правильной сети.
  • Сравните totalAssets, totalSupply и курс одной share.
  • Проверьте max-функции и preview для выбранной операции.
  • Выясните комиссии, стратегию, доступную ликвидность и условия паузы.
  • Оцените владельцев ролей, возможность upgrade и используемые оракулы.
  • Для нового vault проверьте защиту от первого депозита и округления.

Токенизированная доля похожа на LP-токен, поскольку представляет требование к общему пулу активов, но экономическая модель зависит от конкретного vault. Базовые принципы долевого учёта можно сопоставить с материалом о том, что представляет LP-токен.

ERC-4626 делает операции vault предсказуемее для кошельков, агрегаторов и протоколов. Пользователь получает единый язык: assets входят, shares учитывают долю, а withdraw или redeem возвращают базовый актив. Безопасность при этом определяется реализацией, стратегией и управлением, поэтому совместимость со стандартом служит началом проверки, а не её итогом.