Um guia detalhado para o padrão de token ERC20 (incluindo a criação de contratos de token ERC20)

Os tokens ERC-20 são criptomoedas que funcionam na cadeia de blocos Ethereum. São alimentados por contratos inteligentes da rede Ethereum, utilizam-na para realizar transacções e interagir com os seus endereços e carteiras. Ao mesmo tempo, os tokens ERC 20 têm os seus próprios tickers, taxas de fornecimento, preço e outros parâmetros. Por exemplo, embora o EOS seja um token Ethereum, tem um valor de mercado de 11,5 mil milhões de dólares, o que é mais do que se pode dizer da maioria das criptomoedas obtidas por mineração.

A ERC20 tornou-se a casa de facto da DeFi

Graças à acessibilidade da arquitetura ERC20, é bastante fácil criar e implementar o teu próprio token e distribuí-lo (por exemplo, durante uma ICO). Nas ICOs e noutros tipos de ofertas, são realizadas pré-vendas para atrair financiamento dos investidores. O processo de criação de tokens chama-se TGE, abreviatura de Token Generation Event (evento de geração de tokens). Os projectos emitem um determinado número de tokens ERC 20 e vendem-nos a todos os participantes de uma pré-venda de bitcoins ou ETH.

É de notar que, embora os tokens ERC-20 sejam criptomoedas de pleno direito que podem acabar em trocas de criptomoedas populares, isso não significa necessariamente que o façam. Um token erc20 pode tomar o mundo criptográfico de assalto ou permanecer para sempre na balança do seu criador.

Utilizações práticas do ERC20

No início, os tokens foram utilizados durante a angariação inicial de fundos para o desenvolvimento da empresa. Eram activos digitais com obrigações fixas. Os tokens eram comprados diretamente aos criadores e não podiam ser vendidos ou comprados em mais lado nenhum.

A ICO da Ethereum teve lugar em 2014 e angariou mais de 16 milhões de dólares. O Ethereum chamou a atenção de representantes de muitas indústrias, uma vez que pode ser utilizado para otimizar e digitalizar processos empresariais ineficientes no futuro.

Um token ERC-20 pode ser considerado uma criptomoeda se puder ser negociado em bolsas de criptomoedas. Os tokens ERC20 também podem evoluir para ecossistemas inteiros com as suas próprias cadeias de blocos. Alguns exemplos de tokens ERC20 que criaram a sua própria cadeia de blocos são o Tron e o EOS. A Tron criou a sua própria cadeia de blocos devido à sua visão: os jogos de cadeia de blocos estão a tornar-se mais populares todos os dias. O EOS é um concorrente do Ethereum, utilizado principalmente para trocas descentralizadas e jogos de azar.

Um token Ethereum pode ser utilizado como um ativo e como uma forma de dinheiro; pode também representar valores de qualquer tipo e conceder participações num programa ou servir como um meio de confirmar a propriedade. Qualquer ativo do mundo real, físico ou não, pode ser tokenizado e negociado em bolsas de criptomoedas.

Moeda Loyalty Points (MDA) é um token ERC 20 que alimenta o ecossistema MOEDA

Os tokens ERC-20 mais populares

A cadeia de blocos Ethereum é a casa de facto das criptomoedas, albergando a maioria das maiores altcoins actuais. Os tokens mais famosos são os tokens ERC20, e a maioria dos DApps no ecossistema criptográfico são construídos na rede Ethereum. Algumas stablecoins de padrão ERC20 são conhecidas por dominarem o mercado de criptomoedas.

USDC

Para além da USDT da Tether, uma das maiores stablecoins ERC20 na rede Ethereum é a USDC.

A USDC by Circle é a segunda stablecoin ERC20 com melhor classificação

Lançado pela Coinbase em colaboração com a Circle, o USDC é normalmente visto como uma alternativa mais fiável ao USDT por aqueles que têm uma posição crítica em relação ao Tether.

O padrão BEP20 da Binance está hospedado na Binance Smart Chain, que por sua vez deriva da rede Ethereum. Portanto, os dois tokens nativos da Binance – BNB e BUSD – também podem ser considerados tecnicamente como tokens Ethereum.

Um padrão único, a facilidade de criação e a compatibilidade com as plataformas levaram à distribuição generalizada de tokens ERC20. Abaixo estão alguns exemplos de tokens populares que utilizam o protocolo ERC20.

USDT Tether

Tether (USDT) é uma das stablecoins ERC-20 mais populares

Em 2015, a Tether Limited emitiu uma moeda estável indexada ao USD, a USDT. Com base no padrão ERC 20, tornou-se desde então a moeda estável para a maioria dos comerciantes de criptografia e trocas em todo o mundo. O valor do USDT Tether é suportado por dólares americanos nas contas da empresa.

