< Todos os Posts

token

Por que os Tokens são importantes ?

Desde incentivos, desenvolvimento de comunidades e protocolos até um novo modelo de governança e a comunicação entre o sistema centralizado e o descentralizado. Por que eles são importantes ? Por que surgem tantos tokens diferentes? A palavra chave para tudo isso é incentivo.   

Se você está minimamente familiarizado com assuntos relacionados a blockchain, provavelmente já ouviu mais de uma vez a palavra Token, sejam eles fundíveis ou não- fungíveis, token de jogo,meme tokens, token de governança, tokens, tokens e mais tokens…

token

Calma que vamos te ajudar, mas antes de partirmos nessa jornada precisamos alinhar um tópico: Token e Moeda são duas coisas diferentes.

Moedas ou CriptoMoedas são definidas pelo protocolo, sendo as moedas o principal ativo da rede blockchain a qual elas pertencem, exemplo a Bitcoin é a moeda do Blockchain Bitcoin, Ether é a moeda do Blockchain Ethereum, Sol é a moeda do Blockchain Solana. As moedas apresentam papel fundamental no incentivo à validação das transações que ocorrem na blockchain, mas esse é um assunto para outro artigo.

Os tokens são construídos no topo dos protocolos blockchain e são definidos pelos contratos inteligentes, os tokens devem seguir as regras conforme o protocolo ao qual ele é construído. Por exemplo na Ethereum os tokens são ERC20, ECR721 e ECR1155. Na Binance  BEP-20 e ECR721. 

Diferente das moedas, os tokens podem ser criados por qualquer pessoa através da programação de um contrato inteligente, por isso vemos a criação de infinitos tokens todos os dias e é aí que devemos nos atentar.

Os tokens são ferramentas fundamentais na expansão das aplicações descentralizadas, por isso entender suas funcionalidades é requisito básico para qualquer usuário.

Qual a importância dos Tokens?

A função principal dos tokens é ser um incentivo e conferir governança aos “holders”. Ter tokens de governança faz com que você seja parte efetiva no futuro do protocolo, ou seja, a descentralização dos projetos se refletem na distribuição dos tokens de governança e na variedade de endereços que possuem esses tokens em suas carteiras. Quanto mais diverso os endereços que “seguram”, mais descentralizado a aplicação é. 

Os aplicativos descentralizados podem criar tokens conforme seu modelo de negócio para incentivar os usuários a interagir com a rede e então gerar recompensas que serão compartilhadas com todos os “holders” dos tokens.

Para clarificar, vamos usar um exemplo: digamos que a Goblockchain crie um token chamado Gotoken. Conforme o usuário interage com a rede, ele começa a ser recompensado com o Gotoken, ao compartilhar um post, fazer um curso, sendo que esse token tem também funções de governança, isso significa que todas as carteiras digitais que tenham os Gotokens terão direito a participar em decisões sobre o futuro da Goblockchain, por isso as aplicações descentralizadas são vistas como colaborativas.

Nos jogos “play to earn”, o jogador é recompensado conforme sua performance no jogo e em alguns jogos só o fato de jogar já é suficiente para ganhar os tokens, por exemplo no cryptobombs ao destruir os baús, o jogador recebe BCOINs que é a token do jogo, e esse pode ser trocado por USDT ou por outros tokens nas DEx da Binance Smartchain. 

image1 2
screenshot: Cryptobombs playToEarn

Nos ecossistemas DeFi, os tokens são distribuídos aos LP’s como forma de atrair usuários para prover liquidez nos pools. Esse tipo de distribuição de recompensa permite que os usuários dos protocolos sejam parte do ecossistema e geram mais valor ao token. 

Tokens Padrão do Protocolo Ethereum

ERC-20 : Token fundível padrão da rede ethereum que implementa API para tokens dentro de um contrato inteligente. Exemplos de funções características ao ERC-20:

  • Transferência de token entre contas 
  • Mostrar o balanço corrente de uma conta
  • Mostrar o total de token disponível na rede
  • aprovar o quanto de um conta corrente pode ser gasto por uma terceira parte

Se um contrato inteligente implementar essas funções e os eventos pode ser chamado de ERC-20 Token contrato, e quando for enviado para rede de blockchain(deploy) manterá a rastreabilidade do token criado na Ethereum.

Funções

				
					<function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)>

				
			

Eventos

				
					<event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)>

				
			

