Standard della cassaforte tokenizzata ERC-4626
Ultima modifica: @Herbie_23(opens in a new tab), 8 maggio 2024
Introduzione
ERC-4626 è uno standard per ottimizzare e unificare i parametri tecnici delle cassaforti di resa. Fornisce un'API standard per le cassaforti di resa tokenizzate che rappresenta le quote di un singolo token ERC-20 sottostante. ERC-4626 delinea anche un'estensione facoltativa per le cassaforti tokenizzate usando ERC-20, offrendo le funzionalità di base per depositare e prelevare token e leggere i saldi.
Il ruolo dell'ERC-4626 nelle cassaforti di resa
I mercati di prestito, gli aggregatori e i token intrinsecamente fruttiferi di interessi aiutano gli utenti a trovare la miglior resa sui propri cripto-token eseguendo strategie differenti. Queste strategie sono create con lievi variazioni, che potrebbero essere incline a errore o potrebbero sprecare risorse di sviluppo.
L'ERC-4626 nelle cassaforti di resa ridurrà lo sforzo di integrazione e sbloccherà l'accesso alla resa in varie applicazioni con piccoli sforzi specializzati dagli sviluppatori, creando schemi d'implementazione coerenti e robusti.
Il token ERC-4626 è descritto nella sua interezza in EIP-4626(opens in a new tab).
Prerequisiti
Per comprendere meglio questa pagina, consigliamo innanzitutto di leggere standard per i token e ERC-20.
ERC-4626 Funzioni e caratteristiche:
Metodi
asset
1function asset() public view returns (address assetTokenAddress)Copia
Questa funzione restituisce l'indirizzo del token sottostante, utilizzato per la cassaforte per la contabilità, i depositi e i prelievi.
totalAssets
1function totalAssets() public view returns (uint256)Copia
Questa funzione restituisce l'importo totale di risorse sottostanti detenute dalla cassaforte.
convertToShares
1function convertToShares(uint256 assets) public view returns (uint256 shares)Copia
Questa funzione restituisce la quantità di shares
che sarebbe scambiata dalla cassaforte per la quantità fornita di assets
.
convertToAssets
1function convertToAssets(uint256 shares) public view returns (uint256 assets)Copia
Questa funzione restituisce la quantità di assets
che sarebbe scambiata dalla cassaforte per la quantità di shares
fornita.
maxDeposit
1function maxDeposit(address receiver) public view returns (uint256 maxAssets)Copia
Questa funzione restituisce la quantità massima di risorse sottostanti depositabili in una singola chiamata a deposit
dal receiver
.
previewDeposit
1function previewDeposit(uint256 assets) public view returns (uint256 shares)Copia
Questa funzione consente agli utenti di simulare gli effetti del loro deposito al blocco corrente.
deposit
1function deposit(uint256 assets, address receiver) public returns (uint256 shares)Copia
Questa funzione deposita assets
di token sottostanti nella cassaforte e concede la proprietà delle shares
al receiver
.
maxMint
1function maxMint(address receiver) public view returns (uint256 maxShares)Copia
Questa funzione restituisce la quantità massima di quote coniabili in una sola chiamata a mint
dal receiver
.
previewMint
1function previewMint(uint256 shares) public view returns (uint256 assets)Copia
Questa funzione consente agli utenti di simulare gli effetti del loro conio al blocco corrente.
mint
1function mint(uint256 shares, address receiver) public returns (uint256 assets)Copia
Questa funzione conia esattamente quote della cassaforte shares
al receiver
, depositando assets
di token sottostanti.
maxWithdraw
1function maxWithdraw(address owner) public view returns (uint256 maxAssets)Copia
Questa funzione restituisce la quantità massima di risorse sottostanti prelevabili dal saldo dell'owner
con una singola chiamata a withdraw
.
previewWithdraw
1function previewWithdraw(uint256 assets) public view returns (uint256 shares)Copia
Questa funzione consente agli utenti di simulare gli effetti del loro prelievo al blocco corrente.
withdraw
1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)Copia
Questa funzione brucia shares
da owner
e invia esattamente token assets
dalla cassaforte al receiver
.
maxRedeem
1function maxRedeem(address owner) public view returns (uint256 maxShares)Copia
Questa funzione restituisce la quantità massima di quote che possono essere riscattate dal saldo dell'owner
tramite una chiamata a redeem
.
previewRedeem
1function previewRedeem(uint256 shares) public view returns (uint256 assets)Copia
Questa funzione consente agli utenti di simulare gli effetti del loro riscatto al blocco corrente.
redeem
1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)Copia
Questa funzione riscatta un numero specifico di shares
dall'owner
e invia assets
del token sottostante dalla cassaforte al receiver
.
totalSupply
1function totalSupply() public view returns (uint256)Copia
Restituisce il numero totale di quote della cassaforte non riscattate in circolazione.
balanceOf
1function balanceOf(address owner) public view returns (uint256)Copia
Restituisce la quantità totale di quote della cassaforte che l'owner
possiede attualmente.
Mappa dell'interfaccia
Eventi
Evento di Deposito
DEVE essere emesso quando i token sono depositati nella cassaforte tramite i metodi mint
e deposit
1event Deposit(2 address indexed sender,3 address indexed owner,4 uint256 assets,5 uint256 shares6)Copia
Dove sender
è l'utente che ha scambiato assets
per shares
e ha trasferito tali shares
all'owner
.
Evento di Prelievo (Withdraw)
DEVE essere emesso quando le quote sono prelevate dalla cassaforte da un depositante con i metodi redeem
o withdraw
.
1event Withdraw(2 address indexed sender,3 address indexed receiver,4 address indexed owner,5 uint256 assets,6 uint256 shares7)Copia
Dove sender
è l'utente che ha innescato il prelievo e scambiato shares
, possedute dall'owner
, per assets
. receiver
è l'utente che ha ricevuto le assets
prelevate.