Contente

  • Introdução

  • Qual é o padrão ERC-20?

  • Uma breve visão geral dos tokens Ethereum

  • Como são criados os tokens ERC-20?

  • Quais são as funções dos tokens ERC-20?

    • Moedas estáveis

    • Tokens de segurança

    • Tokens utilitários

  • É possível extrair tokens ERC-20?

  • Vantagens e desvantagens dos tokens ERC-20

    • Benefícios dos tokens ERC-20

    • Desvantagens dos tokens ERC-20

  • ERC-20, ERC-1155, ERC-223, ERC-721 - qual é a diferença?

  • Retomar


Introdução

Ethereum foi fundada em 2014 por Vitalik Buterin e pretendia ser uma plataforma de código aberto para execução de aplicativos descentralizados (DApps). Ao criar o novo blockchain, Buterin levou em consideração o problema da flexibilidade insuficiente do protocolo Bitcoin.

Desde o seu lançamento, o blockchain Ethereum atraiu muitos desenvolvedores, empresas e empreendedores e deu início a uma indústria crescente de usuários que executam contratos inteligentes e aplicativos distribuídos.

Neste artigo veremos o padrão ERC-20 – a base para a criação de tokens. O padrão foi desenvolvido especificamente para a rede Ethereum, mas conseguiu inspirar outros padrões de blockchain, como o BEP-2 Binance Chain.


Qual é o padrão ERC-20?

ERC in Ethereum é uma solicitação de propostas para melhorar a rede (Inglês: Ethereum Request for Comments). ERCs são documentos técnicos que descrevem os padrões de programação no Ethereum. Estas não devem ser confundidas com as Propostas de Melhoria do Ethereum (EIPs), que, como os BIPs do Bitcoin, propõem melhorias no próprio protocolo. O objetivo do ERC é estabelecer acordos que facilitem a interação entre aplicações e contratos.

O ERC-20 foi criado em 2015 por Vitalik Buterin e Fabian Vogelsteller com o objetivo de oferecer um formato relativamente simples para criação de tokens no Ethereum. Ao confiar em um padrão existente, os desenvolvedores economizam tempo e esforço. Com o ERC-20, eles podem criar novos tokens sem se preocupar com compatibilidade e segurança.

Os novos tokens ERC-20 serão compatíveis com todos os serviços e softwares que suportam este padrão (carteiras de software, carteiras de hardware, exchanges, etc.).

De referir que o EIP (nomeadamente EIP-20) foi desenvolvido com base na norma ERC-20. Isso aconteceu vários anos após o lançamento devido ao uso generalizado do padrão. Mas mesmo anos depois, o nome “ERC-20” ainda é relevante.


Uma breve visão geral dos tokens Ethereum

Ao contrário do ETH (criptomoeda nativa do Ethereum), os tokens ERC-20 não são armazenados em contas. Eles existem apenas dentro do contrato, que é uma espécie de banco de dados autônomo. O contrato define os termos dos tokens (por exemplo, nome, símbolo, divisibilidade). Ele também contém uma lista que combina os saldos dos usuários com seus endereços Ethereum.

Para movimentar tokens, os usuários devem enviar uma transação ao contrato solicitando que uma parte de seu saldo seja transferida para outro local. Por exemplo, se Alice quiser enviar a Bob 5.000 tokens da BinanceAcademy, ela executará uma função dentro do contrato inteligente solicitando que ele faça isso.


Пользователи, взаимодействующие со смарт-контрактом


Sua solicitação é colocada dentro de uma transação Ethereum aparentemente normal, que cobra 0 ETH do contrato inteligente. A solicitação é adicionada a um campo adicional na transação, que especifica exatamente o que Alice deseja fazer: no nosso caso, transferir os tokens para Bob.

Mesmo que ela não envie Ether, ela ainda terá que pagar uma taxa, denominada em Ether, para que sua transação seja adicionada ao bloco. Caso ela não possua ETH, ela precisará adquiri-lo antes de realizar a transação.

Aqui está um exemplo real de tal processo no Etherscan: alguém faz uma solicitação de contrato em BUSD. Vemos que os tokens foram transferidos e a taxa foi paga, apesar de seu valor ser 0 ETH.

Podemos agora aprofundar a estrutura do contrato ERC-20. 


Como são criados os tokens ERC-20?


Иллюстрация создания токена ERC-20


