Estándar de bóveda tokenizada ERC-4626
Introducción
ERC-4626 es un estándar para optimizar y unificar los parámetros técnicos de las bóvedas que generan rendimiento. Proporciona una API estándar para bóvedas tokenizadas que generan rendimiento y que representan participaciones de un único token ERC-20 subyacente. ERC-4626 también describe una extensión opcional para bóvedas tokenizadas que utilizan ERC-20, ofreciendo una funcionalidad básica para depositar, retirar tokens y leer saldos.
El papel de ERC-4626 en las bóvedas que generan rendimiento
Los mercados de préstamos, los agregadores y los tokens que intrínsecamente generan intereses ayudan a los usuarios a encontrar el mejor rendimiento para sus tokens cripto mediante la ejecución de diferentes estrategias. Estas estrategias se realizan con ligeras variaciones, lo que podría ser propenso a errores o desperdiciar recursos de desarrollo.
ERC-4626 en las bóvedas que generan rendimiento reducirá el esfuerzo de integración y desbloqueará el acceso al rendimiento en varias aplicaciones con poco esfuerzo especializado por parte de los desarrolladores al crear patrones de implementación más consistentes y robustos.
El token ERC-4626 se describe completamente en EIP-4626 (opens in a new tab).
Extensión de bóveda asíncrona (ERC-7540)
ERC-4626 está optimizado para depósitos y canjes atómicos hasta un límite. Si se alcanza el límite, no se pueden enviar nuevos depósitos ni canjes. Esta limitación no funciona bien para ningún sistema de contrato inteligente con acciones asíncronas o retrasos como requisito previo para interactuar con la bóveda (por ejemplo, protocolos de activos del mundo real, protocolos de préstamos subcolateralizados, protocolos de préstamos intercadena, tokens de staking líquido (LST) o módulos de seguridad de seguros).
ERC-7540 amplía la utilidad de las bóvedas ERC-4626 para casos de uso asíncronos. La interfaz de bóveda existente (deposit/withdraw/mint/redeem) se utiliza completamente para reclamar solicitudes asíncronas.
La extensión ERC-7540 se describe completamente en ERC-7540 (opens in a new tab).
Extensión de bóveda multiactivo (ERC-7575)
Un caso de uso faltante que no es compatible con ERC-4626 son las bóvedas que tienen múltiples activos o puntos de entrada, como los tokens de proveedor de liquidez (LP). Estos son generalmente difíciles de manejar o no cumplen con los requisitos debido a la exigencia de que ERC-4626 sea en sí mismo un ERC-20.
ERC-7575 añade soporte para bóvedas con múltiples activos al externalizar la implementación del token ERC-20 de la implementación de ERC-4626.
La extensión ERC-7575 se describe completamente en ERC-7575 (opens in a new tab).
Requisitos previos
Para comprender mejor esta página, le recomendamos que primero lea sobre los estándares de tokens y ERC-20.
Funciones y características de ERC-4626:
Métodos
asset
function asset() public view returns (address assetTokenAddress)
Esta función devuelve la dirección del token subyacente utilizado para la bóveda para la contabilidad, el depósito y el retiro.
totalAssets
function totalAssets() public view returns (uint256)
Esta función devuelve la cantidad total de activos subyacentes que posee la bóveda.
convertToShares
function convertToShares(uint256 assets) public view returns (uint256 shares)
Esta función devuelve la cantidad de shares que la bóveda intercambiaría por la cantidad de assets proporcionada.
convertToAssets
function convertToAssets(uint256 shares) public view returns (uint256 assets)
Esta función devuelve la cantidad de assets que la bóveda intercambiaría por la cantidad de shares proporcionada.
maxDeposit
function maxDeposit(address receiver) public view returns (uint256 maxAssets)
Esta función devuelve la cantidad máxima de activos subyacentes que se pueden depositar en una sola llamada a deposit, con las participaciones acuñadas para el receiver.
previewDeposit
function previewDeposit(uint256 assets) public view returns (uint256 shares)
Esta función permite a los usuarios simular los efectos de su depósito en el bloque actual.
deposit
function deposit(uint256 assets, address receiver) public returns (uint256 shares)
Esta función deposita assets de tokens subyacentes en la bóveda y otorga la propiedad de shares a receiver.
maxMint
function maxMint(address receiver) public view returns (uint256 maxShares)
Esta función devuelve la cantidad máxima de participaciones que se pueden acuñar en una sola llamada a mint, con las participaciones acuñadas para el receiver.
previewMint
function previewMint(uint256 shares) public view returns (uint256 assets)
Esta función permite a los usuarios simular los efectos de su acuñación en el bloque actual.
mint
function mint(uint256 shares, address receiver) public returns (uint256 assets)
Esta función acuña exactamente shares participaciones de la bóveda para receiver depositando assets de tokens subyacentes.
maxWithdraw
function maxWithdraw(address owner) public view returns (uint256 maxAssets)
Esta función devuelve la cantidad máxima de activos subyacentes que se pueden retirar del saldo de owner con una sola llamada a withdraw.
previewWithdraw
function previewWithdraw(uint256 assets) public view returns (uint256 shares)
Esta función permite a los usuarios simular los efectos de su retiro en el bloque actual.
withdraw
function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
Esta función quema shares de owner y envía exactamente assets token de la bóveda a receiver.
maxRedeem
function maxRedeem(address owner) public view returns (uint256 maxShares)
Esta función devuelve la cantidad máxima de participaciones que se pueden canjear del saldo de owner a través de una llamada a redeem.
previewRedeem
function previewRedeem(uint256 shares) public view returns (uint256 assets)
Esta función permite a los usuarios simular los efectos de su canje en el bloque actual.
redeem
function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
Esta función canjea un número específico de shares de owner y envía assets del token subyacente de la bóveda a receiver.
totalSupply
function totalSupply() public view returns (uint256)
Devuelve el número total de participaciones de la bóveda no canjeadas en circulación.
balanceOf
function balanceOf(address owner) public view returns (uint256)
Devuelve la cantidad total de participaciones de la bóveda que tiene actualmente owner.
Mapa de la interfaz
Eventos
Evento Deposit
DEBE emitirse cuando se depositan tokens en la bóveda a través de los métodos mint y deposit.
event Deposit(
address indexed sender,
address indexed owner,
uint256 assets,
uint256 shares
)
Donde sender es el usuario que intercambió assets por shares, y transfirió esos shares a owner.
Evento Withdraw
DEBE emitirse cuando un depositante retira participaciones de la bóveda en los métodos redeem o withdraw.
event Withdraw(
address indexed sender,
address indexed receiver,
address indexed owner,
uint256 assets,
uint256 shares
)
Donde sender es el usuario que activó el retiro e intercambió shares, propiedad de owner, por assets. receiver es el usuario que recibió los assets retirados.