ERC -721: O token ERC721 é muito conhecido pelas siglas NFT (Non-Fungible Token) sendo utilizado para identificar algo ou alguém de forma única. Diferente do ERC20 que nos confere tokens idênticos, o token ERC721 nos oferece a exclusividade, portanto nenhum token é igual ao outro.

 Hoje sua aplicação é mais conhecida devido aos itens colecionáveis, como por exemplo o projeto “Word of Women – WOW” que apresenta uma coleção de 10.000 figurinhas onde cada uma apresenta características distintas e seu contrato exclusivo. Dizemos que são tokens não fungíveis pois eles não podem ser somados igual o caso do ERC20: 1 Eth + 1 Eth = 2 Ethers, 1 WOW + 1 WOW = 1 WOW + 1 WOW, não podem ser somados pois são contratos inteligentes totalmente distintos. 

image2 3

0xe785E82358879F061BC3dcAC6f0444462D4b5330 endereço do contrato inteligente token ECR721 – WOW  tokenId #9104

image3 2

O ERC-721 introduz o padrão para os tokens NFT, onde esse tipo de token é único e pode ter diferentes valores de outro token do mesmo contrato inteligente, todos os NFT’s tem uma variável tipo uint256 chamada tokenId, então para qualquer ERC-721 o par contract address, uint246 tokenId é globalmente único, portanto os dApp podem ter um conversor que usa o tokenId como entrada e devolve uma imagem, como no caso do Token WOW mostrado acima.

ERC721 é a um padrão de token não fundível que implementa APIs dentro de um contrato inteligente. Sua principais funções são:

  • Transferir tokens de uma conta para outra conta
  • Ver o balanço corrente da conta
  • Ver o dono de um token específico 
  • Total de tokens disponíveis na rede
  • Funcionalidade que permite aprovação de movimentação de uma determinada quantia de tokens de uma conta por um terceiro.
				
					  <  function balanceOf(address _owner) external view returns (uint256);
    function ownerOf(uint256 _tokenId) external view returns (address);
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
    function approve(address _approved, uint256 _tokenId) external payable;
    function setApprovalForAll(address _operator, bool _approved) external;
    function getApproved(uint256 _tokenId) external view returns (address);
    function isApprovedForAll(address _owner, address _operator) external view returns (bool); >

				
			

Os métodos e eventos que devem ser seguidos para um token ser considerado um ERC – 721.

				
					<    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); 

				
			

ERC-1155 Interface padrão de contrato para múltiplos tipos de tokens. Com o deploy de um único contrato inteligente pode conter combinação de tokens fundíveis, tokens não fundíveis e outras configurações como semi – fundíveis.  

O ERC-1155 token pode exercer tanto as funções do tipo ERC-20 quanto do tipo ERC-721, até mesmo os dois ao mesmo tempo, com melhorias no padrão dos dois tokens.

Funções do ERC - 1155

  • Batch Transfer: Transferência de múltiplos ativos em um único call.

As transações em batch ocorre de forma similar ao padrão do Token ERC-20, sendo a única diferença que os valores são passado como um Array (“lista”) e também passar um array de Id’s. ex: ids =[3, 6, 13] e values=[100, 200, 5] ou seja os valores serão transferidos respectivamentes para os id’s informados todos em um único “call”.

				
					<// ERC-20
function transferFrom(address from, address to, uint256 value) external returns (bool);

// ERC-1155
function safeBatchTransferFrom(
    address _from,
    address _to,
    uint256[] calldata _ids,
    uint256[] calldata _values,
    bytes calldata _data
) external;>

				
			
  • Batch Balance: Ver o balanço de múltiplos ativos em um único call.

Diferente do ERC-20 temos o batch balanceando  passando o array dos endereços dos donos, seguido pelo token id’s.

				
					// ERC-20
function balanceOf(address owner) external view returns (uint256);

// ERC-1155
function balanceOfBatch(
    address[] calldata _owners,
    uint256[] calldata _ids
) external view returns (uint256[] memory);

				
			
  • Batch Approval: aprovar todos os tokens a um endereço.

Balance approval é necessário configurar a operação para aprovar tudo ou reprovar tudo, nesse função não tem como definir quantos tokens aprovar ou qual token aprovar.

				
					<// ERC-1155
function setApprovalForAll(
    address _operator,
    bool _approved
) external;

function isApprovedForAll(
    address _owner,
    address _operator
) external view returns (bool);>

				
			
  • Hooks: Receber tokens
				
					<function onERC1155BatchReceived(
    address _operator,
    address _from,
    uint256[] calldata _ids,
    uint256[] calldata _values,
    bytes calldata _data
) external returns(bytes4);>

				
			

A função “Hook” garante que ao executá-la, ela retorna um código pré-definido byte4 vindo do contrato inteligente que a função está interagindo.  Se o contrato que estamos querendo interagir retorna esse byte4, isso quer dizer que o contrato aceitar receber e sabe como interagir com o token ERC 1155. Essa melhoria evita que tokens fiquem presos em contratos inteligentes! 

Digamos que queremos mandar um token ERC 1155 do contrato A para o contrato B, o contrato B emite um hook e retorna ao contrato A a variável byte4, o que garante ao contrato A que o contrato B suporta o token.

