São Paulo taperadar.com.br
TapeRadar.

Cripto e mercado.
Sem ruído.

Explicado · Ethereum

O que é ERC-20, o padrão que faz todo token do Ethereum falar a mesma língua

O ERC-20 define uma interface única para tokens, com saldo, transferência e autorização por limite (allowance), permitindo que carteiras e exchanges usem qualquer moeda do Ethereum sem código novo.

O ERC-20 é o padrão de interface para tokens fungíveis no Ethereum, proposto por Fabian Vogelsteller e Vitalik Buterin e criado em 19 de novembro de 2015. A proposta define um conjunto pequeno de funções e eventos que qualquer contrato de token pode seguir, de modo que uma mesma carteira ou exchange saiba ler saldo, enviar e aprovar gastos sem precisar de código específico para cada moeda.

O estado mínimo do padrão é o saldo e a oferta total: totalSupply devolve a quantidade de tokens existente e balanceOf devolve quanto um endereço qualquer tem. O envio é feito por transfer, que move um valor para outro endereço e deve disparar o evento Transfer. O texto do padrão trata transferências de valor zero como transferências normais, que também disparam o evento.

A parte que diferencia o ERC-20 de uma simples transferência é a autorização. approve registra que um gastador pode retirar até um limite da conta do dono, e allowance devolve quanto desse limite ainda resta. Com o limite registrado, o gastador chama transferFrom para mover os tokens em nome do dono, dentro do valor aprovado. É esse mecanismo que permite que um contrato, por exemplo um exchange descentralizado, retire o token do usuário para executar uma troca.

O padrão define dois eventos obrigatórios, Transfer e Approval, e deixa name, symbol e decimals como metadados opcionais para melhorar a usabilidade; as interfaces não podem presumir que eles existam. Um contrato que cria tokens novos deve disparar Transfer com o remetente zero (0x0), e o mesmo vale para a destruição de tokens.

O próprio padrão registra um vetor de ataque na autorização: como approve sobrescreve o limite atual, um gastador pode usar o limite antigo e o novo em duas transações antes que a primeira seja confirmada. A recomendação do texto é que as interfaces façam o usuário definir o limite primeiro para zero antes de trocar o valor, embora o contrato não deva impor isso para manter compatibilidade.

Duas regras fecham a especificação: o retorno bool das funções deve ser tratado pelo chamador, que não pode presumir que falso nunca ocorre, e o padrão não define por si só emissão, queima ou política de oferta, apenas a convenção do evento Transfer. A interface é deliberadamente pequena para ser reutilizada.

Fonte: eips.ethereum.org

Explorar o arquivo