Outras moedas fiduciárias têm as suas próprias stablecoins. Por exemplo, a Binance GBP é apoiada pela libra esterlina e a STASIS é apoiada pelo euro.

O antigo sistema baseava-se no protocolo Omni baseado na cadeia de blocos Bitcoin. Devido às elevadas taxas e ao longo tempo de confirmação, a empresa decidiu migrar para a cadeia de blocos Ethereum.

Bitcoin embrulhado e éter embrulhado

O Wrapped Ether é basicamente ETH traduzido para o ambiente ERC20

ETH, ou éter, é a moeda base do Ethereum. WETH é “wrapped ETH” ou “Ether in a shell”. Foi introduzida porque a ETH surgiu antes da adoção da norma ERC20 e, por conseguinte, não estava em conformidade com a mesma.

Plataformas descentralizadas baseadas em Ethereum trocam tokens entre utilizadores com base em contratos inteligentes. Para que uma troca ocorra, os tokens devem pertencer ao mesmo padrão.

O WETH é usado para trocar tokens ETH pelo protocolo ERC20 correspondente.

Numerosos utilizadores da rede, incluindo grandes empresas com capital, estão interessados no desenvolvimento da moeda de base.

Entre eles:

  • o sistema Wrapped Ether, que possui mais de 2 milhões de ETH no valor de 380 milhões de dólares;
  • uma das principais bolsas de criptomoedas, a Binance, 370 milhões de dólares;
  • Troca Bitfinex, menos de 2 milhões de ETH.
Wrapped Bitcoin (WBTC) é o equivalente ERC20 do BTC

A Bitcoin também tem uma versão ERC20 embrulhada chamada WBTC. O BTC original é o token nativo da cadeia de blocos Bitcoin e não é compatível com o Ethereum. Tal como o WETH, o WBTC destina-se a resolver este problema: está sempre indexado ao preço da Bitcoin e é totalmente compatível com a rede Ethereum. Os tokens embrulhados são mais frequentemente utilizados para transferir tokens entre redes diferentes que não são mutuamente compatíveis.

LCS

A LocalCoinSwap é uma plataforma descentralizada que oferece aos utilizadores a oportunidade de comprar e vender diretamente criptomoedas utilizando qualquer um dos métodos de pagamento disponíveis.

LocalCoinSwap é também um token ERC 20

O LCS permite-te encontrar um comprador ou vendedor de moeda e fazer uma transação sem envolver sites e carteiras. A plataforma utiliza um sistema de depósito tradicional, que armazena fundos de criptomoeda que podem ser trocados. Quando o pagamento é confirmado pelo comprador e pelo vendedor, o sistema envia moedas para o comprador. A plataforma dá-te o direito de receber dividendos numa proporção de 1 para 1 no final do trimestre.

Etherscan: A casa dos tokens ERC 20

Os contratos de token ERC20 podem ser visualizados em Etherscan.io – o rastreador nativo da rede Ethereum.

Etherscan.io é o rastreador nativo da rede Ethereum

Juntamente com os seus tickers e breves descrições, podes monitorizar os seus valores de oferta total, capitalização de mercado (na cadeia e em circulação), número de detentores e valores de preços e alterações de preços.

Todos os tokens ERC20 podem ser vistos no menu Tokens no Etherscan

Para veres todos os contratos de tokens ERC20 na rede Ethereum, tens de clicar em Tokens no canto superior direito e depois selecionar tokens ERC20. Cada novo token com um valor de mercado mais ou menos competitivo será listado aqui.

No momento em que este artigo foi escrito, existem pelo menos 625.000 contratos de token ERC20 implantados na rede Ethereum. Também podes ver outros padrões de tokens Ethereum aqui – ERC721 para tokens não fungíveis (NFTs) e ERC155 para multi-tokens.

O lado técnico de um token ERC 20

Essencialmente, os tokens ERC-20 são contratos inteligentes na cadeia de blocos Ethereum. O ERC-20 é uma norma unificada, que inclui um conjunto de regras básicas a seguir num contrato. A norma garante a compatibilidade de todos os tokens dentro da rede.

ERC significa “Ethereum Request for Comments”, e 20 é o seu número de identificação.

O ERC-20 foi concebido em 2015 e tornou-se mundial em 2017. Antes disso, todos os contratos inteligentes eram bastante heterogéneos, causando problemas de compatibilidade entre eles, e as carteiras tinham de lidar com montes de código para reconhecer cada token específico.

Tokens ERC20 e EVM

