ERC-20 es una interfaz común para tokens dentro de contratos inteligentes en Ethereum. Describe una forma compartida de solicitar información, como el saldo de tokens de una cuenta, y de interactuar con las transferencias. Es un estándar que pueden implementar distintos contratos de tokens, en lugar del nombre de un token concreto.
Para entender qué es ERC20, conviene separar la interfaz compartida de los datos que devuelve cada contrato. Dos contratos pueden ofrecer los mismos métodos y comunicar suministros y saldos diferentes. Esta distinción ayuda a interpretar la información sin tomar una interfaz conocida como un aval o una garantía económica.
Qué estandariza la interfaz ERC-20
Una interfaz de programación de aplicaciones, o API, define formas de interacción entre programas. ERC-20 establece nombres comunes para los métodos y especifica su significado. Por ejemplo, una aplicación puede solicitar el saldo de una dirección mediante balanceOf, sin necesitar un método de consulta distinto para cada token.
La especificación EIP-20 describe esta interfaz y su propósito: facilitar que otras aplicaciones, incluidas carteras y plataformas de intercambio descentralizadas, puedan utilizar los tokens. La documentación de ERC-20 de Ethereum ofrece una visión general de los métodos y eventos que permiten esa interoperabilidad.
La utilidad práctica consiste en disponer de un vocabulario común para el software. Ese propósito no garantiza la compatibilidad con todas las aplicaciones, especialmente cuando una implementación no cumple el estándar. Reconocer la API tampoco acredita el valor de mercado del token ni la fiabilidad de su implementación. Esas conclusiones requieren pruebas adicionales a la descripción de una interfaz.
Suministro total y saldo de una dirección: dos preguntas distintas
totalSupply() devuelve el suministro total de tokens del contrato consultado. balanceOf(owner) devuelve el saldo de tokens correspondiente a la dirección de cuenta indicada. La primera consulta se refiere al suministro del token; la segunda, a una dirección dentro de ese contrato.
Al interpretar una cantidad, conserva tanto la referencia al contrato como la pregunta que responde. Una cifra presentada únicamente como «25 tokens» deja sin aclarar si representa el suministro total o el saldo de una dirección. También omite qué contrato ha proporcionado el dato.
La especificación define el resultado de totalSupply como suministro total. Esa definición, por sí sola, no establece una valoración de mercado ni identifica una medida independiente de suministro en circulación. Del mismo modo, un saldo es una cantidad asociada a una dirección en el contrato consultado; por sí solo no establece cuánto vale esa cantidad.
Ejemplo hipotético: mismos métodos, saldos diferentes
Consideremos dos contratos de tokens completamente hipotéticos, A y B, y una dirección titular también ficticia. Ambos contratos ofrecen los nombres de métodos de la API ERC-20. Para este ejemplo didáctico, fijamos las siguientes cantidades brutas inventadas:
- Contrato A:
totalSupply()devuelve1000ybalanceOf(titular)devuelve10. - Contrato B:
totalSupply()devuelve5000ybalanceOf(titular)devuelve25.
La dirección titular es la misma y el método de consulta tiene el mismo nombre. Sin embargo, el saldo que hemos estipulado es 10 en A y 25 en B. Los suministros totales también son cantidades separadas.
De la definición de una API común y de la consulta de saldo por dirección se deduce que compartir la forma de hacer una pregunta no exige obtener la misma respuesta en contratos distintos. Tampoco convierte las respuestas en un único saldo. Las cifras son supuestos didácticos: no describen tokens desplegados, precios observados ni condiciones de seguridad.
Qué describen transfer y el evento Transfer
La función especificada de transfer consiste en transferir la cantidad de tokens indicada a la dirección de destino indicada. ERC-20 exige además emitir un evento Transfer cuando se transfieren tokens. Sus campos declarados identifican una dirección de origen, una de destino y una cantidad.
El método describe la operación solicitada; el evento proporciona un registro estructurado de la transferencia. Observar que alguien ha enviado una llamada no basta para establecer que la transferencia especificada se haya producido. Un evento aislado tampoco acredita la honestidad de la implementación, el cumplimiento de una obligación económica de pago ni el comportamiento de reversión de la máquina virtual de Ethereum, o EVM.
El estándar incluye expresamente las transferencias de valor cero y exige que también emitan el evento. De ello se deduce que la presencia de un evento Transfer, por sí sola, no establece que la cantidad sea positiva: sigue siendo necesario leer el campo de valor.
Para interpretar un registro más amplio, puedes consultar cómo leer una transacción de Ethereum en un explorador de bloques. Aquí nos centramos en el comportamiento de transferencia y la estructura del evento que especifica ERC-20.
Nombre, símbolo y decimales son metadatos opcionales
ERC-20 describe tres métodos que ayudan a presentar información. Cuando están disponibles, name() devuelve el nombre del token, symbol() devuelve su símbolo y decimals() indica el número de decimales utilizado para representar las cantidades al usuario.
Los tres métodos son opcionales. La especificación establece que las interfaces y otros contratos no deben dar por hecho que esos valores estén presentes. Por tanto, una explicación de ERC-20 debe contemplar que falten estos metadatos, sin completar silenciosamente un nombre, un símbolo o un número de decimales.
A partir de las definiciones de estos métodos y de balanceOf, se deduce otra distinción: los metadatos y el saldo aportan información diferente. El nombre y el símbolo describen el token; los decimales se refieren a la representación de las cantidades. Ninguno de esos datos constituye por sí mismo el saldo asociado a una dirección.
Si necesitas entender la conversión de cantidades brutas a cifras mostradas, la guía sobre decimales ERC-20 y unidades base desarrolla ese cálculo. Para comprender la interfaz, basta con mantener separadas la representación de una cantidad y la consulta del saldo.
Lista de comprobación para interpretar una explicación de ERC-20
- Identifica el contrato. Mantén cada cantidad vinculada al contrato de tokens del que procede.
- Identifica la pregunta. Distingue el suministro total del saldo correspondiente a una dirección.
- Separa metadatos y cantidades. Un nombre, un símbolo o un número de decimales no responde a la consulta de saldo del titular.
- Contempla metadatos ausentes. No presupongas que los tres métodos opcionales están disponibles.
- Lee los campos de transferencia. Considera conjuntamente origen, destino y cantidad, incluida la posibilidad de un valor cero.
- Conserva los límites. Una API común facilita la interoperabilidad; su presencia aislada no acredita compatibilidad universal, valor, honestidad de la implementación ni cumplimiento de un pago.
Esta lista sirve para interpretar documentación y ejemplos educativos. Aplicarla no requiere enviar tokens ni firmar una solicitud de una cartera.
Material educativo elaborado con ayuda de IA a partir de la documentación primaria enlazada. El ejemplo hipotético explica la interfaz y no constituye una recomendación de realizar transacciones.