Pular para o conteúdo
0%

O que é o padrão de token ERC-4626?

Alchemy team headshot

Escrito por Alchemy

Publicado em 21 de junho de 20226 min de leitura

Embora existam alguns padrões de token proeminentes no momento, o mundo das Finanças Descentralizadas (DeFi) ainda tem um problema recorrente significativo em relação a vaults tokenizados. Isso levou à criação do mais recente padrão, chamado ERC-4626.

Este artigo vai explicar o que são vaults, os problemas que os desenvolvedores enfrentam ao tokenizá-los e como o ERC-4626 resolve esse problema no desenvolvimento DeFi. Depois vamos aprofundar nas novas mudanças que esse padrão traz e mostrar como implementá-las em seus smart contracts.

O que é um vault?

Um vault é uma solução multi-sig ou smart contract capaz de armazenar e gerenciar ativos como criptomoedas. Cada vault sempre tem os tokens que gera como uma forma de retorno. Esses tokens gerados podem depois ser trocados pelos tokens originalmente bloqueados nos vaults.

Por exemplo, quando você faz stake de Sushi no Sushiswap, que é um automated market maker (AMM), você recebe xSushi como recompensa. Da mesma forma, você também recebe cUSDC ao fazer yield farming da stablecoin USDC no Compound, um protocolo DeFi de empréstimo.

cUSDC e xSushi são yield-bearing tokens, que podem ser resgatados em troca do token original (por exemplo, USDC ou SUSHI, neste exemplo). O valor dos yield-bearing tokens sempre aumenta na medida em que os tokens bloqueados no vault ou pool aumentam.

Vaults são percebidos como mais seguros e confiáveis do que wallets, e é por isso que muitos protocolos DeFi optam por depositar seus fundos em um vault. Protocolos DeFi populares que usam vaults incluem Sushiswap, Aave, Balancer e Compound, entre outros.

Qual é o problema com a tokenização de vaults?

O problema que os desenvolvedores enfrentam em relação aos yield-bearing tokens é a integração de tokens de diferentes protocolos.

Por exemplo, numa situação em que você queira construir um app DeFi que precise integrar os tokens de cada protocolo, você terá que pesquisar cada um deles, entender seu modelo de acúmulo de rendimentos e adaptá-lo à sua base de código.

Se você quiser integrar o vDAI do Maker DAO, o stETH da Curve, e assim por diante, você precisará entender as particularidades dos smart contracts de cada um e construir soluções personalizadas para integrá-los com sucesso ao seu app DeFi.

Além de quão estressante e demorado esse processo de integração de diferentes yield-bearing tokens pode ser, ele também aumenta o risco de smart contract devido a potenciais erros.

Os desenvolvedores precisarão gastar mais tempo verificando possíveis brechas nos adapters e, em alguns casos, podem até precisar terceirizar isso para auditores de smart contracts, o que pode ser bastante custoso. Isso é ainda mais relevante agora que atacantes vêm comprometendo a integridade de muitos protocolos e apps DeFi.

Quem criou o padrão ERC-4626?

Perto do fim de 2021, ao notar como era difícil para os desenvolvedores integrarem yield-bearing tokens distintos, Joey Santoro — fundador da Fei Protocol — liderou uma equipe com mais quatro desenvolvedores Ethereum para submeter a Ethereum Comment Proposal 4626 (ERC-4626).

Depois de passar por várias rodadas de revisão e deliberação, a Ethereum finalmente aprovou o padrão em maio de 2022.

Quais são os benefícios do ERC-4626 em relação a vaults?

O principal benefício do ERC-4626 é padronizar os vaults tokenizados, tornando a integração de protocolos mais fácil e menos propensa a erros.

Como existe agora um padrão comum a ser integrado, não há mais necessidade real de construir adapters separados. Em resumo, isso acelera o desenvolvimento; composabilidade no seu auge.

Da mesma forma, reduz custos, pois os builders não precisam mais recorrer a auditores para ajudar com seus adapters e interfaces. Mais importante ainda, o ERC-4626 reforça a segurança entre apps e agregadores de yield que lidam com yield-bearing tokens.

Quais mudanças o padrão ERC-4626 introduz?

Com o novo token ERC-4626, agora existe um padrão para desenvolvedores construírem apps DeFi que envolvam yield tokens.

Em resumo, o padrão ERC-4626 implementa os seguintes recursos:

  • uma interface de vault otimizada para desenvolvedores que queiram integrá-la.
  • fornece shares como contrapartida ao depósito, onde as shares representam a propriedade fracionária do token subjacente do vault
  • um padrão consistente para os desenvolvedores trabalharem no desenvolvimento de contratos com yield-bearing tokens
  • segurança testada em batalha para tokens de vault

