O que é ERC-20?
ERC-20 é um padrão de tokens da Ethereum que define uma interface comum para ativos cripto fungíveis criados por meio de contratos inteligentes.Fungível significa que unidades iguais do mesmo token são intercambiáveis de acordo com as regras contábeis do contrato do token.Por exemplo, uma unidade inteira de um token ERC-20 comum tem as mesmas propriedades definidas pelo contrato que outra unidade inteira do mesmo token.A especificação oficial do ERC-20 define funções para verificar a oferta e os saldos de tokens, transferi-los e autorizar terceiros a gastá-los.
Ela também define eventos padronizados que permitem a carteiras e aplicativos observar transferências e alterações de aprovação.O ERC-20 é um padrão Final Ethereum Request for Comments e continua sendo a principal base técnica para tokens fungíveis em ecossistemas compatíveis com Ethereum.O padrão melhora a interoperabilidade, pois carteiras, contratos inteligentes, exploradores de blockchain, sistemas de custódia e outros aplicativos cripto podem usar os mesmos métodos básicos para vários tokens.O ERC-20 não determina o preço, a política de oferta, a classificação legal, a utilidade, a garantia de colateral, os direitos de governança ou a qualidade de investimento de um token.O que significa ERC?
ERC significa Ethereum Request for Comments.Um ERC descreve um padrão ou convenção no nível de aplicativo que desenvolvedores podem implementar em contratos inteligentes da Ethereum e em softwares relacionados.O número 20 identifica a proposta que introduziu essa interface de tokens fungíveis.Ele não se refere ao número de tokens, às casas decimais, às redes compatíveis ou às funções do contrato.O ERC-20 também é frequentemente chamado de EIP-20, pois o documento faz parte do processo de Ethereum Improvement Proposals.Por que o ERC-20 foi criado?
Antes de existir um padrão compartilhado para tokens fungíveis, cada contrato inteligente podia oferecer nomes e regras diferentes para consultas de saldo, transferências e gastos delegados.Uma carteira precisaria de código de integração personalizado para cada token.Um aplicativo descentralizado não poderia presumir com segurança que dois contratos de token ofereciam suporte às mesmas operações.O ERC-20 criou uma interface mínima compartilhada que permite a um aplicativo interagir com vários tokens fungíveis.Essa interoperabilidade ajudou a tornar saldos de tokens úteis em pagamentos, governança, empréstimos, sistemas de liquidez, vaults, jogos, programas de recompensas e outros aplicativos cripto.O padrão permanece deliberadamente limitado para que os desenvolvedores possam adicionar comportamentos especializados sem alterar sua interface básica.Como funciona o ERC-20
Um token ERC-20 é controlado por um contrato inteligente implantado na Ethereum ou em uma blockchain compatível.O contrato registra quantas unidades de token cada endereço possui.Também registra a oferta total de tokens e as permissões de gasto concedidas pelos proprietários a terceiros.Quando ocorre uma transferência válida, o contrato reduz o saldo do remetente e aumenta o saldo do destinatário.O contrato emite um evento
Quando um proprietário aprova um gastador, o contrato atualiza uma permissão e emite um evento
Principais funções do ERC-20
A interface ERC-20 obrigatória inclui seis funções principais.São elas:
O padrão também descreve as funções opcionais de metadados
A função totalSupply
A função
Os usuários devem verificar as permissões de criação e os controles de oferta, em vez de usar
A função balanceOf
A função
A função transfer
A função
Uma transferência bem-sucedida deve emitir um evento
Os aplicativos não devem presumir que o valor retornado nunca possa ser
Muitas implementações modernas revertem em caso de falha, em vez de retornar
A função approve
A função
Em vez disso, o contrato registra uma permissão que o gastador pode usar posteriormente por meio de
A função allowance
A função
O valor pode diminuir quando o gastador usa
A função transferFrom
A função
A função deve emitir um evento
Eventos ERC-20
O padrão ERC-20 define os eventos
O evento Transfer
O evento
A especificação ERC-20 exige que os tokens recém-criados gerem um evento
O evento Approval
O evento
Ela permite que o gastador use
Nome e símbolo ERC-20
As funções
O que são casas decimais ERC-20?
A função opcional
Dezoito casas decimais são comuns e são o padrão da implementação ERC-20 atual da OpenZeppelin, mas tokens ERC-20 podem usar outros valores.
Modelos de oferta ERC-20
O ERC-20 não determina como a oferta de tokens deve ser criada.Um token de oferta fixa pode emitir toda a sua oferta durante a implantação e não oferecer uma função posterior de criação.Um token com limite pode permitir a criação até que seja atingido um máximo definido no contrato.Um token sem limite pode permitir que uma conta autorizada ou um processo do protocolo crie unidades adicionais sem um máximo permanente.Um token algorítmico pode ajustar a oferta de acordo com condições programadas.Um token wrapped pode emitir unidades quando um ativo subjacente é depositado e queimar unidades quando esse ativo é sacado.O guia oficial de oferta ERC-20 explica que a lógica de oferta deve ser adicionada à implementação básica por meio de um mecanismo de criação adequado.
Criação de tokens ERC-20
A criação (mint) gera novas unidades de token e aumenta a oferta total.A interface ERC-20 básica não define uma função pública de mint nem especifica quem pode chamá-la.Um token pode restringir a criação a um administrador, processo de governança, bridge, sistema de staking, vault ou outra autoridade definida pelo contrato.Permissões de criação inseguras podem diluir os titulares existentes ou invalidar premissas de colateral.Os usuários devem verificar se a criação é possível, quem a controla, se há um limite e se a implementação pode ser atualizada.A alegação de que um token tem oferta fixa deve ser verificada na lógica do contrato implantado e nas permissões privilegiadas.Queima de tokens ERC-20
A queima destrói unidades de token e normalmente reduz a oferta total.O padrão básico não exige que os titulares tenham uma função pública de queima.Uma implementação pode permitir que os titulares queimem seus próprios tokens ou que gastadores aprovados queimem tokens usando uma permissão.Outros sistemas queimam tokens apenas durante resgates, liquidações ou operações do protocolo.Enviar tokens para um endereço inacessível nem sempre equivale a uma queima no contrato, pois a oferta total informada pode permanecer inalterada.Os usuários devem examinar a lógica de queima real do token antes de interpretar dados de oferta.Aprovações ERC-20 e condição de corrida de permissões
Alterar diretamente uma permissão existente, diferente de zero, para outro valor também diferente de zero pode criar um risco de ordenação de transações.Um gastador pode usar a permissão antiga antes de a nova aprovação do proprietário ser confirmada e, depois, receber a nova permissão.A especificação original ERC-20 observa que as interfaces de usuário devem primeiro definir a permissão como zero antes de atribuir outro valor diferente de zero.O próprio contrato do token não deve exigir essa sequência, pois isso reduziria a compatibilidade com aplicativos mais antigos.Reduzir ou aumentar uma permissão por meio de funções auxiliares cuidadosamente projetadas pode melhorar a usabilidade, mas o suporte varia entre as implementações.Os usuários devem evitar deixar permissões maiores do que as razoavelmente necessárias para um aplicativo.Aprovações ilimitadas de tokens
Uma aprovação ilimitada geralmente define a permissão como o valor máximo suportado por um inteiro sem sinal de 256 bits.Essa abordagem reduz a necessidade de enviar uma nova aprovação antes de cada interação.Ela também concede ao gastador autoridade contínua sobre os saldos atuais e futuros daquele token.Se o contrato gastador sofrer uma exploração, for atualizado de forma maliciosa ou estiver sob o controle de um administrador comprometido, a permissão poderá ser usada para retirar os tokens do titular.A conveniência deve ser ponderada em relação ao valor e à duração da permissão.Uma permissão limitada pode reduzir a perda máxima causada pelo comprometimento de um único gastador.O que é Permit ERC-2612?
ERC-2612 é uma extensão que permite ao proprietário de um token ERC-20 criar uma permissão por meio de uma mensagem assinada.Outra conta ou contrato inteligente pode enviar a permissão assinada on-chain.Isso pode combinar uma aprovação e uma ação no aplicativo em um único fluxo para o usuário.A especificação oficial de permit ERC-2612 adiciona
Riscos de assinatura de permit
Uma assinatura de permit pode autorizar o gasto de tokens mesmo que assiná-la não envie imediatamente uma transação on-chain do proprietário.Sites de phishing podem apresentar um permit como login, verificação ou mensagem inofensiva sem gas.O gastador pode enviar posteriormente um permit assinado válido e usar a permissão resultante antes do prazo de validade.Antes de assinar, os usuários devem verificar o token, o gastador, o valor, a rede, o nonce e a data de expiração.Uma solicitação de assinatura não deve ser considerada segura apenas porque a carteira informa que não há pagamento de gas.Carteiras de contratos podem exigir suporte adicional para validação de assinaturas além do padrão básico de contas de propriedade externa.O ERC-20 oferece chamadas de retorno automáticas para destinatários?
As funções de transferência ERC-20 básicas não exigem que um contrato inteligente destinatário confirme o recebimento dos tokens.Assim, uma transferência pode ser concluída mesmo que o contrato destinatário não tenha uma função para registrar ou devolver os tokens.Isso pode deixar ativos presos em contratos incompatíveis.O ERC-20 também não chama automaticamente o código do destinatário após uma transferência comum.A extensão ERC-1363 adiciona operações de transferência com chamada e aprovação com chamada para aplicativos que precisam desse comportamento.
Extensões que permitem chamadas de retorno adicionam chamadas externas e devem ser analisadas quanto a riscos de reentrância e segurança do receptor.SafeERC20 e tokens não padronizados
A especificação ERC-20 determina que quem chama as funções deve lidar com um valor retornado
Outras implementações revertem em caso de falha, em vez de retornar
A biblioteca SafeERC20 atual encapsula operações de token e lida tanto com tokens que retornam
Tokens com taxa de transferência
Um token com taxa de transferência deduz uma cobrança durante a movimentação do token.O destinatário recebe menos do que a quantidade solicitada pelo remetente ou pelo contrato que fez a chamada.Um protocolo que credita o valor solicitado em vez de medir o valor efetivamente recebido pode ficar subcolateralizado.Os aplicativos devem comparar os saldos antes e depois de uma transferência quando oferecerem suporte a esse comportamento.As regras de taxas também podem mudar quando o contrato é atualizável ou controlado por um administrador.Nomes padronizados de funções ERC-20 não garantem um resultado fixo para a transferência.Tokens ERC-20 com rebase
Um token com rebase altera os saldos das contas de acordo com um processo de ajuste definido pelo contrato.O saldo exibido por
Tokens ERC-20 wrapped
Um token ERC-20 wrapped representa outro ativo por meio de um contrato inteligente ou de um arranjo de custódia.Os usuários podem depositar um ativo subjacente e receber unidades ERC-20 correspondentes.O resgate normalmente queima ou devolve as unidades wrapped e libera o ativo subjacente.O valor do wrapper depende da disponibilidade e da integridade do mecanismo de lastro.Explorações de contratos inteligentes, falhas de custódia ou de bridge, colateral congelado ou contabilidade incorreta podem romper a relação esperada.A conformidade com ERC-20 comprova apenas a compatibilidade da interface, não a existência de lastro suficiente.Tokens de governança ERC-20
Um token ERC-20 pode ser estendido para representar poder de voto em um sistema de governança on-chain.A votação pode depender dos saldos atuais, dos saldos delegados ou de registros históricos de saldo.A biblioteca de implementação ERC-20 atual inclui uma extensão de votação ERC-20 para delegação e consultas a votos históricos.
Possuir tokens de governança não necessariamente ativa o poder de voto automaticamente, pois alguns sistemas exigem delegação.A votação por tokens também pode ser influenciada pela concentração da propriedade, ativos emprestados, baixa participação e permissões administrativas.O padrão ERC-20 básico não define regras de governança.Participações de vault ERC-20
Tokens ERC-20 podem representar participações em um vault tokenizado.Cada participação representa um direito proporcional sobre os ativos gerenciados pelo vault, e não uma unidade fixa do token subjacente.O padrão de vault tokenizado ERC-4626 estende o ERC-20 com funções padronizadas de depósito, saque, emissão, resgate e conversão.
O valor subjacente das participações pode aumentar ou diminuir conforme o desempenho da estratégia, as taxas, as perdas e as regras contábeis.A compatibilidade com ERC-20, por si só, não explica o que dá lastro a um token de participação nem como ele pode ser resgatado.Mensagens de erro ERC-20
O padrão ERC-20 original antecede os erros personalizados do Solidity e não define um conjunto padronizado de mensagens de falha.Tokens diferentes podem retornar
O padrão Final ERC-6093 define erros personalizados estruturados para falhas comuns em tokens.
Entre os exemplos estão saldo insuficiente, remetente inválido, destinatário inválido, permissão insuficiente, aprovador inválido e gastador inválido.Erros padronizados podem ajudar carteiras e aplicativos a explicar falhas de forma mais consistente.O ERC-6093 não altera a interface ERC-20 básica nem exige que todos os tokens existentes adotem esses erros.O ERC-20 usa ERC-165?
O padrão ERC-20 original não exige detecção de interface ERC-165.Um aplicativo não pode presumir que chamar
ERC-20 vs. ETH nativo
ETH é o ativo cripto nativo da Ethereum e não é, por si só, um token ERC-20.Contas da Ethereum podem enviar ETH nativo por meio de transferências de valor no nível do protocolo.Saldos ERC-20 existem dentro de contratos inteligentes individuais.O pagamento das taxas de transação da Ethereum exige ETH, mesmo quando o ativo transferido é um token ERC-20, a menos que um sistema separado patrocine ou abstraia a taxa.É possível criar uma representação ERC-20 de ETH para aplicativos que exigem a interface de token, mas esse ativo wrapped continua sendo diferente do ETH nativo.ERC-20 vs. ERC-721
O ERC-20 representa saldos fungíveis, enquanto o ERC-721 representa tokens não fungíveis identificados individualmente.Uma conta ERC-20 possui uma quantidade de unidades intercambiáveis.Uma conta ERC-721 possui IDs de token distintos.O ERC-20 costuma usar formatação decimal, enquanto um token ERC-721 normalmente é transferido como uma unidade exclusiva inteira.O ERC-721 também inclui verificações de receptor para transferências seguras que não existem no padrão ERC-20 básico.ERC-20 vs. ERC-1155
O ERC-20 gerencia um tipo de token fungível por interface de contrato.O ERC-1155 permite que um único contrato gerencie vários IDs de token com saldos separados.Esses IDs de token ERC-1155 podem representar ativos fungíveis, semifungíveis ou exclusivos.O ERC-1155 também define operações de transferência em lote e chamadas de retorno para receptores.O padrão mais adequado depende de o projeto precisar de um único ativo fungível ou de vários tipos de ativos gerenciados por um contrato.Casos de uso comuns do ERC-20
Tokens de valor estável podem usar ERC-20 para representar unidades transferíveis vinculadas a uma reserva, sistema de colateral ou mecanismo algorítmico.Sistemas de governança podem usar saldos ERC-20 ou unidades delegadas como poder de voto.Jogos blockchain podem usar tokens ERC-20 para moedas, recompensas ou recursos intercambiáveis.Vaults e sistemas de staking podem emitir tokens de recibo ERC-20 que representam posições depositadas.Ativos wrapped podem usar ERC-20 para representar direitos sobre ativos mantidos em outro local.Projetos também podem usar o padrão para pontos de fidelidade, créditos de acesso, unidades de pagamento ou créditos financeiros tokenizados.A interface não determina se um uso específico é legal, tem lastro integral, é descentralizado ou é economicamente sustentável.Riscos de contratos inteligentes ERC-20
Uma implementação ERC-20 pode conter erros na lógica de transferência, permissões, criação, queima, tributação ou controle de acesso.Um administrador privilegiado pode conseguir pausar transferências, congelar saldos, bloquear endereços, emitir tokens, alterar taxas ou atualizar o contrato.Uma atualização de proxy pode alterar o comportamento do token depois que os titulares o adquirirem.Chamadas externas em uma lógica personalizada de token podem criar riscos de reentrância ou negação de serviço.Integrações incorretas podem causar perda de fundos mesmo quando o token se comporta de acordo com seu código.A conformidade com padrões melhora a interoperabilidade, mas não substitui auditorias, testes, revisão do código-fonte e análise de permissões.Phishing de aprovação de tokens
O phishing de aprovação tenta convencer um usuário a autorizar um gastador malicioso.A interface pode descrever a ação como verificação, conexão, elegibilidade a recompensas ou recuperação de conta.Depois que a aprovação é confirmada, o gastador pode usar
Golpes de transferência de tokens
Golpistas podem enviar tokens ERC-20 desconhecidos a uma carteira sem a permissão do proprietário.O nome, o símbolo ou os metadados do token podem conter um site ou uma alegação enganosa.Acessar o site anunciado pode levar a aprovações ou assinaturas maliciosas.Atacantes também podem criar endereços visualmente semelhantes aos endereços do histórico de transações de um usuário.Os usuários devem copiar endereços verificados de registros confiáveis, em vez de escolher um destino apenas porque o início e o final do endereço coincidem.Receber um token desconhecido não exige que o proprietário da carteira interaja com ele.Como os desenvolvedores devem implementar ERC-20
Em geral, os desenvolvedores devem começar com uma implementação revisada e mantida ativamente.O guia de desenvolvimento ERC-20 atual oferece contratos básicos e extensões para permits, limites, queima, pausa, votação, wrapping, vaults e outras funções.
A criação de oferta deve ser explícita e protegida por controles de acesso adequados.Personalizações de transferência devem preservar as invariantes de saldo, oferta, eventos e permissões.Os desenvolvedores devem testar transferências de valor zero, valores máximos, saldos insuficientes, permissões insuficientes, criação, queima, aprovações e transferências que envolvam endereços incomuns.Quando esses ativos forem compatíveis, as integrações também devem ser testadas com tokens que retornam
Como os usuários podem avaliar um token ERC-20
O primeiro passo é verificar a rede blockchain e o endereço completo do contrato do token.O segundo é analisar a oferta atual, as alegações sobre oferta máxima e a autoridade de criação.O terceiro é revisar as permissões de administrador, pausa, congelamento, lista de bloqueio, taxas e atualização.O quarto é determinar se o token tem lastro em outro ativo e como funciona o resgate.O quinto é verificar taxas de transferência, comportamento de rebase, restrições e efeitos incomuns na carteira.O sexto é analisar auditorias, código-fonte verificado e histórico de incidentes sem tratar auditorias como garantia.O sétimo é verificar a concentração de titulares, a liquidez disponível e as condições em que a liquidez pode desaparecer.O oitavo é entender a fonte real da demanda ou do rendimento, em vez de confiar na marca do token.O nono é inspecionar as aprovações antes e depois de usar contratos inteligentes desconhecidos.O décimo é testar um token ou contrato novo com uma quantia limitada antes de expor fundos significativos.Exemplo de transferência ERC-20
Suponha que Alice possua 500 unidades de um token ERC-20 e queira enviar 75 unidades para Bob.A carteira de Alice confirma a blockchain correta, o contrato do token, o endereço do destinatário, o valor e a taxa de transação.A carteira envia uma transação que chama a função
O contrato emite um evento
Exemplo de aprovação ERC-20
Suponha que Alice queira que um contrato de vault deposite 100 unidades de um token ERC-20 em seu nome.Primeiro, Alice verifica o endereço do contrato do vault e o token que ele gastará.Ela chama
O contrato do token registra a permissão e emite um evento
O vault usa
Erros comuns relacionados ao ERC-20
Um erro comum é identificar um token apenas pelo nome ou símbolo.Outro erro é presumir que todos os tokens ERC-20 usam 18 casas decimais.Um terceiro erro é conceder aprovação ilimitada a um contrato não confiável.Um quarto erro é acreditar que desconectar uma carteira revoga as permissões de token.Um quinto erro é ignorar o resultado booleano ou o comportamento não padronizado das transferências de tokens.Um sexto erro é creditar um depósito com taxa de transferência pelo valor solicitado, em vez do valor recebido.Um sétimo erro é tratar
Perguntas frequentes
O que significa ERC-20?
ERC-20 é o padrão da Ethereum que define funções e eventos comuns para tokens fungíveis de contratos inteligentes.ERC-20 é uma criptomoeda?
ERC-20 é um padrão técnico, enquanto um contrato individual que o implementa pode criar um token de criptomoeda.ERC-20 é a mesma coisa que Ethereum?
Não. Ethereum é a rede blockchain, enquanto ERC-20 é uma interface de contrato inteligente usada por tokens que operam nessa rede.ETH é um token ERC-20?
Não. ETH é o ativo nativo da Ethereum e não usa a interface de contrato ERC-20.Tokens ERC-20 são fungíveis?
Sim. Unidades iguais de um mesmo token ERC-20 comum são intercambiáveis de acordo com as regras contábeis do contrato.Quais são as seis funções principais do ERC-20?
São
Quais eventos o ERC-20 define?
O padrão define os eventos
name, symbol e decimals são obrigatórios?
Não. As três funções de metadados são opcionais na especificação ERC-20 original.Todos os tokens ERC-20 usam 18 casas decimais?
Não. Dezoito casas decimais são comuns, mas cada token pode usar um valor diferente.O que uma aprovação ERC-20 faz?
Concede a um gastador permissão para transferir tokens de um proprietário até o limite especificado.Para que serve transferFrom?
Permite que um gastador autorizado transfira tokens do proprietário para um destinatário.O que é uma aprovação ERC-20 ilimitada?
É uma permissão definida em um valor máximo extremamente alto, para que o gastador possa continuar transferindo tokens sem aprovações repetidas.Desconectar uma carteira revoga as aprovações?
Não. As permissões on-chain permanecem ativas até serem alteradas por meio do contrato do token ou deixarem de produzir efeito por outro motivo.O que é um permit ERC-20?
É uma mensagem assinada opcional do ERC-2612 que cria ou altera uma permissão sem que o proprietário precise enviar diretamente a transação de aprovação.Tokens ERC-20 podem ser criados?
Sim, quando a implementação inclui um mecanismo de criação e uma parte autorizada ou condição do protocolo pode utilizá-lo.Tokens ERC-20 podem ser queimados?
Sim, quando a implementação inclui lógica de contrato para destruir unidades de token.O ERC-20 exige oferta fixa?
Não. A política de oferta é determinada pela implementação de cada token.Transferências ERC-20 podem cobrar taxas?
Sim. Tokens personalizados podem deduzir taxas de transferência, embora esse comportamento não seja exigido pelo padrão básico.Um saldo ERC-20 pode mudar sem uma transferência?
Sim. Rebases e outros modelos contábeis personalizados podem alterar os saldos informados sem transferências comuns feitas pelos titulares.Tokens ERC-20 podem ficar presos em um contrato?
Sim. A função básica de transferência não exige que contratos destinatários confirmem que conseguem gerenciar ou devolver os tokens.O ERC-20 oferece detecção de interface ERC-165?
Não. A especificação ERC-20 original não exige ERC-165.O ERC-20 garante que um token tenha lastro?
Não. O padrão não verifica reservas, colateral, direitos de resgate ou solvência.A conformidade com ERC-20 torna um token seguro?
Não. Um token compatível ainda pode ter permissões perigosas, código defeituoso, lastro fraco, pouca liquidez ou operadores maliciosos.Como os usuários podem identificar o token ERC-20 correto?
Os usuários devem verificar a rede blockchain e o endereço completo do contrato em uma fonte oficial.Qual é o principal benefício do ERC-20?
Seu principal benefício é a interoperabilidade por meio de uma interface compartilhada, reconhecida por muitas carteiras cripto e contratos inteligentes.Conclusão
O ERC-20 é o padrão fundamental da Ethereum para tokens fungíveis de contratos inteligentes.Ele define métodos comuns para consultar oferta e saldos, transferir tokens e conceder autoridade de gasto delegada.Os eventos
As aprovações continuam sendo um dos maiores riscos para os usuários, pois um gastador malicioso pode usar uma permissão ativa por meio de
Os desenvolvedores devem considerar valores de retorno
Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

