Conteúdo
Introdução
O que significa o padrão ERC-20?
Resumo rápido sobre tokens Ethereum
Como os tokens ERC-20 são criados?
Quais são os benefícios dos tokens ERC-20?
Stablecoin
Token de segurança
Token utilitário
Os tokens ERC-20 podem ser minerados?
Prós e contras dos tokens ERC-20
Prós dos tokens ERC-20
Contras dos tokens ERC-20
ERC-20, ERC-1155, ERC-223, ERC-721 – qual é a diferença?
Conclusão
Introdução
Ethereum foi fundado por Vitalik Buterin em 2014, posicionando-se como uma plataforma open-source para lançar aplicações descentralizadas ou DApps. Muitas das motivações de Buterin para criar uma nova blockchain vieram da falta de flexibilidade nos protocolos do Bitcoin.
Desde o seu surgimento, a blockchain do Ethereum atraiu a atenção de desenvolvedores, empresas e empreendedores, criando uma indústria em expansão na qual os usuários lançam smart contracts e aplicativos distribuídos.
Neste artigo, veremos o padrão ERC-20, uma estrutura importante para criar tokens. Embora exista especificamente na rede Ethereum, essa estrutura também inspirou outros padrões de blockchain, como o BEP-2 na Binance Chain.
O que é o padrão ERC-20?
No Ethereum, ERC é a sigla de Ethereum Request for Comments. Trata-se de um documento técnico que descreve um padrão de programação no Ethereum. O ERC é diferente da Ethereum Improvement Proposal (EIP), que, assim como o BIP do Bitcoin, serve para sugerir melhorias ao próprio protocolo. Por outro lado, o ERC tem como objetivo criar convenções que facilitam para aplicativos e contratos interagirem entre si.
Criado por Vitalik Buterin e Fabian Vogelsteller em 2015, o ERC-20 propõe um formato relativamente simples para tokens baseados em Ethereum. Seguindo essa estrutura geral, os desenvolvedores não precisam gastar tempo começando do zero. Em vez disso, podem construir em cima de uma base já usada em toda a rede.
Novos tokens ERC-20 emitidos automaticamente podem ser operados com serviços e softwares que suportam o padrão ERC-20 (software wallets, hardware wallets, exchanges, etc.).
Vale notar que o padrão ERC-20 foi desenvolvido em EIP (especialmente, EIP-20). Isso aconteceu alguns anos após a proposta original, devido ao uso difundido. Ainda assim, mesmo anos depois, o nome “ERC-20” continua sendo usado.
Resumo rápido de tokens Ethereum
Ao contrário do ETH (a criptomoeda nativa do Ethereum), tokens ERC-20 não são de propriedade de uma conta. Esses tokens existem apenas dentro de contratos, como se fossem um banco de dados independente. O contrato define as regras do token (como Nome, símbolo, se é divisível) e armazena uma lista que mapeia os saldos dos usuários para seus respectivos endereços no Ethereum.
Para transferir tokens, o usuário precisa enviar uma transação para o contrato e pedir que ele aloque parte do saldo para outro lugar. Por exemplo, se Alice quiser enviar 5.000 BinanceAcademyToken para Bob, ela chama uma função dentro do smart contract BinanceAcademyToken que solicita ao contrato para fazer a transferência mencionada.

A função que Alice usa aparece como uma transação Ethereum comum, pagando 0 ETH ao contrato do token. A função fica em um campo adicional da transação, indicando o que Alice quer fazer – neste caso, transferir tokens para Bob.
Mesmo que Alice não envie ether, ela ainda precisa pagar uma taxa nessa moeda para que a transação seja incluída no bloco. Se ela não tiver ETH, precisa providenciá-lo antes de transferir os tokens.
Aqui vai um exemplo real do caso acima no Etherscan: alguém faz uma chamada para o contrato BUSD. Você pode ver os tokens transferidos, e que as taxas foram pagas, mesmo que o campo Valor mostre que 0 ETH foi enviado.
Agora que conhecemos um pouco dos conceitos básicos, vamos nos aprofundar para entender a estrutura típica de um contrato ERC-20.
Como os tokens ERC-20 são criados?

