ERC 20 vs ERC 223 vs ERC 777: Uma comparação entre os padrões de token Ethereum
Você é um desenvolvedor Ethereum trabalhando em um projeto de criptografia? Você provavelmente está desenvolvendo o novo token usando o padrão ERC20, no entanto, você precisa conhecer os esforços de melhoria. Isso ajudará você a tomar a decisão certa sobre qual padrão de token ERC usar, portanto, explicarei a comparação ERC777 vs ERC223 vs ERC20 neste artigo.
Iniciarei a comparação com uma explicação do ERC 20 e, posteriormente, explicarei suas desvantagens. Em seguida, explicarei os esforços de melhoria que a comunidade Ethereum empreendeu, via ERC 777 e ERC 223.
Comparação entre ERC20 vs ERC223 vs ERC777
O que é ERC 20?
Antes de comparar o ERC 20 com o ERC 223 com o ERC 777, preciso explicar o que é um ERC e o que o ERC20 representa. Os desenvolvedores do Ethereum costumam enviar “Propostas de Melhoria do Ethreum” (EIPs). A comunidade Ethereum analisa EIPs, faz comentários, o que pode desencadear algum retrabalho.
Depois que a comunidade Ethereum aceita um EIP, ele se torna um padrão e nós o chamamos de “Solicitação de comentários Ethereum” (ERC). ERC 20 é um desses padrões para tokens Ethreum.
ERC 20 é o padrão de token Ethereum mais famoso e quase todos os ICOs que usaram a plataforma Ethereum o usaram. Os desenvolvedores usam por padrão para criar novos tokens, enquanto carteiras e trocas aceitam tokens ERC 20 facilmente.
Antes do ERC 20, os desenvolvedores do Ethereum precisavam definir regras específicas que seu token seguiria, e essa abordagem carecia de padronização. Agora, com o ERC20, os desenvolvedores do Ethereum sabem que terão apenas que usar o padrão ERC 20. Essa padronização desempenhou um grande papel em alimentar a mania ICO que vimos desde 2017.
Leia mais sobre o padrão ERC 20 no “Guia do Iniciante: O que é ERC20?“.
O que são funções padrão ERC 20?
O padrão ERC 20 prescreve as seguintes funções ao desenvolver um token Ethereum:
- Obtenha o suprimento total de tokens: você precisa usar a função “totalSupply”.
- Recupere o saldo simbólico das contas de outro proprietário.
- Enviar tokens para outra conta de proprietário: Você precisa usar a função “transferir”. Essas contas são contas EOA.
- Envie tokens de um endereço de token para outro. Os endereços de token são endereços de contrato, e você precisa usar a função “transferFrom”.
- Permita que outra conta retire fundos de sua conta repetidamente, dentro de um limite especificado. Você deve usar a função “aprovar” para este.
- Os gastadores podem devolver tokens não utilizados aos proprietários, usando a função “mesada”.
Um bug ERC 20 que queima tokens
Embora muito bem documentado e implementado em geral, o padrão ERC 20 tem um bug, e isso já queimou tokens no valor de milhões de dólares americanos. A função de “transferência” permite apenas que você envie tokens para outro proprietário, ou seja, conta EOA.
Se você deseja enviar fundos para uma conta de contrato inteligente, ou seja, a outra forma de contas Ethereum, você precisa usar a combinação “aprovar” e “transferirFrom”. Se você enviar tokens para um contrato inteligente usando a função “transferir”, você verá uma transação bem-sucedida, mas o contrato nunca receberá os tokens.
Isso queima esses tokens para sempre e você não pode recuperá-los. Vários usuários usaram a função errada para enviar tokens para contratos inteligentes e perderam seus tokens para sempre!
A Fundação Ethereum sabe sobre o bug, mas continua a promover o padrão ERC 20. Eu não sei os motivos deles para fazer isso. Eles provavelmente não estão apreciando a importância do problema ou há uma resistência à mudança.
O padrão de token ERC223: Uma proposta de resolução para o bug ERC 20
Um desenvolvedor Ethereum que atende pelo nome de usuário Reddit “Dexaran” propôs o EIP 223 com uma solução para este bug ERC 20. Antes de comparar ERC 20 vs ERC 223 vs ERC 777, explicarei sua proposta primeiro.
O padrão de token ERC223 ainda é um rascunho e a comunidade Ethereum ainda não o implementou. Ele propõe a seguinte solução:
- Ele considera uma transação no blockchain Ethereum como um evento e usa o conceito de ‘manipulação de eventos’.
- Se os usuários usarem a função de “transferência” para enviar tokens para um contrato inteligente, isso gerará um erro e, posteriormente, cancelará a transação.
- O usuário paga o “preço do gás” Ethereum, mas não perde nenhum token.
- Esta proposta adiciona um parâmetro adicional à função “transferência”, para verificar se o endereço de recebimento é uma conta de contrato.
- Se descobrir que o endereço do destinatário é uma conta de contrato e não uma conta EOA, assume que o contrato implementou um “tokenFallback”.
- Uma função “tokenFallback” permite chamar de volta o token, para que a transação não queime nenhum token.
Embora o ERC223 resolva o bug ERC 20 em grande medida, há uma fraqueza nesta proposta. Se o contrato inteligente do destinatário não tiver uma função “tokanFallback”, a função “Fallback” será executada, resultando na perda de tokens.
Apenas alguns projetos usam o ERC 223, um exemplo é o Projeto AmigoCoin. Você pode ler mais detalhes sobre a proposta ERC 223 no Repositório GitHub EIP 223. Este padrão também é chamado de ERC 23.
O padrão ERC777: Uma proposta aprimorada para resolver o bug ERC 20
Uma proposta aprimorada para evitar a perda de tokens devido ao bug ERC 20 é a proposta ERC 777. Inclui o seguinte:
- Novas funções: “enviar” em vez de “transferir”, “authoriseOperator” em vez de “aprovar” e “tokensReceived” em vez de “tokenFallback”.
- Por muito tempo, a plataforma Ethereum teve uma desvantagem porque os desenvolvedores não conseguiam identificar quais funções os contratos inteligentes implementavam. ERC 820, ou seja, outro padrão, implementou um registro central de contratos na rede, portanto, agora é possível conhecer as funções e interfaces de um contrato inteligente. O ERC777 o usa para identificar as interfaces que um contrato inteligente usa. Agora os desenvolvedores saberão de antemão se um contrato tem as funções necessárias para receber tokens enviados por meio de certas funções.
- O ERC 777 permite a “lista branca” de operadoras, de modo que os usuários da rede Ethereum agora terão a capacidade de rejeitar pagamentos de endereços na lista negra. Um endereço pode ser colocado na lista negra por vários motivos, como, por exemplo, tentativa de hackear a rede, histórico de atividades ilegais.
Você pode ver na comparação ERC 777 vs ERC 20 vs ERC 223 como o ERC777 oferece várias opções aos desenvolvedores para que eles possam evitar a perda de tokens. No entanto, o padrão ERC777 também vem com alguns riscos, como segue:
- Alguns desenvolvedores do Ethereum acreditam que a função “authoriseOperator” está obsoleta, portanto, os desenvolvedores não devem usá-la. Esta função também exigirá mais “gás” e colocará uma pressão adicional na rede.
- O uso de um registro central de contratos inteligentes para pesquisar as interfaces que um contrato usa é arriscado. Um registro central pode ter bugs e qualquer coisa que depender dele terá um impacto adverso.
ERC777 ainda é um rascunho, no entanto, o ORCA token usa. Leia a proposta no Repositório GitHub EIP 777.
ERC 777 vs ERC 20 vs ERC 223: A proteção dos fundos é importante
Embora só o tempo dirá qual padrão o ecossistema Ethereum aceitará como o “padrão ouro”, você, como desenvolvedor, precisa se lembrar que é sua responsabilidade proteger os fundos dos investidores e comerciantes Se você assumir uma posição tão responsável, provavelmente concordará que, apesar da complexidade, o padrão ERC 777 deve ser implementado e adotado.
Observação: se você quiser saber mais sobre alguns padrões ERC importantes, leia “A lista definitiva de padrões ERC que você precisa saber“.