Padrão de cofre tokenizado ERC-4626
Última atualização da página: 21 de outubro de 2025
Introdução
O ERC-4626 é um padrão para otimizar e unificar os parâmetros técnicos dos cofres de rendimento. Ele fornece uma API padrão para cofres com rendimentos tokenizados que representam partes de um único token ERC-20 subjacente. O ERC-4626 também delineia uma extensão opcional para cofres tokenizados que utilizam ERC-20, oferecendo funcionalidade básica para depósito, retirada de tokens e leitura de saldos.
O papel do ERC-4626 nos cofres de rendimento
Mercados de empréstimo, agregadores e tokens intrinsecamente de rendimento ajudam os usuários a encontrar o melhor rendimento em seus tokens de cripto executando diferentes estratégias. Estas estratégias são realizadas com ligeiras variações, que podem ser propensas a erros ou desperdiçar recursos de desenvolvimento.
O ERC-4626 nos cofres de rendimento reduzirá o esforço de integração e desbloqueará o acesso a rendimentos em várias aplicações, com pouco esforço especializado dos desenvolvedores, criando padrões de implementação mais consistentes e robustos.
O token ERC-4626 é descrito por completo em EIP-4626 (opens in a new tab).
Extensão assíncrona de cofre (ERC-7540)
O ERC-4626 é otimizado para depósitos e resgates atômicos até um limite. Se o limite for atingido, nenhum novo depósito ou resgate poderá ser enviado. Essa limitação não funciona bem para qualquer sistema de contrato inteligente com ações assíncronas ou atrasos como pré-requisito para interagir com o Cofre (por exemplo, protocolos de ativos do mundo real, protocolos de empréstimos subcolateralizados, protocolos de empréstimos cross-chain, tokens de staking líquido ou módulos de segurança de seguro).
O ERC-7540 amplia a utilidade dos cofres ERC-4626 para casos de uso assíncronos. A interface de Cofre existente (deposit/withdraw/mint/redeem) é totalmente utilizada para reivindicar Solicitações assíncronas.
A extensão ERC-7540 é descrita por completo em ERC-7540 (opens in a new tab).
Extensão de cofre multiativo (ERC-7575)
Um caso de uso ausente que não é suportado pelo ERC-4626 são cofres que possuem múltiplos ativos ou pontos de entrada, como tokens de provedor de liquidez (LP tokens). Esses casos geralmente são difíceis de manejar ou não compatíveis devido ao requisito de que o ERC-4626 seja, por si só, um ERC-20.
O ERC-7575 adiciona suporte a cofres com múltiplos ativos ao externalizar a implementação do token ERC-20 da implementação do ERC-4626.
A extensão ERC-7575 é descrita por completo em ERC-7575 (opens in a new tab).
Pré-requisitos
Para entender melhor esta página, recomendamos que você leia primeiro sobre padrões de token e ERC-20.
Funções e recursos do ERC-4626:
Métodos
asset
1function asset() public view returns (address assetTokenAddress)Esta função retorna o endereço do token subjacente usado para o cofre para contabilidade, depósito, retirada.
totalAssets
1function totalAssets() public view returns (uint256)Esta função retorna a quantidade total de ativos subjacentes mantidos pelo cofre.
convertToShares
1function convertToShares(uint256 assets) public view returns (uint256 shares)Esta função retorna a quantidade de shares que seriam trocadas pelo cofre pela quantidade de assets fornecida.
convertToAssets
1function convertToAssets(uint256 shares) public view returns (uint256 assets)Esta função retorna a quantidade de assets que seriam trocados pelo cofre pela quantidade de shares fornecida.
maxDeposit
1function maxDeposit(address receiver) public view returns (uint256 maxAssets)Esta função retorna a quantidade máxima de ativos subjacentes que podem ser depositados em uma única chamada de deposit, com as shares mintadas para o receiver.
previewDeposit
1function previewDeposit(uint256 assets) public view returns (uint256 shares)Esta função permite aos usuários simular os efeitos de seu depósito no bloco atual.
deposit
1function deposit(uint256 assets, address receiver) public returns (uint256 shares)Esta função deposita assets de tokens subjacentes no cofre e concede a propriedade de shares ao receiver.
maxMint
1function maxMint(address receiver) public view returns (uint256 maxShares)Esta função retorna a quantidade máxima de shares que podem ser mintadas em uma única chamada de mint, com as shares mintadas para o receiver.
previewMint
1function previewMint(uint256 shares) public view returns (uint256 assets)Esta função permite aos usuários simular os efeitos de seu mint no bloco atual.
mint
1function mint(uint256 shares, address receiver) public returns (uint256 assets)Esta função minta exatamente shares de cofre para o receiver, depositando assets de tokens subjacentes.
maxWithdraw
1function maxWithdraw(address owner) public view returns (uint256 maxAssets)Esta função retorna a quantidade máxima de ativos subjacentes que podem ser sacados do saldo do owner com uma única chamada de withdraw.
previewWithdraw
1function previewWithdraw(uint256 assets) public view returns (uint256 shares)Esta função permite aos usuários simular os efeitos da sua retirada no bloco atual.
withdraw
1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)Esta função queima shares do owner e envia exatamente assets de token do cofre para o receiver.
maxRedeem
1function maxRedeem(address owner) public view returns (uint256 maxShares)Esta função retorna a quantidade máxima de shares que podem ser resgatadas do saldo do owner por meio de uma chamada de redeem.
previewRedeem
1function previewRedeem(uint256 shares) public view returns (uint256 assets)Essa função permite aos usuários simular os efeitos de seu resgate no bloco atual.
redeem
1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)Esta função resgata um número específico de shares do owner e envia assets do token subjacente do cofre para o receiver.
totalSupply
1function totalSupply() public view returns (uint256)Retorna o número total de shares não resgatadas do cofre em circulação.
balanceOf
1function balanceOf(address owner) public view returns (uint256)Retorna a quantidade total de shares do cofre que o owner possui atualmente.
Mapa da interface
Eventos
Evento de depósito
DEVE ser emitido quando tokens são depositados no cofre através dos métodos mint e deposit.
1event Deposit(2 address indexed sender,3 address indexed owner,4 uint256 assets,5 uint256 shares6)Onde sender é o usuário que trocou assets por shares e transferiu essas shares para o owner.
Evento de retirada
DEVE ser emitido quando shares são sacadas do cofre por um depositante nos métodos redeem ou withdraw.
1event Withdraw(2 address indexed sender,3 address indexed receiver,4 address indexed owner,5 uint256 assets,6 uint256 shares7)Onde sender é o usuário que acionou o saque e trocou shares, de propriedade do owner, por assets. receiver é o usuário que recebeu os assets sacados.