Para ser compatível com ERC-20, seu contrato deve incluir seis funções obrigatórias: totalSupply, balanceOf, transfer, transferFrom, aprovar e subsídio. Além disso, você pode adicionar funções adicionais, como nome, símbolo e decimal. Pelos nomes das funções você pode entender sua finalidade. A seguir veremos cada um deles com mais detalhes. 

Abaixo as funções são apresentadas conforme são escritas na linguagem Solidity criada para Ethereum.


fornecimento total

função totalSupply() public view retorna (uint256)

Quando solicitado pelo usuário, a função acima mostra o número total de tokens no contrato.


saldoDe

função balanceOf(endereço _proprietário) exibição pública retorna (saldo uint256)

Ao contrário de totalSupply, a função balanceOf usa um parâmetro (endereço). Mostra o saldo dos tokens de endereço mediante solicitação. Lembre-se de que as contas Ethereum são públicas, portanto você pode consultar o saldo de qualquer usuário, desde que saiba seu endereço.


tradução

função transfer(endereço _para, uint256 _valor) public retorna (bool sucesso)

A função de transferência transfere tokens de um usuário para outro. Para utilizá-lo, você precisa especificar o endereço do destinatário e o valor da transferência.

A função de transferência dispara um evento (no nosso caso, transferência de evento), que diz ao blockchain para incluir uma referência a ele.


transferirDe

função transferFrom(endereço _de, endereço _para, valor uint256) pública retorna (bool sucesso)

A função transferFrom é uma alternativa mais conveniente à função de transferência, que oferece maior programabilidade em aplicações descentralizadas. Assim como a transferência, é utilizado para movimentar tokens, mas eles não pertencem necessariamente à pessoa que acessa o contrato. 

Em outras palavras, você pode autorizar outra pessoa ou outro contrato a transferir fundos em seu nome. Outro caso de uso envolve o pagamento automático de serviços baseados em assinatura, caso você não queira enviar pagamentos manualmente todos os dias/semanas/mês. O programa fará isso por você.

Esta função dispara o mesmo evento que a transferência.


aprovar

função aprovar(endereço _gastador, uint256 _valor) público retorna (bool sucesso)

Aprovar é outra função útil do ponto de vista da programabilidade. Com sua ajuda, você pode limitar o número de tokens que um contrato inteligente pode retirar do seu saldo. Na sua ausência, existe o risco de o contrato ser utilizado indevidamente: alguém pode explorá-lo para seus próprios fins ou roubar todos os seus fundos. 

Vejamos um exemplo com um modelo de assinatura. Digamos que você tenha muitos BinanceAcademyTokens e queira configurar pagamentos semanais para seu serviço de streaming DApp. Você já estuda o conteúdo da Binance Academy dia e noite e não quer perder tempo criando manualmente uma transação toda semana.

Digamos que você tenha um grande estoque de BinanceAcademyTokens, excedendo em muito sua taxa de assinatura. Para evitar que o serviço DApp o esgote, você pode definir um limite usando a função de aprovação. Por exemplo, sua assinatura custa um BinanceAcademyToken por semana. Se você limitar o valor máximo a vinte tokens, a assinatura poderá ser paga automaticamente em cinco meses.

Na pior das hipóteses, se o DApp tentar retirar todos os seus fundos ou ocorrer um erro inesperado, você perderá apenas vinte tokens. Esta opção não elimina possíveis problemas, mas protege você de perder todos os seus bens.

Quando a função de aprovação é chamada, o evento de aprovação é acionado. Assim como o evento de transferência, ele grava dados no blockchain.


mesada

função subsídio(endereço _proprietário, endereço _gastador) exibição pública retorna (uint256 restantes)

A função de subsídio pode ser usada em conjunto com a função de aprovação. Depois de conceder permissão ao contrato para gerenciar seus tokens, você pode usar esse recurso para verificar quantos tokens ele ainda pode dar baixa. Por exemplo, se sua assinatura usou doze dos vinte tokens permitidos, quando você chamar a função de subsídio, o número oito deverá ser exibido.


Recursos adicionais

Os recursos que discutimos acima são obrigatórios. O nome, o símbolo e as funções decimais são opcionais, mas podem melhorar seu contrato ERC-20. Eles permitem adicionar um nome claro, definir um símbolo (por exemplo, ETH, BTC, BNB) e especificar em quantas casas decimais os tokens podem ser divididos. Por exemplo, os tokens que são utilizados como moeda podem beneficiar mais de uma maior divisibilidade do que um token que representa propriedade.


