Norme de coffre-fort avec les jetons ERC-4626
Dernière modification: @J4yD3v(opens in a new tab), 8 mai 2024
Introduction
ERC-4626 est une norme pour optimiser et standardiser les paramètres techniques des coffres à rendement. Elle fournit une API standard pour les coffres à rendement tokenisé qui représentent les actions d'un seul jeton ERC-20 sous-jacent. L'ERC-4626 soulignent également une extension facultative pour les coffres à jetons utilisant l'ERC-20, offrant ainsi des fonctionnalités de base pour les dépôts, les retraits de jetons et la lecture des soldes.
Le rôle de l’ERC-4626 dans les coffres à rendement
Les marchés de prêts, les agrégateurs et les jetons intrinsèquement porteurs d'intérêts aident les utilisateurs à trouver le meilleur rendement pour leurs jetons de cryptomonnaie en exécutant différentes stratégies. Ces stratégies s'opèrent avec de légères variations, qui pourraient être source d'erreurs ou de perte de ressources de développement.
Les coffres de rendement ERC-4626 réduiront l'effort d'intégration et ouvriront l'accès au rendement de diverses applications avec peu d'efforts spécialisés de la part des développeurs, en créant des modèles d'implémentation plus cohérents et plus robustes.
Le jeton ERC-4626 est décrit dans les détails dans EIP-4626(opens in a new tab).
Pré-requis
Pour mieux comprendre cette page, nous vous recommandons de commencer par lire celles concernant les normes des jetons et ERC-20.
Fonctions et fonctionnalités ERC-4626 :
Méthodes
asset
1function asset() public view returns (address assetTokenAddress)Copier
Cette fonction retourne l'adresse du jeton sous-jacent utilisé pour le coffre pour la comptabilité, le dépôt, le retrait.
totalAssets
1function totalAssets() public view returns (uint256)Copier
Cette fonction retourne le montant total des actifs sous-jacents détenus dans le coffre.
convertToShares
1function convertToShares(uint256 assets) public view returns (uint256 shares)Copier
Cette fonction retourne le montant de shares
qui seraient échangées par le coffre pour le montant d'assets
fourni.
convertToAssets
1function convertToAssets(uint256 shares) public view returns (uint256 assets)Copier
Cette fonction retourne le montant d'assets
qui seraient échangés par le coffre pour le montant de shares
fourni.
maxDeposit
1function maxDeposit(address receiver) public view returns (uint256 maxAssets)Copier
Cette fonction retourne le montant maximal des actifs sous-jacents qui peuvent être déposés en un seul appel de deposit
par le receiver
.
previewDeposit
1function previewDeposit(uint256 assets) public view returns (uint256 shares)Copier
Cette fonction permet aux utilisateurs de simuler les effets de leur dépôt sur le bloc actuel.
dépôt
1function deposit(uint256 assets, address receiver) public returns (uint256 shares)Copier
Cette fonction dépose les assets
de jetons sous-jacents dans le coffre et accorde la propriété de shares
au receiver
.
maxMint
1function maxMint(address receiver) public view returns (uint256 maxShares)Copier
Cette fonction retourne le nombre maximum d'actions qui peuvent être produites en un seul appel mint
par le receiver
.
previewMint
1function previewMint(uint256 shares) public view returns (uint256 assets)Copier
Cette fonction permet aux utilisateurs de simuler les effets de leur frappe sur le bloc actuel.
frapper
1function mint(uint256 shares, address receiver) public returns (uint256 assets)Copier
Cette fonction produit exactement shares
actions du coffre au receiver
en déposant des assets
de jetons sous-jacents.
maxWithdraw
1function maxWithdraw(address owner) public view returns (uint256 maxAssets)Copier
Cette fonction retourne le montant maximal des actifs sous-jacents qui peuvent être retirés du solde de l'owner
en un seul appel à la fonction withdraw
.
previewWithdraw
1function previewWithdraw(uint256 assets) public view returns (uint256 shares)Copier
Cette fonction permet aux utilisateurs de simuler les effets de leur retrait sur le bloc actuel.
retrait
1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)Copier
Cette fonction détruit shares
de l'owner
et envoie exactement assets
jeton depuis le coffre au receiver
.
maxRedeem
1function maxRedeem(address owner) public view returns (uint256 maxShares)Copier
Cette fonction retourne le montant maximum d'actions qui peuvent être rachetées du solde de l'orner
par un appel à la fonction redeem
.
previewRedeem
1function previewRedeem(uint256 shares) public view returns (uint256 assets)Copier
Cette fonction permet aux utilisateurs de simuler les effets de leur rachat sur le bloc actuel.
redeem
1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)Copier
Cette fonction rachète un nombre spécifique de shares
de l'owner
et envoie des assets
de jeton sous-jacent du coffre au receiver
.
totalSupply
1function totalSupply() public view returns (uint256)Copier
Renvoie le nombre total d'actions non rachetées en circulation.
balanceOf
1function balanceOf(address owner) public view returns (uint256)Copier
Renvoie le nombre total d'actions détenues par l'owner
.
Plan de l'interface
Évènements
Événement de dépôt
DOIT être déclenché lorsque des jetons sont déposés dans le coffre via les méthodes mint
et deposit
1event Deposit(2 address indexed sender,3 address indexed owner,4 uint256 assets,5 uint256 shares6)Copier
Où sender
est l'utilisateur qui a échangé assets
contre shares
, et a transféré ces shares
à l'owner
.
Évènement de retrait
DOIT être déclenché lorsque les actions sont retirées du coffre par un déposant via les méthodes redeem
ou withdraw
.
1event Withdraw(2 address indexed sender,3 address indexed receiver,4 address indexed owner,5 uint256 assets,6 uint256 shares7)Copier
Où sender
est l'utilisateur qui a déclenché le retrait et échangé shares
, détenues par owner
, contre assets
. receiver
est l'utilisateur qui a reçu les assets
retirés.