O código mágico o está descrito abaixo:

				
					<bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))>

				
			
  • NFT Support: Se a demanda é única, tratar como NFT.

Quando a demanda do token for única, entende-se como um NFT, e como padrão dos NFT’s pode-se definir uma URL metadata. A URL pode ser lida e modificada através dos clientes.

  • Safe Transfer Rules: Regras para garantir a segurança em transações.

Algumas regras importantes para manter as transações seguras.

  1. Quem está chamando a função tem que estar aprovado para gastar os tokens pelo endereço _from ou quem está chamando a função tem que ter o endereço igual o _from.
  1. A transferência deve ser revertida se: 
  1. _to endereço é igual a 0.
  2. A extensão dos _ids não é a mesma dos _valores.
  3. O balanço dos tokens no _id é menor que a quantidade configurada no _values para ser enviada.
  4. qualquer outro erro que aconteça.

Todas as funções Batches podem ser executadas de forma únicas, essa forma de batch é feita para melhorar a eficiência do gás, mesmo para transferência de um único ativo, essa forma ainda é a mais eficiente, a única diferença é a remoção da palavra ‘Batch’ durante a programação.

Tokens Padrão do Protocolo Binance SmartChain

BEP-20 – Esse token é muito similar ao token ERC-20, apresenta funções iguais aos do ERC-20 como balanço da conta, transferência entre carteiras, quantos tokens foram lançados e outras regras para sua utilização.

Sua principal diferença do ERC-20 é a rede na qual é utilizado, no caso do BEP-20 ele deve ser desenvolvido e lançado na rede blockchain da binance SmartChain. E as recompensas pelo deploy desses tokens na blockchain da binance vão gerar recompensas em BNB para os mineradores. No core é igual ao que vimos no tokens da Ethereum, só muda a rede.

Conclusão

Os tokens são essenciais na manutenção de qualquer dApps, DeFi, play to earn, coleção de NFT’s, DAO’s, etc. Eles incentivam a utilização das redes através de recompensas e giram a economia descentralizada, criando novas fontes de renda e microeconomias.

Os tokens são contratos inteligentes que seguem um determinado padrão, onde apresentam funções e métodos que definem o tipo de token. Nesse artigo apresentamos os padrões de tokens mais utilizados do protocolo Ethereum e da Binance.

Cada protocolo de blockchain tem seus padrões para seus tokens, por isso dependendo de qual rede você for utilizar, seja no desenvolvimento do seu tokens, ou na utilização dos aplicativos é indispensável o estudo desses padrões, suas funções, métodos e em qual situação aplicá-los conforme a necessidade do negócio.

Todos os dias novos tokens são criados, qualquer usuário pode criar um token e lançar em uma DEx, por isso sempre tenha cuidado! Antes de tomar qualquer decisão, estude sobre o token e entenda sua aplicabilidade, isso pode vir a te proteger de golpes ou casos de “pump and dump”.

Estamos vivendo uma revolução no modelo dos serviços digitais, onde ao invés de empresas centralizadas e grandes monopólios tecnológicos, vemos a criação de serviços descentralizadas onde os usuários lucram e participam do desenvolvimento das aplicações aos quais eles interagem, criando uma economia colaborativa e descentralizada. Onde o usuário deixa de ser o produto para se tornar parte vital no sucesso desse novo modelo de negócio. 

Sejam os tokens aplicados como incentivo financeiro, governança de protocolos, certificado de posse e/ou obras de artes, eles vieram para ficar! Se você tem dúvidas, curiosidades sobre os temas de DeFis, Blockchain, DevOps e muito mais, fique ligado nas nossas redes sociais e vamos juntos construir o futuro da internet. 

Glossário:

ERC-20 (Ethereum Request for Comments 20) 

ERC -721 Ethereum Request for Comments 721

Holder: Carteiras digitais que tem em seu balanço determinados tokens e/ou moedas.

LP’s: Liquidity provider – usuário que tranca suas moedas em um contrato inteligente de um pool de liquidez.

Deploy – Enviar o contrato inteligente para a rede blockchain.

Links

Aviso Legal: Esta postagem é apenas para fins educacionais. Não constitui um conselho de investimento ou uma recomendação ou solicitação para comprar ou vender qualquer investimento e não deve ser usado na avaliação do mérito da tomada de qualquer decisão de investimento. Não deve ser invocado para aconselhamento contábil, jurídico ou tributário ou recomendações de investimento.

Postagens recentes

blog
Talita Paes

Celebridades que utilizam NFTs

Celebridades que utilizam NFTs Por que celebridades como Neymar e Justin Bieber estão de olho nas NFTs Os NFTs caíram no gosto de celebridades, nomes

Read More »
EnglishPortuguêsEspañol