EVM (Ethereum Virtual Machine) é um ambiente de computação virtual, um computador distribuído responsável pela execução de algoritmos na rede Ethereum (contratos inteligentes).

A EVM é considerada Turing-completa, o que significa que é teoricamente capaz de realizar qualquer tarefa computacional que possa ser efectuada em computadores (com recursos suficientes).

Como pagamento pela execução de contratos inteligentes, o EVM usa “gás”, medido em ‘gwei’, a menor fração possível de ETH; o gás está incluído no custo da transação. A quantidade específica de gás que o utilizador deve pagar depende da complexidade dos cálculos efectuados e da carga de trabalho atual da cadeia de blocos Ethereum.

Os contratos inteligentes que seguem uma estrutura de dados definida no EVM são utilizados para criar tokens ERC-20. Esta estrutura de dados controla a designação, distribuição, quantidade de fornecimento e monitorização do token.

ERC20 = Código?

Muitos interrogam-se se o ERC 20 pode ser considerado um código. A resposta não é exatamente: um token ERC20 serve mais como um conjunto de orientações destinadas a delinear as regras básicas para operar dentro da rede Ethereum.

O padrão serve uma série de propósitos, incluindo manter o controle de todas as transações, o saldo atual do token de um usuário, o ticker do token e as taxas totais de fornecimento; o padrão do token ERC 20 também garante a compatibilidade de diferentes DApps (Aplicativos Descentralizados) na rede.

Dentro de um contrato de token ERC 20

A norma ERC20 define seis funções obrigatórias e três opcionais que devem ser seguidas para que um contrato inteligente funcione corretamente.

Cada ficha tem de ter um nome e um símbolo de ficha (também conhecido como ticker). Também tem de especificar os seus decimais, ou seja, quantas vezes pode ser dividido por 10. Abaixo, encontras um conjunto de funções obrigatórias, que podem ser um pouco difíceis de compreender à primeira vista:

function () public view returns (uint256);
function balanceOf(address tokenOwner) public view returns (uint);
function allowance(address tokenOwner, address spender)
public view returns (uint);
function transfer(address to, uint tokens) public returns (bool);
function approve(address spender, uint tokens)  public returns (bool);
function transferFrom(address from, address to, uint tokens) public returns (bool); 

Eis o que estas funções representam:

  • TotalSupply: O número total de tokens que serão emitidos;
  • BalanceOf: O saldo da conta do proprietário de um token;
  • Transfere: Executa automaticamente transferências de um número especificado de tokens para um endereço especificado para transacções que utilizam o token;
  • TransferFrom: Executa automaticamente transferências de um número especificado de tokens de um endereço especificado usando o token;
  • Aprova: Permite que um gastador retire um determinado número de fichas de uma conta específica, até um montante específico;
  • Permissão: Devolve um número definido de fichas de um gastador ao proprietário;
  • Transferência: Um evento acionado quando uma transferência é bem sucedida (um evento);
  • Aprovação: Um registo de um evento aprovado (um evento).

Com a devida autorização, as funções do ERC20 permitem que uma entidade externa, por exemplo, uma aplicação de carteira criptográfica, veja o seu saldo e transfira tokens entre utilizadores.

Existem dois tipos de eventos reconhecidos pelo contrato inteligente:

event Approval(address indexed tokenOwner, address indexed spender,
 uint tokens);
event Transfer(address indexed from, address indexed to,
 uint tokens);

Os eventos podem ser:

  • invocado
  • emitida

Qualquer um dos dois acontece depois de uma conta Ethereum ter concedido a alguém o direito de retirar tokens da mesma e depois de os tokens terem sido efetivamente transferidos. De acordo com a norma, a “função transferência” deve emitir o evento Transferência numa transferência bem sucedida de fichas.

function allowance(address owner, address spender) external view returns (uint256);2
 

A norma ERC-20 permite que um endereço dê um subsídio a outro endereço para poder recuperar tokens a partir dele. Este getter devolve o número restante de fichas que o gastador poderá gastar em nome do proprietário. Esta função é um getter e não modifica o estado do contrato, devendo devolver 0 por defeito.

Criar um Token ERC 20

Passo 1

  • Сescolhe um nome, por exemplo, Melhor Moeda
  • Escolhe um símbolo, vamos torná-lo BEC
  • Decide sobre a oferta total
  • Decide se as fichas serão divisíveis e, em caso afirmativo, quantas casas decimais serão o máximo

Passo 2

Implementa o Token

Introduz os seguintes dados no contrato inteligente disponível na ligação. Descarrega os dois ficheiros .sol. Vai ao editor de remixes. Descarrega os dois ficheiros.

