ERC-20 é um padrão fundamental para o desenvolvimento de tokens, largamente empregado na rede Ethereum com o objetivo de simplificar a criação de novas criptomoedas.
Neste artigo, aprofundaremos nossos conhecimentos acerca do protocolo ERC-20 e demonstraremos como implementá-lo de forma prática e eficiente por meio do uso do Foundry, uma ferramenta poderosa e acessível para criar e testar nossos contratos.
O que é ERC-20?
A sigla ERC significa "Ethereum Request for Comments" ou "Solicitação de Comentários do Ethereum", em português. Esses documentos técnicos descrevem os padrões de programação na blockchain da Ethereum e estabelecem convenções que facilitam a interação entre DApps (Aplicativos Descentralizados). O número "20" é o identificador específico dessa documentação.
A proposta do ERC-20 foi criada por Fabian Vogelsteller em 2015, com o objetivo de oferecer compatibilidade e interoperabilidade entre tokens e DApps na rede Ethereum, promovendo melhorias no ecossistema.
Além de promover a compatibilidade, o ERC-20 torna o trabalho dos desenvolvedores mais fácil, permitindo que qualquer pessoa crie seus próprios ativos digitais a partir de uma base pré-estabelecida e compatível com outros softwares e serviços, como carteiras de criptomoedas e corretoras.
Cada token criado seguindo o padrão ERC-20 pode ter suas próprias características e parâmetros, permitindo que os desenvolvedores os programem de acordo com suas necessidades específicas.
Devido à sua praticidade e flexibilidade, a Ethereum tem atraído tanto desenvolvedores independentes quanto organizações e empresas. Hoje, já existem mais de 500 mil tokens ERC-20 disponíveis no mercado, relacionados a projetos variados e com diferentes propósitos. Essa ampla adoção reflete o sucesso do padrão ERC-20 na promoção do crescimento do ecossistema Ethereum.
Principais características de um token ERC-20
Tokens ERC-20 são criptomoedas que possuem valor próprio e podem ser transferidos e recebidos como qualquer outra moeda digital. Além disso, eles compartilham algumas características em comum, são elas:
Nome e símbolo: Cada token ERC-20 possui um nome e um símbolo que permitem identificá-lo e diferenciá-lo dos demais tokens presentes na rede Ethereum.
Fornecimento: Os tokens ERC-20 pode ter um fornecimento total predefinido ou não, que determina quantas unidades do token serão emitidas para distribuição na rede.
Controle de saldo: Eles operam por meio de uma interface capaz de mapear, revisar e relatar o saldo contido em um endereço específico da blockchain Ethereum.
Transferências: Os tokens ERC-20 possuem funções que permitem a gestão autônoma do sistema de transferência de fundos entre diferentes endereços da rede.
Com essa compreensão sobre o que é o padrão ERC-20, vamos agora explorar o funcionamento desses tokens em maior detalhe.
Como os tokens ERC-20 são criados?
O padrão ERC-20 é um conjunto de parâmetros essenciais que um contrato deve atender para garantir a compatibilidade do token com a rede Ethereum. Esses parâmetros, também conhecidos como "EIPs" (Ethereum Improvement Proposals) ou Propostas de Melhoria do Ethereum, podem ser encontrados no site Ethereum Improvement Proposals.
Esses parâmetros correspondem a funções programadas em Solidity, a linguagem de programação da Ethereum. São seis funções obrigatórias e três opcionais. As funções obrigatórias são as seguintes:
TotalSupply: Retorna o fornecimento total de tokens disponíveis no contrato.
BalanceOf: Permite verificar o saldo de tokens em um endereço específico.
Transfer: Realiza a transferência de tokens de um endereço para outro.
TransferFrom: Similar à função Transfer, mas também permite que um terceiro mova fundos de um endereço com autorização.
Approve: Limita a quantidade de tokens que um contrato pode retirar de um determinado endereço.
Allowance: Verifica se um endereço possui saldo suficiente para enviar tokens a outro endereço.
Além dessas funções obrigatórias, existem três funções opcionais que podem ser incluídas para aprimorar o contrato:
Name: Adiciona um nome legível ao token, como "Tether", "Shiba Inu" ou "Uniswap".
Symbol: Associa um símbolo ao token, como "USDT", "SHIB" ou "UNI".
Decimal: Define em quantas casas decimais o token pode ser dividido, proporcionando maior precisão nas transações.
Essas funções definidas pelo padrão ERC-20 garantem a interoperabilidade entre diferentes tokens e dApps na rede Ethereum, facilitando o desenvolvimento e o uso de ativos digitais de forma segura e eficiente.
Como criar um token ERC-20?
Para criar um token ERC-20, é necessário escrever um contrato inteligente em Solidity, que é a linguagem de programação utilizada na blockchain da Ethereum. Esse contrato é essencialmente um código que estabelece as regras de funcionamento do token, incluindo o fornecimento total, o nome, o símbolo e as funções que o token executará.
Para auxiliar no desenvolvimento do contrato ERC-20, o site da OpenZeppelin oferece informações detalhadas sobre cada função necessária, seus parâmetros e possíveis extensões para o contrato. Essa documentação é uma fonte valiosa de referência e orientação para os desenvolvedores que desejam implementar tokens ERC-20 com segurança e conformidade com o padrão estabelecido.
Ao seguir essas diretrizes e aproveitar os recursos disponíveis na OpenZeppelin, é possível criar tokens ERC-20 que se integram facilmente ao ecossistema Ethereum e oferecem diversas funcionalidades e oportunidades no contexto de aplicativos descentralizados e sistemas financeiros.
Criando um token ERC-20 com Foundry
Utilizaremos o Contracts Wizard da OpenZeppelin para criar a base do nosso contrato e, em seguida, implementá-lo com o auxílio do Foundry.
O Contracts Wizard da OpenZeppelin é uma ferramenta valiosa que nos permitirá criar facilmente a estrutura inicial do contrato, garantindo que ele siga as diretrizes do padrão ERC-20 de forma segura e confiável. Com essa base sólida, poderemos prosseguir para a implementação do contrato utilizando o Foundry.
O Foundry é uma ferramenta poderosa que agiliza e facilita o desenvolvimento de contratos inteligentes na rede Ethereum. Com ele, seremos capazes de personalizar e adicionar as funcionalidades específicas do nosso token ERC-20, garantindo uma implementação robusta e eficiente.
Ao utilizar essa combinação de recursos da OpenZeppelin e do Foundry, estaremos bem preparados para criar um token ERC-20 de alta qualidade, pronto para interagir perfeitamente com outros contratos e aplicativos na rede Ethereum.
Criando contrato ERC-20 com Contracts Wizard
Optamos pela opção ERC20 no Contracts Wizard e, em seguida, preenchemos os campos com as informações do nosso token, como Nome e Símbolo. Escolhemos também habilitar as opções "Mintable" (possibilidade de criação de novos tokens) e "Burnable" (possibilidade de destruição de tokens).
A imagem abaixo mostra um exemplo de como ficou o contrato ERC20 após a configuração no Contracts Wizard:
Com essas definições, nosso contrato estará preparado para operar como um token ERC20, permitindo transferências, criação e destruição de tokens, conforme as necessidades do nosso projeto. Essa configuração nos proporciona flexibilidade e controle para gerenciar o nosso token na rede Ethereum de maneira eficiente.
Implementando contrato ERC-20 com Fondry
Se você ainda não está familiarizado com o Foundry e deseja aprender como instalá-lo em sua máquina e utilizá-lo, recomendo verificar este tutorial aqui. Ele fornecerá uma compreensão mais aprofundada sobre o funcionamento do Foundry.
Para começar a implementar o seu projeto, inicie um novo projeto com o comando forge init <nome-do-projeto>
. Em seguida, crie um novo arquivo chamado MyToken.sol
dentro da pasta src
e cole o conteúdo do contrato gerado pelo Contracts Wizard.
Antes de prosseguirmos, realizaremos uma mudança em nosso constructor
para permitir a definição do nome e símbolo do nosso token durante o deploy. Adicione o seguinte código ao contrato:
constructor (string memory _name, string memory _symbol) ERC20 (_name, _symbol) {
}
Com essa alteração, poderemos configurar o nome e o símbolo do token de forma flexível ao implantar o contrato.
Como implementaremos nosso contrato utilizando as interfaces do OpenZeppelin, é necessário instalar o pacote com o seguinte comando:
forge install openzeppelin/openzeppelin-contracts
Se você estiver utilizando o VSCode, talvez receba algumas mensagens de erro. Para corrigir esse problema, execute o seguinte comando:
forge remappings > remappings.txt
Isso permitirá realizar as importações sem ter que passar o caminho absoluto das pastas.
Na pasta test
, crie um arquivo chamado MyToken.test.sol
e copie o código de testes disponível neste gist.
Ao seguir esses passos, você estará preparado para testar e implementar o seu contrato ERC20 utilizando o Foundry e as interfaces do OpenZeppelin. Esse processo é crucial para garantir a segurança e o correto funcionamento do seu token na rede Ethereum. Desejo boa sorte em seu projeto!
Rodando os testes
Para executar todos os testes do seu projeto, utilize o seguinte comando:
forge test
Caso queira rodar os testes de um contrato específico:
forge test --match-contract MyTokenTest
Para executar um teste específico, utilize o comando abaixo, substituindo "testMint" pelo nome do teste desejado:
forge test --match-test testMint
Para rodar os testes e gerar um relatório de consumo de gas, utilize o seguinte comando:
forge test --gas-report
O relatório de consumo de gas fornecerá informações valiosas sobre o custo em gas de cada função testada, como mostrado na imagem abaixo:
Essas ferramentas de teste e análise de gas são essenciais para garantir a qualidade e a eficiência do seu contrato ERC20. Utilize-as para verificar o desempenho do seu contrato e garantir que ele funcione conforme o esperado na rede Ethereum.
Referências
- ERC-20: O que é e como funciona esse tipo de token?
- ERC-20: Token Standard
- ERC 20
- Testes Foundry
- Testando ERC-20 com Foundry
Essas referências fornecem informações valiosas sobre o padrão ERC-20, detalhes técnicos, implementação de contratos e testes com o Foundry. Recomendamos explorá-las para aprofundar seus conhecimentos e garantir uma melhor compreensão do assunto.
Conclusão
Essa foi uma explicação simplificada do que é um token ERC-20 e como implementá-lo e testá-lo utilizando o Foundry e os padrões da OpenZeppelin.
Se este conteúdo foi útil e te ajudou de alguma forma, ficaríamos muito agradecidos se você deixasse um like para ajudar a compartilhar esse conhecimento com mais pessoas.
Link do repositório
Para mais detalhes e o código fonte do exemplo, acesse o repositório no GitHub: Foundry ERC20 Implementation
Vamos trocar uma ideia?
Fique à vontade para me contatar para trocarmos uma ideia ou tirar dúvidas.
Você pode me encontrar no LinkedIn: viniblack.
Será um prazer conversar contigo!
Top comments (0)