Padrão de cofre tokenizado ERC-4626
Última edição: @MCreimer(opens in a new tab), 8 de maio de 2024
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 em mais detalhes em EIP-4626(opens in a new tab).
Pré-requisitos
Para entender melhor esta página, recomendamos que você leia primeiro sobre padrões de tokens e ERC-20.
Funções e características do ERC-4626:
Métodos
asset
1function asset() public view returns (address)Copiar
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)Copiar
Esta função retorna a quantidade total de ativos subjacentes mantidos pelo cofre.
convertToShares
1function convertToShares(uint256 assets) public view returns (uint256 shares)Copiar
Esta função retorna a quantidade de shares
que seriam intercambiadas pelo cofre pela quantidade de assets
fornecidos.
convertToAssets
1function convertToAssets(uint256 shares) public view returns (uint256 assets)Copiar
Esta função retorna a quantidade de assets
que seriam intercambiadas pelo cofre pela quantidade de shares
fornecidos.
maxDeposit
1function maxDeposit(address receiver) public view returns (uint256)Copiar
Esta função retorna a quantidade máxima de ativos subjacentes que podem ser depositados em um único deposit
chamado pelo receiver
.
previewDeposit
1function previewDeposit(uint256 assets) public view returns (uint256)Copiar
Esta função permite aos usuários simular os efeitos de seu depósito no bloco atual.
depositar
1function deposit(uint256 assets, address receiver) public returns (uint256 shares)Copiar
Esta função deposita assets
de tokens subjacentes no cofre e concede a propriedade de shares
para o receiver
.
maxMint
1function maxMint(address receiver) public view returns (uint256)Copiar
Esta função retorna a quantidade máxima de ativos subjacentes que podem ser mintados em um único mint
chamado pelo receiver
.
previewMint
1function previewMint(uint256 shares) public view returns (uint256)Copiar
Esta função permite aos usuários simular os efeitos de seu mint no bloco atual.
cunhar
1function mint(uint256 shares, address receiver) public returns (uint256 assets)Copiar
Esta função minta exatamente shares
no cofre para o receiver
depositando assets
dos tokens subjacentes.
maxWithdraw
1function maxWithdraw(address owner) public view returns (uint256)Copiar
Esta função retorna a quantidade máxima de ativos subjacentes que podem ser retirados do saldo do owner
com uma única chamada withdraw
.
previewWithdraw
1function previewWithdraw(uint256 assets) public view returns (uint256)Copiar
Esta função permite aos usuários simular os efeitos da sua retirada no bloco atual.
sacar
1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)Copiar
Esta função queima shares
do owner
e envia exatamente tokens assets
do cofre para o receiver
.
maxRedeem
1function maxRedeem(address owner) public view returns (uint256)Copiar
Essa função retorna a quantidade máxima de ações que podem ser resgatadas do saldo do owner
com uma chamada de redeem
.
previewRedeem
1function previewRedeem(uint256 shares) public view returns (uint256)Copiar
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)Copiar
Essa 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)Copiar
Retorna o número total de shares não resgatadas do cofre em circulação.
balanceOf
1function balanceOf(address owner) public view returns (uint256)Copiar
Retorna a quantidade total de shares do cofre que o owner
tem atualmente.
Eventos
Evento de depósito
PRECISA ser emitido quando os tokens são depositados no cofre por meio dos métodos mint
e deposit
1event Deposit(2 address indexed sender,3 address indexed owner,4 uint256 assets,5 uint256 shares6)Copiar
Em que sender
é o usuário que trocou assets
por shares
e transferiu aquelas shares
para o owner
.
Evento de retirada
PRECISA ser emitido quando as shares são retiradas do cofre por um depositante nos métodos de redeem
ou withdraw
.
1event Withdraw(2 address indexed sender,3 address indexed receiver,4 address indexed owner,5 uint256 assets,6 uint256 share7)Copiar
Em que sender
é o usuário que acionou a retirada e trocou shares
, de propriedade do owner
, por assets
. receiver
é o usuário que recebeu os assets
retirados.