Перейти до основного контенту
Change page

Стандарт токенізованого сховища ERC-4626

Останні оновлення сторінки: 21 жовтня 2025 р.

Вступ

ERC-4626 — це стандарт для оптимізації та уніфікації технічних параметрів дохідних сховищ. Він надає стандартний API для токенізованих дохідних сховищ, що представляють частки єдиного базового токена ERC-20. ERC-4626 також описує необов'язкове розширення для токенізованих сховищ, які використовують ERC-20, пропонуючи базовий функціонал для внесення депозитів, виведення токенів та зчитування балансів.

Роль ERC-4626 у дохідних сховищах

Ринки кредитування, агрегатори та токени, що за своєю суттю приносять відсотки, допомагають користувачам знаходити найкращу дохідність для своїх криптотокенів шляхом виконання різних стратегій. Ці стратегії виконуються з невеликими варіаціями, що може призводити до помилок або марної витрати ресурсів на розробку.

ERC-4626 у дохідних сховищах зменшить зусилля на інтеграцію та відкриє доступ до дохідності в різних програмах з незначними спеціалізованими зусиллями від розробників, створюючи більш послідовні та надійні шаблони реалізації.

Токен ERC-4626 повністю описаний в EIP-4626opens in a new tab.

Асинхронне розширення сховища (ERC-7540)

ERC-4626 оптимізовано для атомарних депозитів і погашень до певного ліміту. Якщо ліміт досягнуто, нові депозити чи погашення не можуть бути подані. Це обмеження погано працює для будь-якої системи смарт-контрактів з асинхронними діями або затримками як необхідною умовою для взаємодії зі Сховищем (наприклад, протоколи активів реального світу, протоколи недостатньо забезпеченого кредитування, протоколи міжмережевого кредитування, ліквідні токени для стейкінгу або модулі безпеки страхування).

ERC-7540 розширює корисність сховищ ERC-4626 для асинхронних випадків використання. Існуючий інтерфейс Сховища (deposit/withdraw/mint/redeem) повністю використовується для обробки асинхронних Запитів.

Розширення ERC-7540 повністю описано в ERC-7540opens in a new tab.

Розширення сховища для кількох активів (ERC-7575)

Одним із варіантів використання, який не підтримується ERC-4626, є Сховища з кількома активами або точками входу, як-от токени постачальника ліквідності (LP). Вони, як правило, громіздкі або невідповідні через вимогу, що сам ERC-4626 має бути ERC-20.

ERC-7575 додає підтримку Сховищ з кількома активами, виносячи реалізацію токена ERC-20 за межі реалізації ERC-4626.

Розширення ERC-7575 повністю описано в ERC-7575opens in a new tab.

Передумови

Щоб краще зрозуміти цю сторінку, радимо спершу прочитати про стандарти токенів та ERC-20.

Функції та особливості ERC-4626:

Методи

asset

1function asset() public view returns (address assetTokenAddress)

Ця функція повертає адресу базового токена, що використовується для сховища для обліку, внесення та виведення коштів.

totalAssets

1function totalAssets() public view returns (uint256)

Ця функція повертає загальну суму базових активів, що зберігаються у сховищі.

convertToShares

1function convertToShares(uint256 assets) public view returns (uint256 shares)

Ця функція повертає кількість shares, яку сховище обміняє на надану кількість assets.

convertToAssets

1function convertToAssets(uint256 shares) public view returns (uint256 assets)

Ця функція повертає кількість assets, яку сховище обміняє на надану кількість shares.

maxDeposit

1function maxDeposit(address receiver) public view returns (uint256 maxAssets)

Ця функція повертає максимальну кількість базових активів, яку можна внести за один виклик deposit, при цьому частки карбуються для receiver.

previewDeposit

1function previewDeposit(uint256 assets) public view returns (uint256 shares)

Ця функція дозволяє користувачам симулювати ефекти свого депозиту в поточному блоці.

deposit

1function deposit(uint256 assets, address receiver) public returns (uint256 shares)

Ця функція вносить assets базових токенів у сховище і надає право власності на shares для receiver.

maxMint

1function maxMint(address receiver) public view returns (uint256 maxShares)

Ця функція повертає максимальну кількість часток, яку можна викарбувати за один виклик mint, при цьому частки карбуються для receiver.

previewMint

1function previewMint(uint256 shares) public view returns (uint256 assets)

Ця функція дозволяє користувачам симулювати ефекти свого карбування в поточному блоці.

mint

1function mint(uint256 shares, address receiver) public returns (uint256 assets)

Ця функція карбує рівно shares часток сховища для receiver, вносячи assets базових токенів.

maxWithdraw

1function maxWithdraw(address owner) public view returns (uint256 maxAssets)

Ця функція повертає максимальну кількість базових активів, яку можна вивести з балансу owner за один виклик withdraw.

previewWithdraw

1function previewWithdraw(uint256 assets) public view returns (uint256 shares)

Ця функція дозволяє користувачам симулювати ефекти свого виведення коштів у поточному блоці.

withdraw

1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)

Ця функція спалює shares з owner і надсилає рівно assets токенів зі сховища до receiver.

maxRedeem

1function maxRedeem(address owner) public view returns (uint256 maxShares)

Ця функція повертає максимальну кількість часток, яку можна погасити з балансу owner через виклик redeem.

previewRedeem

1function previewRedeem(uint256 shares) public view returns (uint256 assets)

Ця функція дозволяє користувачам симулювати ефекти свого погашення в поточному блоці.

redeem

1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)

Ця функція погашає певну кількість shares від owner і надсилає assets базового токена зі сховища до receiver.

totalSupply

1function totalSupply() public view returns (uint256)

Повертає загальну кількість непогашених часток сховища, що перебувають в обігу.

balanceOf

1function balanceOf(address owner) public view returns (uint256)

Повертає загальну кількість часток сховища, яку наразі має owner.

Карта інтерфейсу

Карта інтерфейсу ERC-4626

Події

Подія Deposit

ПОВИННА генеруватися, коли токени вносяться у сховище за допомогою методів mint та deposit.

1event Deposit(
2 address indexed sender,
3 address indexed owner,
4 uint256 assets,
5 uint256 shares
6)

Де 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 shares
7)

Де sender – це користувач, який ініціював виведення коштів і обміняв shares, що належать owner, на assets. receiver – це користувач, який отримав виведені assets.

Для подальшого читання

Чи була ця стаття корисною?