Стандарт токенизированных хранилищ ERC-4626
Последнее обновление страницы: 21 октября 2025 г.
Введение
ERC-4626 - стандарт, разработанный для оптимизации и объединения технических параметров доходных хранилищ. Он предоставляет стандартный API для токенизированных доходных хранилищ, которые представляют собой доли одного базового токена ERC-20. ERC-4626 также описывает необязательное расширение для токенизированных хранилищ, использующих ERC-20, предлагая базовую функциональность для внесения депозита, вывода токенов и считывания балансов.
Роль ERC-4626 в доходных хранилищах
Рынки кредитования, агрегаторы и внутренне процентные токены помогают пользователям находить лучшую доходность на свои криптотокены путем выполнения различных стратегий. Эти стратегии выполняются с небольшими вариациями, что может приводить к ошибкам или тратить впустую ресурсы на разработку.
ERC-4626 в доходных хранилищах снизит трудозатраты на интеграцию и откроет доступ к доходности в различных приложениях с небольшими специальными усилиями со стороны разработчиков путем создания более последовательных и надежных шаблонов реализации.
Токен ERC-4626 полностью описан в EIP-4626 (opens in a new tab).
Асинхронное расширение хранилища (ERC-7540)
ERC-4626 оптимизирован для атомарных депозитов и погашений до определенного лимита. Если лимит достигнут, новые депозиты или погашения не могут быть отправлены. Это ограничение плохо работает для любой системы умных контрактов с асинхронными действиями или задержками в качестве необходимого условия для взаимодействия с Хранилищем (например, протоколы реальных активов, протоколы кредитования с недостаточным обеспечением, межсетевые протоколы кредитования, токены ликвидного стейкинга или модули страховой безопасности).
ERC-7540 расширяет полезность Хранилищ ERC-4626 для асинхронных сценариев использования. Существующий интерфейс Хранилища (deposit/withdraw/mint/redeem) полностью используется для получения асинхронных Запросов.
Расширение ERC-7540 полностью описано в ERC-7540 (opens in a new tab).
Расширение хранилища с несколькими активами (ERC-7575)
Один из недостающих вариантов использования, который не поддерживается ERC-4626, — это Хранилища, которые имеют несколько активов или точек входа, такие как токены поставщика ликвидности (LP). Они, как правило, громоздки или несовместимы из-за требования к самому ERC-4626 быть токеном ERC-20.
ERC-7575 добавляет поддержку Хранилищ с несколькими активами путем вынесения реализации токена ERC-20 за пределы реализации ERC-4626.
Расширение ERC-7575 полностью описано в ERC-7575 (opens in a new tab).
Предварительные условия
Чтобы лучше понять эту страницу, мы рекомендуем вам сначала прочитать о стандартах токенов и ERC-20.
Функции и возможности ERC-4626:
Методы
актив
1function asset() public view returns (address assetTokenAddress)Эта функция возвращает адрес базового токена, используемого хранилищем для учета, внесения депозитов и вывода средств.
всегоАктивов
1function totalAssets() public view returns (uint256)Эта функция возвращает общее количество базовых активов, хранящихся в хранилище.
конвертироватьВДОли
1function convertToShares(uint256 assets) public view returns (uint256 shares)Эта функция возвращает количество долей (shares), которое будет обменено хранилищем на предоставленное количество активов (assets).
конвертироватьВАктивы
1function convertToAssets(uint256 shares) public view returns (uint256 assets)Эта функция возвращает количество активов (assets), которое будет обменено хранилищем на предоставленное количество долей (shares).
максДепозит
1function maxDeposit(address receiver) public view returns (uint256 maxAssets)Эта функция возвращает максимальное количество базовых активов, которое можно внести одним вызовом deposit, при этом доли выпускаются для получателя (receiver).
предпросмотрДепозита
1function previewDeposit(uint256 assets) public view returns (uint256 shares)Эта функция позволяет пользователям симулировать результат своего депозита на текущем блоке.
депозит
1function deposit(uint256 assets, address receiver) public returns (uint256 shares)Эта функция вносит активы (assets) базовых токенов в хранилище и передает право собственности на доли (shares) получателю (receiver).
максМинт
1function maxMint(address receiver) public view returns (uint256 maxShares)Эта функция возвращает максимальное количество долей, которое можно выпустить одним вызовом mint, при этом доли выпускаются для получателя (receiver).
предпросмотрМинта
1function previewMint(uint256 shares) public view returns (uint256 assets)Эта функция позволяет пользователям симулировать результат своего выпуска (минта) на текущем блоке.
минт
1function mint(uint256 shares, address receiver) public returns (uint256 assets)Эта функция выпускает (минтит) ровно shares (долей) хранилища для получателя (receiver) путем внесения assets (активов) базовых токенов.
максВывод
1function maxWithdraw(address owner) public view returns (uint256 maxAssets)Эта функция возвращает максимальное количество базовых активов, которое можно вывести с баланса владельца (owner) одним вызовом withdraw.
предпросмотрВывода
1function previewWithdraw(uint256 assets) public view returns (uint256 shares)Эта функция позволяет пользователям симулировать результат своего вывода на текущем блоке.
вывод
1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)Эта функция сжигает доли (shares) владельца (owner) и отправляет ровно assets (активов) токена из хранилища получателю (receiver).
максПогашение
1function maxRedeem(address owner) public view returns (uint256 maxShares)Эта функция возвращает максимальное количество долей, которое можно погасить с баланса владельца (owner) через вызов redeem.
предпросмотрПогашения
1function previewRedeem(uint256 shares) public view returns (uint256 assets)Эта функция позволяет пользователям симулировать результат своего погашения на текущем блоке.
погашение
1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)Эта функция погашает определенное количество долей (shares) владельца (owner) и отправляет активы (assets) базового токена из хранилища получателю (receiver).
общееПредложение
1function totalSupply() public view returns (uint256)Возвращает общее количество непогашенных долей хранилища в обращении.
баланс
1function balanceOf(address owner) public view returns (uint256)Возвращает общее количество долей хранилища, которыми в настоящее время владеет owner.
Карта интерфейса
События
Событие Deposit
ДОЛЖНО генерироваться, когда токены вносятся в хранилище с помощью методов mint и deposit.
1event Deposit(2 address indexed sender,3 address indexed owner,4 uint256 assets,5 uint256 shares6)Где sender — это пользователь, который обменял assets на shares и перевел эти shares владельцу (owner).
Событие Withdraw
ДОЛЖНО генерироваться, когда доли выводятся из хранилища вкладчиком с помощью методов redeem или withdraw.
1event Withdraw(2 address indexed sender,3 address indexed receiver,4 address indexed owner,5 uint256 assets,6 uint256 shares7)Где sender — это пользователь, который инициировал вывод и обменял shares (доли), принадлежащие owner (владельцу), на assets (активы). receiver — это пользователь, который получил выведенные assets (активы).
