Saltar al contenido principal

ERC20 Tokens


ERC20 es actualmente el enfoque dominante para implementar tokens fungibles basados ​​en blockchain. Cada token ERC20 se basa en la interfaz del token ERC20 original, lo que significa que todos comparten un conjunto común de funciones, que incluyen (entre otras):

  • Transferir tokens de una cuenta a otra;
  • Obtener el saldo actual de tokens de una cuenta;
  • Obtener el suministro total del token disponible en la red;
  • Aprobar una cantidad de tokens para ser gastados por una cuenta de terceros;

Para ser compatible con ERC-20, un token debe implementar todas las funciones y eventos siguientes:

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)
event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)

Mejores prácticas

ERC20 es un estándar simple y seguro. Pero debemos tener cuidado en nuestra implementación; Muchos tokens ERC20 han sido explotados a lo largo de los años debido a la inclusión de código adicional con errores.

Por motivos de seguridad, recomendamos utilizar la implementación OpenZeppelin ERC20 para su proyecto, cuyo código fuente se puede encontrar en[ERC20.sol](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts /token/ERC20/ERC20.sol). Puedes hacer esto con los siguientes pasos:

1. Instale los smart contratos de OpenZeppelin en su proyecto ejecutando el siguiente comando:

npm install @openzeppelin/contracts

npm install @openzeppelin/contracts. Luego, puedes importar los contratos en la biblioteca con esto:

// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract GLDToken is ERC20 {
constructor(uint256 initialSupply) ERC20("Gold", "GLD") {
_mint(msg.sender, initialSupply);
}
}

Puede encontrar más información sobre la implementación de OpenZeppelin ERC-20 aquí.

Referencias