Para estar em conformidade com o ERC-20, seu contrato deve incluir seis funções obrigatórias: totalSupply, balanceOf, transfer, transferFrom, approve e allowance. Além disso, você pode definir funções opcionais, como name, symbol e decimal. Pelo nome, deve ficar claro o que essas funções fazem. Se não ficar, não se preocupe – vamos destrinchar uma por uma.
A seguir estão as funções que aparecem na linguagem Solidity, criada especificamente para o Ethereum.
totalSupply
function totalSupply() public view returns (uint256)Quando chamada por um usuário, a função acima retorna a oferta total de tokens armazenada pelo contrato.
balanceOf
function balanceOf(address _owner) public view returns (uint256 balance)Diferente de totalSupply, balanceOf recebe um parâmetro (um endereço). Ao ser chamada, essa função retorna o saldo da posse desse endereço no token. Lembre-se de que as contas na rede Ethereum são públicas, então você pode consultar o saldo de qualquer usuário desde que conheça o endereço.
transfer
function transfer(address _to, uint256 _value) public returns (bool success)a função transfer faz exatamente o que o nome sugere: transfere tokens de um usuário para outro. Aqui, você fornece o endereço para o qual quer enviar e a quantidade que será transferida.
Quando chamada, a transfer dispara algo chamado de evento (ou transfer event), que basicamente avisa a blockchain para registrar uma referência.
transferFrom
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)A função transferFrom é uma alternativa à transfer, permitindo um pouco mais de programação em aplicações descentralizadas. Assim como a transfer, essa função é usada para mover tokens, mas os tokens em questão não precisam ser de propriedade da parte que está chamando o contrato.
Em outras palavras, você pode autorizar alguém – ou outro contrato – a transferir fundos em seu nome. No mundo real, isso pode ser útil em pagamentos por serviços baseados em assinatura, em que você não quer enviar manualmente pagamentos todos os dias/semana/mês. Em vez disso, um programa fará isso por você.
Essa função também dispara o mesmo evento que transfer.
approve
function approve(address _spender, uint256 _value) public returns (bool success)approve é outra função útil do ponto de vista de programação. Com ela, você pode limitar a quantidade de tokens que um smart contract pode retirar do seu saldo. Sem essa função, você corre o risco de perder todos os fundos (ou de ser explorado) caso o contrato falhe.
Vamos usar como exemplo o modelo de assinatura mencionado anteriormente. Suponha que você tenha uma grande quantidade de BinanceAcademyToken e queira configurar pagamentos recorrentes semanais para uma DApp de streaming. Você está ocupado lendo o conteúdo da Binance Academy de dia e de noite, então não quer gastar tempo toda semana criando transações manualmente.
Você tem um saldo de BinanceAcademyToken grande, muito além do necessário para pagar as taxas de assinatura. Para evitar que a DApp gaste todo o saldo, você pode definir um limite com approve. Suponha que sua taxa de assinatura seja de um BinanceAcademyToken por semana. Se você limitar o valor aprovado em vinte tokens, sua assinatura poderá ser paga automaticamente por cinco meses.
O pior que pode acontecer é, se a DApp tentar retirar todo o seu dinheiro, ou se um bug for encontrado, você só perderá vinte tokens. Pode não ser ideal, mas certamente é melhor do que perder todos os seus ativos.
Quando chamada, approve dispara o evento approval. Assim como o evento transfer, este evento escreve dados na blockchain.
allowance
function allowance(address _owner, address _spender) public view returns (uint256 remaining)allowance pode ser usada junto com approve. Se o contrato tiver permissão para gerenciar seus tokens, você pode usar essa função para verificar quanto ainda pode ser retirado. Por exemplo, se sua assinatura já usou doze dos vinte tokens que você aprovou, chamar allowance retornará oito no total.
Funções opcionais
As funções que discutimos acima são obrigatórias. Por outro lado, as funções name, symbol e decimal não precisam ser incluídas, mas podem deixar seu contrato ERC-20 um pouco mais bonito. Cada uma dessas funções permite adicionar um nome legível por humanos, definir um símbolo (como ETH, BTC, BNB) e determinar quantas casas decimais podem ser usadas para dividir os tokens. Por exemplo, um token usado como moeda pode se beneficiar mais se for divisível do que um token que representa a propriedade de um ativo.
Veja o exemplo a seguir no GitHub para ver esses elementos no contrato real.
Quais são as vantagens dos tokens ERC-20?

