O ERC20 é um tipo de token que é baseado na blockchain Ethereum. É um padrão técnico que define um conjunto de regras que todos os tokens baseados em Ethereum devem seguir. Isso permite a criação de tokens que são interoperáveis, o que significa que eles podem ser usados com outros tokens baseados em Ethereum e contratos inteligentes.
O padrão ERC20 define um conjunto de funções que todos os tokens ERC20 devem implementar. Essas funções incluem a capacidade de transferir tokens, verificar o saldo de um detentor de token e permitir que outros aprovem a transferência de tokens em nome do detentor do token. Isso permite a criação de tokens que podem ser facilmente negociados em exchanges baseadas em Ethereum e usados em uma variedade de aplicativos.
O padrão ERC-20 especifica seis funções diferentes que um contrato inteligente deve implementar para ser considerado compatível com o ERC-20. Essas funções incluem:
-
totalSupply
: esta função retorna o suprimento total de tokens. -
balanceOf
: esta função leva um endereço como entrada e retorna o número de tokens que são de propriedade daquele endereço. -
transfer
: esta função é usada para transferir um número especificado de tokens de um endereço para outro. -
transferFrom
: esta função é usada para transferir um número especificado de tokens de um endereço para outro, com a aprovação do dono do token. -
approve
: esta função é usada para aprovar outro endereço para transferir tokens em nome do dono do token. -
allowance
: esta função retorna o número de tokens que um endereço está autorizado a transferir em nome do dono do token.
Além dessas funções, o ERC-20 também define dois eventos que devem ser incluídos no contrato inteligente:
-
Transfer
: este evento é acionado sempre que tokens são transferidos de um endereço para outro. Ele inclui os endereços do remetente e do destinatário, bem como o número de tokens que foram transferidos. -
Approval
: este evento é acionado sempre que a funçãoapprove
é chamada e inclui o endereço do dono do token, o endereço aprovado e o número de tokens que foram aprovados para transferência.
Essas funções e eventos são usados para habilitar a transferência e gerenciamento de tokens ERC-20 na blockchain Ethereum.
pragma solidity ^0.6.0;
contract ERC20 {
// Defina as variáveis e eventos necessários
string public name;
string public symbol;
uint8 public decimals;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
// Implemente as funções necessárias
function ERC20(string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply) public {
name = _name;
symbol = _symbol;
decimals = _decimals;
totalSupply = _totalSupply;
balanceOf[msg.sender] = totalSupply;
}
function totalSupply() public view returns (uint256) {
return totalSupply;
}
function balanceOf(address _owner) public view returns (uint256) {
return balanceOf[_owner];
}
function transfer(address _to, uint256 _value) public {
require(balanceOf[msg.sender] >= _value && _value > 0);
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
emit Transfer(msg.sender, _to, _value);
}
function transferFrom(address _from, address _to, uint256 _value) public {
require(balanceOf[_from] >= _value && allowance[_from][msg.sender] >= _value && _value > 0);
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
allowance[_from][msg.sender] -= _value;
emit Transfer(_from, _to, _value);
}
function approve(address _spender, uint256 _value) public {
allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
}
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowance[_owner][_spender];
}
}
Neste exemplo, o construtor do contrato ERC20
leva quatro parâmetros: _name
, _symbol
, _decimals
e _totalSupply
. Esses são usados para inicializar o contrato com o nome, símbolo, número de casas decimais e suprimento total do token.
A função totalSupply
simplesmente retorna o valor da variável totalSupply
, que representa o número total de tokens em circulação. A função balanceOf
leva um endereço como entrada e retorna o número de tokens que são de propriedade daquele endereço.
A função transfer
é usada para transferir um número especificado de tokens do proprietário do contrato para outro endereço. Ele exige que o remetente tenha tokens suficientes para fazer a transferência e emite um evento Transfer
para registrar a transferência.
A função transferFrom
é similar à transfer
, mas permite a transferência de tokens em nome de outro endereço com a aprovação do token.
Uma das principais vantagens dos tokens ERC20 é que eles são facilmente integrados com outros sistemas baseados em Ethereum. Isso significa que os desenvolvedores podem criar aplicativos e contratos inteligentes que podem interagir com tokens ERC20 sem precisar escrever muito código personalizado. Isso simplifica muito o processo de criação e uso de tokens na plataforma Ethereum.
Outra vantagem dos tokens ERC20 é que eles são altamente personalizáveis. Os desenvolvedores podem criar tokens que tenham modelos de suprimento diferentes, como suprimento fixo ou inflacionário, e também podem especificar outros parâmetros, como o nome do token e o número de casas decimais. Isso permite a criação de tokens que são adequados para casos de uso específicos e podem ser facilmente integrados em vários aplicativos.
Apesar de suas muitas vantagens, os tokens ERC20 têm algumas limitações. Por exemplo, eles não são capazes de suportar lógicas de negócios complexas ou realizar cálculos, pois isso está fora do escopo do padrão ERC20. Além disso, a própria blockchain Ethereum tem problemas de escalabilidade que podem afetar o desempenho dos tokens ERC20, especialmente quando são usados em aplicativos com altos volumes de transações.
Em geral, os tokens ERC20 são uma parte importante do ecossistema Ethereum e permitiram a criação de muitos aplicativos e serviços inovadores. Eles fornecem um conjunto padrão de regras para a criação e uso de tokens na plataforma Ethereum, tornando mais fácil para os desenvolvedores criarem e integrarem tokens em seus aplicativos.
Artigo original publicado por Charam. Traduzido por Paulinho Giovannini.
Top comments (0)