ERC20 & EIP-20
WEB3DEV Team
# ERC20 & EIP-20
La propuesta EIP-20 (opens new window) fue creada por Vitalik Buterin y Vogelsteller en noviembre de 2015 como una forma de traer estándares de desarrollo para implementar tokens fungibles.
Se sabe que el primer token en formato ERC-20 que se creó basado en este “estándar de desarrollo” fue el FirstBlood Token (opens new window) implementado en el bloque 2320114 (opens new window).
# En este artículo verá referencias a los estándares sugeridos por los desarrolladores de Ethereum y OpenZeppelin (opens new window).
# Tokens ERC-20
Tienen 6 funciones obligatorias , otras opcionales y activan 2 eventos obligatorios.
# Funciones Obligatorias:
# totalSupply: Retorna la cantidad de tokens disponibles.
function totalSupply() public view returns (uint256)
# balanceOF: Retorna el saldo de una dirección estipulada como _owner.
function balanceOf(address _owner) public view returns (uint256 balance)
# transfer: Transfiere una cantidad _value de tokens hacia la cuenta _to.
function transfer(address _to, uint256 _value) public returns (bool success)
# transferFrom: Permite que direcciones autorizadas hagan transferencias "en su nombre" (Función usada por las DEX para hacer compra y venta).
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
# approve: Otorga autorización para que una dirección _spender pueda retirar un valor máximo, el cual es mostrado en _value.
function approve(address _spender, uint256 _value) public returns (bool success)
# Retorna el valor que el _spender está autorizado a sacar.
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
# Funciones Opcionales:
name: Retorna el nombre del Token
function name() public view returns (string)
# symbol: Retorna el símbolo del Token.
function symbol() public view returns (string)
# decimals: Retorna la cantidad de casas decimales que el Token posee.
function decimals() public view returns (uint8)
# Eventos
# event Approval: Siempre que una dirección autorice a otras direcciones a mover su saldo.
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
# event Transfer: Siempre que exista una transferencia o quema de tokens.
event Transfer(address indexed _from, address indexed _to, uint256 _value)
# Extensiones
# ERC20Mintable:
Permite que las direcciones autorizadas creen nuevos tokens.
modifier onlyMinter()
mint(account, amount) onlyMinter() {}
# ERC20Burnable:
Quemará tokens de la dirección que llame a esta función.
burn(amount)
burnFrom(account, amount)
# ERC20Pausable:
Permite pausar operaciones de compra y venta.
Modifiers:
onlyPauser()
whenNotPaused()
whenPaused()
# ERC20Capped:
Hay un límite de tokens que se pueden crear.
constructor(cap) {}
require(totalSupply().add(amount) <= _cap); //Insertar en la función mint