Você pode ver esses elementos em um contrato real neste exemplo no GitHub.


Quais são as funções dos tokens ERC-20?


Иллюстрация различных вариантов использования токенов ERC-20


Se combinarmos todos os recursos acima, obteremos um contrato ERC-20. Ele pode ser usado para consultar o fornecimento total de tokens, verificar saldos, transferir fundos e conceder permissões a outros DApps para gerenciar tokens.

A principal vantagem dos tokens ERC-20 é a flexibilidade. Usando-os, você também pode implementar recursos adicionais e definir determinados parâmetros de acordo com suas necessidades.


Moedas estáveis

Stablecoins (tokens atrelados a moedas fiduciárias) geralmente usam o padrão de token ERC-20. Um exemplo é a transação do contrato BUSD que mencionamos anteriormente. A maioria das stablecoins está disponível neste formato.

O emissor de uma stablecoin lastreada em moeda fiduciária mantém reservas em euros, dólares, etc. Eles então criam um token para cada unidade de sua reserva. Isso significa que se US$ 10.000 estivessem no cofre, o emissor poderia criar 10.000 tokens, cada um valendo US$ 1.

Isso é muito fácil de implementar no Ethereum. O emissor lança um contrato com 10.000 tokens. Eles serão então distribuídos aos usuários com a perspectiva de resgate adicional em moeda fiduciária. 

Os usuários podem usar tokens para pagar por bens e serviços ou usá-los em aplicativos DApp. Além disso, os usuários têm a opção de solicitar a troca imediata de tokens do emissor. Nesse caso, o emissor queima os tokens devolvidos (eles ficam indisponíveis) e retira o valor equivalente em moeda fiduciária de suas reservas.

O contrato que rege este processo, como já dissemos, é relativamente simples. No entanto, o lançamento de uma stablecoin envolve muitos fatores externos, como logística, conformidade legal e regulatória, etc.


Tokens de segurança

Os tokens de segurança são semelhantes aos stablecoins. Ao nível do contrato, podem ser considerados idênticos porque funcionam da mesma forma. Mas há uma diferença significativa para o emissor. Os tokens de títulos representam títulos (ações, títulos ou ativos físicos). Muitas vezes (embora nem sempre) dão ao titular algum interesse num negócio ou produto.


Tokens utilitários

Os tokens utilitários são de longe os tipos mais comuns de tokens. Ao contrário das duas opções anteriores, elas não são suportadas por nada. Se os tokens garantidos por ativos são como ações de companhias aéreas, os tokens utilitários são mais parecidos com um programa de fidelidade de passageiro frequente: eles servem a um propósito, mas não fornecem outro valor. Os tokens utilitários podem ter uma grande variedade de usos. Assim, eles podem atuar como moeda do jogo, combustível para aplicações descentralizadas, pontos de fidelidade e muito mais.


➠ Pronto para começar com criptomoeda? Compre Éter na Binance!


É possível extrair tokens ERC-20?

Os usuários podem minerar éter (ETH), mas não tokens – tokens são criados. Quando o contrato é lançado, os desenvolvedores distribuem tokens de acordo com os planos e roteiros existentes.

Isso normalmente é feito por meio de uma oferta inicial de moeda (ICO), uma oferta inicial de troca (IEO) ou uma oferta de token de segurança (STO). Você pode encontrar abreviações diferentes, mas em essência elas são todas bem próximas. Os investidores enviam Ether para o endereço do contrato e recebem novos tokens em troca. Os fundos recebidos são utilizados para financiar o desenvolvimento do projeto. Os usuários esperam poder usar seus tokens (imediatamente ou mais tarde) ou revendê-los com lucro à medida que o projeto se desenvolve.

O processo de distribuição de tokens não precisa de automação. Muitos eventos de crowdfunding permitem que você pague em diversas moedas digitais (como BNB, BTC, ETH e USDT). Em seguida, de acordo com o valor pago, os saldos dos usuários nos endereços especificados são repostos.


Vantagens e desvantagens dos tokens ERC-20

Benefícios dos tokens ERC-20

Intercambialidade

As moedas Fiat são fungíveis porque cada unidade é indistinguível de outra unidade equivalente. Se você possui o BinanceAcademyToken, não importa qual token específico você possui. Esses tokens podem ser vendidos a outros usuários e permanecerão funcionalmente idênticos, como dinheiro ou ouro.