Combinando todas as funções acima, obtemos um contrato ERC-20. Podemos solicitar a oferta total, verificar o saldo, transferir fundos e conceder permissões para outras DApps gerenciarem nossos tokens.
O maior apelo dos tokens ERC-20 é a flexibilidade. A convenção estabelecida não limita o desenvolvimento; portanto, as partes podem implementar recursos adicionais e definir parâmetros personalizados de acordo com suas necessidades.
Stablecoin
Stablecoin (token atrelado a uma moeda fiduciária) frequentemente usa o padrão de token ERC-20. A transação para o contrato BUSD mencionado anteriormente é um exemplo, e a maioria das grandes stablecoins também está disponível nesse formato.
Para stablecoins suportadas por fiat, o emissor mantém reservas de euros, dólares etc. Então, para cada unidade nessas reservas, eles emitem tokens. Isso significa que, se $10.000 estiverem trancados no cofre, o emissor pode criar 10.000 tokens, cada um podendo ser trocado por $1.
Tecnicamente, isso é bem fácil de implementar no Ethereum. O emissor basta lançar um contrato com 10.000 tokens. Depois, eles distribuem esses tokens aos usuários com a promessa de que, mais tarde, eles poderão ser resgatados por uma quantidade proporcional de moeda fiduciária.
Os usuários podem fazer várias coisas com esses tokens – podem comprar bens e serviços, ou usá-los em DApps. Ou podem solicitar que o emissor faça a troca imediatamente. Nesse caso, o emissor queima os tokens devolvidos (fazendo-os não utilizáveis) e retira fiat da mesma forma de suas reservas.
O contrato que controla esse sistema, como mencionado acima, é relativamente simples. No entanto, lançar uma stablecoin exige muito trabalho do lado externo, como logística, conformidade com as regulamentações do governo local, etc.
Token de segurança
Token de segurança é parecido com stablecoin. No nível do contrato, os dois até podem ser idênticos, pois funcionam da mesma forma. A diferença aparece no nível do emissor. Tokens de segurança representam títulos, como ações, títulos de dívida ou ativos físicos. Frequentemente (embora nem sempre), esse tipo de token fornece algum tipo de “participação” na forma de negócio ou bens ao seu proprietário.
Token utilitário
Token utilitário talvez seja o tipo de token mais comum encontrado atualmente. Diferente dos dois tipos anteriores, esse tipo não é suportado por nada. Se o token suportado por ativos é descrito como ações em uma companhia aérea, então o token utilitário, como um programa frequent-flyer: ele tem uma função, mas não possui valor externo. Tokens utilitários servem para muitos usos: funcionam como moeda em jogos, combustível para aplicações descentralizadas, pontos de fidelidade e muito mais.
➠ Quer ter criptomoeda? Compre ether na Binance!
Dá para minerar tokens ERC-20?
Você pode minerar ether (ETH), mas tokens não podem ser minerados – esses tokens são emitidos para criar novos. Quando o contrato é lançado, os desenvolvedores distribuem a oferta conforme o plano e a roadmap.
Normalmente, a distribuição é feita por meio de Initial Coin Offering (ICO), Initial Exchange Offering (IEO) ou Security Token Offering (STO). Você pode ter ouvido falar dessas variações de acrônimos, mas o conceito é bem parecido. Investidores enviam ether para o endereço do contrato e, em troca, recebem novos tokens. O dinheiro arrecadado é usado para financiar o desenvolvimento adicional do projeto. Espera-se que os usuários possam usar seus tokens (imediatamente ou mais tarde) ou revendê-los para obter lucro à medida que o projeto evolui.
A distribuição de tokens não precisa ser automatizada. Muitos financiamentos coletivos permitem que os usuários paguem com várias moedas digitais diferentes (como BNB, BTC, ETH e USDT). Os saldos de cada uma são então alocados nos endereços fornecidos pelo próprio usuário.
Prós e contras de tokens ERC-20
Prós de tokens ERC-20
Compensam
Tokens ERC-20 são compensáveis – cada unidade pode ser trocada por outra. Se você tiver BinanceAcademyToken, não importa qual token você possui: você pode trocá-lo pelo BinanceAcademyToken de outra pessoa, e esses tokens permanecem funcionalmente idênticos, como dinheiro ou ouro.
Isso é ideal se seu token pretende funcionar como uma espécie de moeda. Você não quer que cada unidade tenha características diferentes, pois isso a tornaria menos compensável. A falta de compensabilidade pode fazer com que alguns tokens sejam mais – ou menos – valiosos do que outros.
Flexível
Como já discutimos na seção anterior, tokens ERC-20 podem ser adaptados facilmente e planejados para diferentes aplicações. Por exemplo, podem ser usados como moeda em jogos, em programas de pontos de fidelidade, como uma coleção digital ou até para representar direitos de arte e propriedade.
Popular
A popularidade dos ERC-20 na indústria de cripto é um motivo bem forte para usá-lo como blueprint. Muitas exchanges, carteiras e smart contracts já são compatíveis com os novos tokens ERC-20. Além disso, há muito suporte e documentação para desenvolvedores.
Contras de tokens ERC-20
Escalabilidade
Assim como muitas outras redes de criptomoedas, o Ethereum não é imune à dor que aparece quando ele cresce. Na situação atual, a rede enfrenta problemas de escalabilidade – tentar enviar transações em horários de pico resulta em custos altos e atrasos. Se você lançar um token ERC-20 quando a rede estiver congestionada, sua utilidade pode ser afetada.
Esse problema não existe apenas no Ethereum. Pelo contrário, trata-se de uma troca necessária para obter um sistema seguro e distribuído. A comunidade pretende resolver isso migrando para o Ethereum 2.0, que implementará melhorias como Ethereum Plasma e Ethereum Casper.
Saiba mais sobre os problemas de escalabilidade em Blockchain Scalability: Sidechains e Payment Channels.
Fraude
Embora não seja um problema relacionado à tecnologia em si, a facilidade de lançar tokens pode ser vista como uma desvantagem. É bem fácil criar um token ERC-20 simples, o que significa que qualquer pessoa pode fazer isso – com boas ou más intenções.
Por isso, você precisa ter cuidado com seus investimentos. Existem vários esquemas de pirâmide e Ponzi que se disfarçam de projetos blockchain. Faça sua própria pesquisa antes de investir para concluir se a oportunidade que você viu é legítima ou um golpe.
ERC-20, ERC-1155, ERC-223, ERC-721 – qual a diferença?
O ERC-20 é o primeiro padrão de token do Ethereum (e, até hoje, o mais popular), mas não significa que seja o único. Ao longo dos anos, muitos outros padrões surgiram, seja propondo melhorias ao ERC-20, seja com objetivos totalmente diferentes.
Alguns padrões menos comuns são os usados em non-fungible token (NFT). Às vezes, também compensa ter tokens únicos com atributos diferentes. Se você quer tokenizar obras de arte, ativos de games etc., um desses tipos de contrato pode ser mais adequado.
O padrão ERC-721, por exemplo, é usado em um DApp muito popular chamado CryptoKitties. Esse tipo de contrato fornece uma API para que os usuários criem seus próprios tokens não-compensáveis, codificando metadados (imagem, descrição etc.).
O padrão ERC-1155 pode ser visto como uma melhoria do ERC-721 e do ERC-20. Ele cria um padrão que suporta tokens compensáveis e não-compensáveis no mesmo contrato.
Outras opções como ERC-223 ou ERC-621 têm como objetivo melhorar o uso. O ERC-223 aplica proteções para impedir transferências acidentais de tokens. O ERC-621 adiciona funções extras para aumentar e reduzir a oferta de tokens.
Para uma discussão mais aprofundada sobre NFT, certifique-se de conferir o Guia de Crypto Collectibles e Tokens Non-Fungible (NFT).
Conclusão
O padrão ERC-20 dominou o mundo dos criptoativos por muitos anos; faz todo sentido que assim tenha sido. Com relativa facilidade, qualquer pessoa pode usar um contrato simples para atender a diferentes usos (tokens utilitários, stablecoins, etc.). Assim, pode-se dizer que o ERC-20 ainda é melhor do que outros padrões de token. Vamos ver se o próximo tipo de contrato poderá substituí-lo.