Os ficheiros são carregados com o botão Carregar (Abrir). Selecciona ambos os ficheiros.

Abre NewToken.sol, coloca os valores necessários em em vez das variáveis:

totalSupply – número total de fichas

name – o nome completo do token

decimal – o número de zacks após o ponto decimal. O facto é que, nos contratos, tudo é armazenado apenas em números inteiros. Por isso, deves especificar o número de caracteres se quiseres creditar um número não inteiro de tokens.

  • Símbolo – um símbolo para as trocas
  • Compra anúncios
  • Desliga a ficha

O resultado deve ser mais ou menos assim:

Guarda-o. Continua a carregar o contrato na rede. Por exemplo, instala-o na rede de testes Ropsten. Qualquer cliente será necessário para a implantação. Vamos usar o MetaMask – ele não sabe como compilar contratos inteligentes no Solidity, por isso vamos compilar primeiro.

Na parte direita do editor de remixes, abre o separador compilar. Por defeito, o contrato é compilado automaticamente. Se seleccionares o teu contrato no select e clicares em Detalhes, podes ver o bytecode e outras informações.

Para implantar, clica em Executar, seleciona Injected Web3 e seleciona a conta que será implantada (ela deve ser carregada automaticamente se você tiver o MetaMask instalado no navegador). Introduz as informações necessárias nos campos (gás, valor) e clica em Criar.

A MetaMask recolhe a ação da página.

Clica em Enviar. O teu contrato está selado. A expedição é confirmada na MetaMask por um ícone com um documento (leva à página da transação) e a inscrição “Contrato publicado”.

Um contrato inteligente selado é um token.

Passo 3

Operações de Token

As transacções de tokens baseadas no Ethereum requerem duas carteiras – a que já os tem (por defeito, o criador do contrato, o padrão ERC20) e a que precisa de os transferir.

Efectua operações com o nosso token (transferi-lo, por exemplo). Podes fazê-lo na página do contrato inteligente etherscan (ligação no MetaMask) ou na página do remix.

Aqui a azul – operações de leitura, a rosa – operações de escrita.

Para transferir tokens ERC-20, introduz o endereço do destinatário e a quantidade. Depois disso (e de introduzires os dados na blockchain, claro), podes verificar o teu saldo ou o saldo do destinatário dos tokens com a operação balanceOf.

Já está!

Os problemas com o padrão de token ERC 20

Existem dois níveis de emissão de tokens ERC 20. Existem dois níveis: o do utilizador e o do programador.

Para utilizadores de Token

Para os utilizadores comuns, os inconvenientes mais comuns incluem:

  • Baixa taxa de transferência – A rede Ethereum ficou entupida quando os dapps tiveram uma grande procura, como o CryptoKitties (que entretanto mudou para a sua própria cadeia de blocos Flow). Quando isto acontece, a rede fica mais lenta e as transacções tornam-se mais caras.
  • Transacções lentas – O tempo de bloqueio é de cerca de 14 segundos, pelo que as transacções podem demorar até um minuto a serem processadas. Isto pode ser adequado para algumas utilizações ou demasiado lento para outras.
  • ETH para pagamentos de gás – Quando as transações são feitas envolvendo tokens ERC-20, uma segunda criptomoeda é necessária para pagar as taxas de transação. Isto pode aumentar o tempo e o custo, uma vez que pode resultar na acumulação de um saldo de “pó” em diferentes plataformas.

Para programadores de tokens

Os tokens ERC20 têm dois problemas críticos que são conhecidos por causar perdas monetárias. São eles:

  1. Falta de tratamento das transacções.

Existem duas formas de efetuar uma transação em tokens ERC20:

  • função de transferência.
  • aprova + transferFrom mecanismo.

O saldo do token é apenas uma variável dentro do contrato do token.

A transação de um token é uma alteração nas variáveis internas do contrato inteligente (o saldo atual do remetente será diminuído e o do destinatário será aumentado).

A função de transferência não notificará o destinatário de que foi efectuada uma transação. O destinatário não consegue reconhecer a transação recebida! Isto pode levar a transacções não processadas e a perdas monetárias.

Como resultado, se o destinatário for um contrato inteligente, os utilizadores devem transferir os seus tokens erc20 utilizando o algoritmo approve +transferFrom. Se o destinatário for um endereço de conta externo, os utilizadores devem transferir os seus tokens através da função de transferência.

Se um utilizador cometer um erro e escolher a função errada, o token ficará preso no contrato inteligente e a transação não será reconhecida. As fichas erc20 presas serão, portanto, impossíveis de recuperar.

Pelo menos 400 000 dólares foram perdidos devido a este problema.

  1. O mecanismo approve + transferFrom é potencialmente inseguro