Isso é muito conveniente se você quiser usar o token como moeda. Neste caso, não são necessárias unidades individuais com características distintivas que as tornem não intercambiáveis. As diferenças podem fazer com que alguns tokens se tornem mais (ou menos) valiosos do que outros, o que por sua vez irá perturbar a sua função principal.


Taxa flutuante

Conforme estabelecemos na seção anterior, os tokens ERC-20 são altamente personalizáveis ​​e podem ser adaptados para uma ampla variedade de usos. Assim, por exemplo, eles podem ser usados ​​como moeda de jogo, em programas de fidelidade, como itens colecionáveis ​​digitais ou até mesmo como obras de arte e direitos de propriedade.


A popularidade do ERC-20 na indústria de criptomoedas leva ao uso deste protocolo como base para a criação de novos tokens. É por isso que existem muitas exchanges, carteiras e contratos inteligentes já compatíveis com tokens recém-lançados. Além disso, contam com amplo suporte ao desenvolvedor e possuem toda a documentação necessária. 


Desvantagens dos tokens ERC-20

Escalabilidade

Como muitas redes de criptomoedas, o Ethereum não está imune aos problemas que surgem à medida que a rede cresce. A rede está atualmente enfrentando problemas de escalabilidade, portanto, tentar enviar uma transação durante horários de pico resulta em altas taxas e atrasos. Se você iniciar um token ERC-20 quando a rede estiver congestionada, a usabilidade do token poderá ser afetada.

Não é apenas o Ethereum que enfrenta esse problema. Os sistemas distribuídos precisam fazer concessões para alcançar a segurança. A comunidade planeja resolver esse problema ao migrar para o Ethereum 2.0, que implementará as atualizações Ethereum Plasma e Ethereum Casper.

Saiba mais sobre problemas de escalabilidade em nosso artigo Escalabilidade do Blockchain – Sidechains e canais de pagamento.


Fraude

Embora isso não seja um problema da tecnologia em si, a facilidade de lançamento de um token pode ser considerada uma desvantagem. Criar um token ERC-20 simples requer esforço mínimo, o que significa que qualquer pessoa pode fazê-lo, inclusive para fins criminosos.

Portanto, você precisa ter muito cuidado com o que investe. Existem vários esquemas Ponzi e de pirâmide disfarçados de projetos de blockchain. Antes de investir, estude tudo com atenção para decidir por si mesmo se o projeto é confiável.

 

ERC-20, ERC-1155, ERC-223, ERC-721 - Qual é a diferença?

O ERC-20 foi o primeiro (e ainda continua sendo o mais popular) padrão de token Ethereum, mas está longe de ser o único. Ao longo dos anos, surgiram muitos outros protocolos que oferecem melhorias ao ERC-20 ou tentam atingir outros objetivos.

Alguns dos padrões menos comuns são usados ​​para criar tokens não fungíveis (NFTs). Dependendo da finalidade de uso, você pode precisar de tokens exclusivos com atributos diferentes. Se quiser tokenizar uma obra de arte única, um ativo de jogo, etc., você pode usar um desses tipos de contrato.

Por exemplo, o padrão ERC-721 foi usado para os extremamente populares DApp CryptoKitties. Tal contrato fornece aos usuários uma API para criar seus próprios tokens não fungíveis e codificar metadados (imagens, descrições, etc.). 

O padrão ERC-1155 pode ser considerado uma melhoria em relação ao ERC-721 e também ao ERC-20. Este padrão oferece suporte a tokens fungíveis e não fungíveis em um único contrato.

Outras opções, como ERC-223 ou ERC-621, visam melhorar a usabilidade. O ERC-223 implementa precauções para evitar a transferência acidental de tokens. O ERC-621 oferece recursos adicionais para aumentar e diminuir o fornecimento de tokens.

Para saber mais sobre NFTs, não deixe de conferir o Guia para Criptomoedas Colecionáveis ​​e Tokens Não Fungíveis (NFTs).


Retomar

O padrão ERC-20 dominou o espaço de ativos criptográficos por muitos anos e isso não é surpresa. Qualquer pessoa pode implantar facilmente um contrato simples para diversos fins (tokens utilitários, stablecoins, etc.). No entanto, o ERC-20 carece de alguns recursos presentes em outros padrões. E embora não haja uma resposta exata para a questão de saber se outros tipos de contratos irão substituí-lo no futuro ou não.