Como o ERC-4626 funciona: funções e eventos

O ERC-4626 é uma extensão de e compatível com o padrão ERC-20. Como resultado, a maioria das variáveis, eventos e funções usuais aplicáveis em contratos de token ERC-20 continuam funcionando com o padrão de vault ERC-4626.

O padrão de vault introduz o conceito de shares como uma forma de obter propriedade fracionária de todo o pool. Essas shares se referem a yield-bearing tokens.

Agora vamos começar a desenvolver em ERC-4626.

Embora seja possível usar linguagens como Cairo e Viper, vamos escrever este contrato com Solidity.

1. Importe extensões da OpenZepellin para sua IDE

Depois de abrir sua IDE — recomendamos o Remix — informe ao compilador a versão do Solidity com a qual você está escrevendo o contrato.

Neste caso, declare que você trabalhará com a 0.8. Depois disso, você precisará importar duas extensões da OpenZeppelin: tanto ERC-20 quanto ERC-4626.

Em seguida, vamos criar um contrato e nomeá-lo.

2. Crie seu contrato

Nomeie seu contrato e reforce que ele se baseia tanto no token ERC-20 quanto no ERC-4626.

Contract, testingVaults is ERC20, IERC4626 { seu código completo aqui}

3. Implemente o padrão

Depois de criar o contrato, há algumas mudanças importantes que você deve conhecer sobre os métodos, funções e eventos desse padrão. Assim, vamos examinar alguns dos métodos e eventos do ERC-4626:

Deposit

Quando os usuários colocam fundos no vault, a função de deposit aciona o smart contract para mintar uma quantidade correspondente de shares para o depositante. Como evento, o smart contract deve ser acionado sempre que houver um depósito.

Com essa função, instruímos o contrato a depositar alguns tokens no vault e conceder a propriedade das shares ao chamador. Você pode escrever a função de withdrawal da mesma forma.

Withdrawal

A função de withdrawal ajuda os owners a queimar shares em troca de ativos. Quando há um saque do vault, o evento de withdrawal deve ser disparado.

O address indexed _from nesse evento representa o usuário que aprovou o depósito de tokens no vault, enquanto a pessoa que pode sacar os tokens depositados é the address indexed _to.

Asset e totalAsset

O endereço do token do vault deve ser usado na função asset. A quantidade total do ativo subjacente no smart contract deve ser declarada em totalAssets.

convertToShares e convertToAssets

No padrão ERC-4626, existem duas funções de conversão: convertToShares e convertToAssets.

Quando você precisa converter assets em shares, convertToShares é a função certa a chamar, pois retorna a quantidade de shares a liberar em vez dos assets.

Por outro lado, convertToAssets funciona no sentido inverso, convertendo shares em assets.

Mint

A função mint é chamada para o receiver assim que há um depósito. maxMint é a quantidade total de shares que podem ser criadas para um usuário ou receiver em um vault. Como desenvolvedor, você deve definir esse valor.

Redeem

A função redeem queima algumas shares do owner — msg.sender — e envia assets ao receiver. Caso as shares não possam ser resgatadas, por um motivo ou outro, redeem deve sofrer revert.

maxRedeem é o número de shares no vault que o owner pode resgatar.

Preview

Ao usar os métodos preview, os desenvolvedores devem ter em mente que os valores retornados por esses métodos não serão exatos, mas serão aproximados. Você não deve confiar neles como oráculos.

Você pode usar o preview junto com outros métodos, como mint, withdraw, redeem e deposit.

E é isso. Você iniciou com sucesso sua jornada de desenvolvimento com o ERC-4626!

Encerrando – o futuro do ERC-4626

Há uma nova onda no DeFi com o surgimento do ERC-4626.

Agregadores DeFi sempre tiveram bastante dificuldade em agregar diversos yield-bearing tokens porque não havia um padrão. Mas agora o ERC-4626 torna possível obter detalhes de yield-bearing tokens com uma única chamada de API.

O problema de ter que se esforçar além do necessário para reforçar a segurança de aplicações DeFi com yield-bearing tokens é resolvido — em grande medida — com esse padrão testado em batalha.

O uso de composabilidade e interoperabilidade entre diversos protocolos DeFi vai crescer nos próximos anos. É até possível que esse padrão sirva de base para a construção e o lançamento de produtos completamente novos no ecossistema DeFi.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.