Sabe-se que o mecanismo Aprovar + TransferirDe permite a duplicação de despesas.

Isto não é relevante, a não ser que haja a possibilidade de criar trocas de fichas personalizadas, como a target=”_blank”> target=”_blank”> Bancor token changer.

A solução para este problema é a norma de token ERC223.

O padrão de token ERC #223 foi desenvolvido especificamente para resolver os problemas do padrão de token ERC 20.

Todos os programadores de fichas devem prestar atenção a este facto. Desenvolver um token que leve a perdas monetárias para os teus utilizadores não é uma boa solução. Sê responsável pelos desenvolvimentos que estás a realizar.

Como funciona na prática

Alice tem 10 tokens ERC20. Quer enviar 3 fichas ao Bob.

Pode parecer que a Alice tem alguns tokens “no saldo da sua conta” para os utilizadores comuns, mas o saldo do token é apenas uma variável dentro do contrato do token.

A Alice está a iniciar uma transação. De facto, cada transação de token é uma chamada de um contrato de token.

A Alice pede ao contrato simbólico que reduza o seu saldo em 3 e que aumente o saldo do Bob em 3 ao mesmo tempo.

Depois de a transação ser minerada, as variáveis internas deste contrato de token ERC 20 serão alteradas. Ninguém dirá ao destinatário (Bob, neste caso) que a transação ocorreu.

Isto é ótimo para contas externas (ou seja, pertencentes a pessoas). A Alice pode dizer ao Bob que lhe enviou fichas. O Bob pode olhar para a sua balança e perceber que isso aconteceu mesmo.

Este é um problema crítico para os contratos e resulta em tokens perdidos. Os contratos que não foram concebidos para trabalhar com tokens devem rejeitar as transacções de entrada de tokens. Caso contrário, cada contrato torna-se uma potencial armadilha de fichas devido à incapacidade de rejeitar transferências indevidas de fichas.

O ERC, em termos técnicos, é designado por “símbolo de constante pública”. Ethereum Request for Comments é o nome do documento que descreve as regras para a criação de tokens na blockchain.

Implicações jurídicas do ERC20

Do ponto de vista legal, a situação em torno dos tokens ERC 20 é ainda mais vaga do que a das criptomoedas.

Há um grande debate em torno do estatuto jurídico do ERC 20

Na maior parte dos países do mundo, o clima regulamentar neste domínio ou não existe ou tende para a “proibição”. Isto deve-se a uma série de factores, incluindo:

  • Uma grande quantidade de fraudes relacionadas com tokens ERC 20. Uma vez que a essência do token se tornou mais difundida em ligação com as ICO, muitas das quais eram fraudes directas ou ocultas, isto deixou uma marca negativa no conceito.
  • A criptomoeda é um domínio relativamente jovem. A tecnologia Blockchain trouxe grandes inovações ao mundo das tecnologias financeiras. Em primeiro lugar, trata-se da complexidade da regulamentação deste domínio em relação à utilização de tecnologias de descentralização e de falso anonimato. Em segundo lugar, trata-se de um novo domínio na economia global.

Token ERC 20 = Segurança?

  • Há muita discussão em torno do reconhecimento dos tokens ERC 20 como valores mobiliários. Especialmente no que diz respeito aos que procuram criar e distribuir os seus próprios tokens no âmbito de uma ICO, etc. O facto é que os tokens ERC 20 (“acções que dariam retorno aos proprietários”) estariam sujeitos às leis de valores mobiliários nos EUA e na maioria dos outros locais. Nem sequer tens de fazer o teste complexo de Howey. O teste Landreth Timber e outros testes semelhantes são suficientes – uma participação lucrativa numa empresa será, de qualquer modo, considerada uma garantia.
  • O facto de um token ser um título não significa que não o possas vender. As pessoas compram e vendem títulos a toda a hora (pensa nas start-ups de Silicon Valley). Mas para o fazeres, tens de cumprir uma das isenções de colocação privada de títulos previstas na legislação sobre valores mobiliários. Isso significa, normalmente, não o oferecer ao público em geral, não o publicitar, etc. – por outras palavras, o oposto do que a maioria das vendas de fichas está a fazer.
  • Ou podes seguir a via Reg A+ e oferecer o token ao público, mas limitado a um aumento de 50 milhões de dólares e obtendo primeiro a aprovação da SEC e com alguns relatórios contínuos (não tão maus como os relatórios exigidos a uma empresa que apresenta relatórios ao abrigo do Exchange-Act). Existem outras opções de combinação e combinação dentro da mesma zona geral das leis de valores mobiliários.