ERC-4626 to standard tokenizowanych vaultów w Ethereum. Interfejs, matematyka udziałów na przykładzie liczbowym, atak inflacyjny oraz ERC-7540 i ERC-7575.

ERC-4626 to standard Ethereum dla tokenizowanych vaultów. Definiuje jeden wspólny zestaw funkcji do deponowania pojedynczego tokena ERC-20 w vaulcie, otrzymywania w zamian udziałów vaulta i przeliczania jednych na drugie, dzięki czemu każdy portfel, rynek pożyczkowy czy agregator może zintegrować dowolny zgodny vault w ten sam sposób. Udziały vaulta same są tokenem, a ich wartość w aktywie bazowym rośnie, gdy vault zarabia.
Ten przewodnik omawia interfejs, matematykę udziałów i aktywów na przykładzie liczbowym, atak inflacyjny, rozszerzenia asynchroniczne i wieloaktywowe oraz to, jak łańcuchy spoza EVM, takie jak Sui, obsługują udziały w vaultach.
ERC-4626, zatytułowany „Tokenized Vaults”, został utworzony 22 grudnia 2021 r. przez Joeya Santoro, t11s, Jeta Jadeję, Alberto Cuestę Cañadę i Señora Doggo. To ERC z kategorii Standards Track o statusie Final, oparty na ERC-20 i ERC-2612 (podpisy permit), według strony EIP. Jego streszczenie opisuje go jako „standard API for tokenized Vaults representing shares of a single underlying EIP-20 token”.
Zanim powstał, każdy agregator zysków, rynek pożyczkowy i wrapper stakingowy pisał własny interfejs vaulta. Aplikacja, która chciała obsłużyć dziesięć vaultów, potrzebowała dziesięciu adapterów – a każdy z nich był nowym miejscem na błędy. ERC-4626 zastąpił to jednym kształtem, tak jak ERC-20 zrobił to dla tokenów zamiennych.
Standard ustala interfejs, a nie strategię: ryzykowny lub złośliwy vault może być w pełni zgodny. Szerszy obraz tego, co vaulty robią ze środkami, przedstawia artykuł vaulty krypto wyjaśnione.
Zgodny vault to token ERC-20 (udziały) plus poniższe funkcje. Każda z nich pochodzi ze specyfikacji.
| Funkcja | Co robi |
|---|---|
| asset() | Token bazowy, np. USDC. |
| totalAssets() | Wszystkie aktywa bazowe zarządzane przez vault, także w strategiach. |
| convertToShares / convertToAssets | Idealny kurs wymiany, z pominięciem opłat i limitów. |
| deposit(assets, receiver) | Użytkownik wybiera, ile aktywów wpłacić; vault wybija odpowiadające im udziały. |
| mint(shares, receiver) | Użytkownik wybiera, ile udziałów chce; vault pobiera potrzebne aktywa. |
| withdraw(assets, receiver, owner) | Użytkownik wybiera, ile aktywów wypłacić; vault spala potrzebne udziały. |
| redeem(shares, receiver, owner) | Użytkownik wybiera, ile udziałów spalić; vault wysyła odpowiadające im aktywa. |
| previewDeposit / previewMint / previewWithdraw / previewRedeem | Symulują każdą operację w bieżącym bloku, z uwzględnieniem opłat. |
| maxDeposit / maxMint / maxWithdraw / maxRedeem | Maksymalna kwota, jaką dany adres może teraz zdeponować, wybić, wypłacić lub wykupić. |
Dwa zdarzenia, Deposit i Withdraw, dają indekserom jeden wzorzec do śledzenia każdego zgodnego vaulta.
Funkcje preview pokazują, co faktycznie otrzyma się w tym bloku po opłatach – to właśnie front-end powinien wyświetlić przed podpisaniem. Funkcje max ujawniają limity, pauzy i ograniczenia płynności, dzięki czemu router może uniknąć transakcji skazanej na niepowodzenie.
Specyfikacja ostrzega, że totalAssets, convertToShares i convertToAssets to „estimates useful for display purposes”, a funkcje preview mogą być manipulowane i nie zawsze nadają się na oracle cenowe. Nasz przewodnik po oracle cenowych wyjaśnia dlaczego.
Sercem każdego vaulta jest jeden stosunek:
cena udziału = totalAssets ÷ totalSupply udziałów
Weźmy vault USDC, który trzyma 1 000 USDC i wyemitował 1 000 udziałów. Każdy udział jest wart 1 USDC.
Dlatego tokeny ERC-4626, takie jak sUSDS od Sky, nigdy nie zwiększają salda; każdy token z czasem po prostu wymienia się na więcej aktywa. Nasz przewodnik po USDS i sUSDS omawia ten przypadek.
Prawdziwe liczby rzadko dzielą się bez reszty. Specyfikacja mówi, że gdy vault emituje udziały za depozyt lub wypłaca aktywa za udziały, powinien zaokrąglać w dół. Gdy oblicza, ile udziałów trzeba spalić lub ile aktywów trzeba dostarczyć, powinien zaokrąglać w górę. Funkcje convertTo muszą zawsze zaokrąglać w dół.
Każdy błąd zaokrąglenia zostawia więc drobną kwotę w vaulcie, zamiast pozwolić jednemu użytkownikowi wyciągnąć ją od pozostałych.
Zaokrąglenia mają jeden niebezpieczny przypadek brzegowy: niemal pusty vault. Atak inflacyjny (inaczej atak donacyjny) opisuje dokumentacja ERC-4626 OpenZeppelin.
Atak zwykle polega na front-runningu pierwszych depozytów w vaulcie.
Wniosek dla użytkowników: należy zachować ostrożność, będąc jednym z pierwszych deponentów w zupełnie nowym, nieaudytowanym vaulcie.
ERC-4626 zakłada, że depozyty i wypłaty rozliczają się natychmiast, co nie pasuje do strategii real-world assets ani tych, które wolno się zamyka. Dwa późniejsze standardy, oba o statusie Final, wypełniają te luki.
ERC-7540, utworzony 18 października 2023 r., dodaje krok wniosku. Wywołuje się requestDeposit lub requestRedeem, wniosek ma status Pending, gdy vault go przetwarza, następnie staje się Claimable, a na koniec kończy się go zwykłym wywołaniem deposit, mint, redeem lub withdraw. Specyfikacja mówi, że wnioski nie mogą pomijać etapu claimable. Celowo nie ma requestWithdraw: asynchroniczne wyjścia przechodzą przez requestRedeem.
ERC-7575, utworzony 11 grudnia 2023 r., pozwala kilku punktom wejścia w różnych aktywach dzielić jeden token udziałowy, a samemu tokenowi udziałowemu istnieć w osobnym kontrakcie niż vault. Każdy vault udostępnia funkcję share() wskazującą ten token. Sama specyfikacja zauważa kompromis: ponieważ vault nie musi być własnym ERC-20, jest „not fully compatible with ERC-4626”.
Kilka zweryfikowanych przykładów, sprawdzonych 15 października 2026 r.:
Ponieważ te tokeny udziałowe stosują jeden interfejs, można je podłączać do innych protokołów jako zabezpieczenie, nogi o stałym zysku lub dane wejściowe dla agregatorów zysków.
„Zgodny z ERC-4626” mówi, jak komunikować się z vaultem, a nie czy jest to dobre miejsce na środki. Sekcja bezpieczeństwa samego EIP ostrzega, że w pełni permissionless zastosowania „could fall prey to malicious implementations”. Przed depozytem należy sprawdzić:
Nasza lista kontrolna jak sprawdzić, czy protokół DeFi jest bezpieczny dotyczy każdego vaulta, zgodnego ze standardem czy nie.
ERC-4626 dotyczy tylko łańcuchów EVM. Inne łańcuchy budują vaulty na własnych prymitywach tokenowych.
Dobrym przykładem jest Sui. Jego standard monet opisuje Coin<T> jako typ dla tokenów zamiennych, a do ich wybijania i spalania wymagany jest obiekt TreasuryCap. Vault na Sui zwykle trzyma treasury capability własnej monety udziałowej, wybija udziały przy depozycie i spala je przy wypłacie, a wycenia je jako aktywa netto podzielone przez podaż – to ta sama idea co w ERC-4626, ale bez wspólnych nazw funkcji. Dokumentacja Sui nie wymienia standardu udziałów w vaultach, więc każdy protokół definiuje własny interfejs.
Miejsce JewelSwap: Ember Loop od JewelSwap na Sui stosuje ten wzorzec. Deponuje się USDC i otrzymuje jeLOOP, zwykłą monetę Sui wycenianą jako wartość aktywów netto vaulta podzielona przez podaż jeLOOP, a wyjścia to tickety wypłat w kolejce, podobnie jak wnioski ERC-7540. Ember Loop to publiczna beta, nie przeszedł audytu, korzysta z dźwigni, a rezydenci USA i Wielkiej Brytanii nie powinni z niego korzystać. Dokumentacja Ember Loop i nasz artykuł o Ember Loop omawiają mechanikę, opłaty i ryzyka.
ERC-4626 to standard Ethereum dla tokenizowanych vaultów. Daje każdemu vaultowi te same funkcje do deponowania jednego tokena ERC-20, otrzymywania tokenów udziałowych i przeliczania udziałów na aktywa, dzięki czemu aplikacje mogą integrować dowolny zgodny vault bez dedykowanego kodu.
Tak. ERC-4626, ERC4626 i EIP-4626 odnoszą się do tego samego standardu „Tokenized Vaults”, utworzonego 22 grudnia 2021 r. i obecnie oznaczonego jako Final.
Przy deposit wybiera się kwotę aktywa bazowego do wpłacenia i otrzymuje tyle udziałów, ile można za nią kupić. Przy mint wybiera się liczbę udziałów, a vault pobiera tyle aktywów, ile one kosztują. Withdraw i redeem to analogiczna para dla wyjść.
Jest wymierzony w niemal pusty vault. Atakujący wybija niewielką liczbę udziałów, a następnie przekazuje aktywa bezpośrednio do vaulta, aby zawyżyć cenę udziału, przez co udziały kolejnego deponenta zaokrąglają się w dół do zera lub prawie zera. Bronią przed nim wirtualne udziały i aktywa, zasilenie vaulta na starcie oraz kontrola minimalnej liczby udziałów.
Nie. Standaryzuje interfejs, a nie strategię. Zgodny vault nadal może stracić pieniądze przez złe pożyczki, błędy smart kontraktów, problemy z oracle lub złośliwą implementację, dlatego strategię, kontrolę, opłaty i warunki wyjścia należy sprawdzać osobno.
Nie jako formalny standard. Vaulty na Sui zwykle emitują własną monetę udziałową w oparciu o standard monet Sui i wyceniają ją jako aktywa netto podzielone przez podaż. Przykładem jest jeLOOP od JewelSwap z vaulta Ember Loop w becie.
Ten artykuł ma charakter edukacyjny i nie stanowi porady finansowej. Szczegóły standardu pochodzą ze stron Ethereum EIP i dokumentacji protokołów według stanu na 15 października 2026 r., a implementacje z czasem się zmieniają. JewelSwap prowadzi wspomniany tu vault Ember Loop, który jest nieaudytowaną betą.