Introducción
Ethereum fue fundada por Vitalik Buterin en 2014, posicionándose como una plataforma de código abierto para el lanzamiento de aplicaciones descentralizadas (DApps). Muchas de las motivaciones de Buterin para crear una nueva cadena de bloques surgieron de la falta de flexibilidad del protocolo Bitcoin.
Desde su lanzamiento, la cadena de bloques Ethereum ha atraído a desarrolladores, empresas y emprendedores, generando una creciente industria de usuarios que lanzan contratos inteligentes y aplicaciones distribuidas.
En este artículo, veremos el estándar ERC-20, un marco importante para la creación de tokens. Si bien es específico de la red Ethereum, el marco también inspiró otros estándares de blockchain, como el BEP-2 de Binance Chain.
¿Qué es el estándar ERC-20?
En Ethereum, un ERC es una solicitud de comentarios de Ethereum. Estos son documentos técnicos que describen los estándares para la programación en Ethereum. No deben confundirse con las propuestas de mejora de Ethereum (EIP), que, al igual que las BIP de Bitcoin, sugieren mejoras en el protocolo mismo. En cambio, los ERC tienen como objetivo establecer convenciones que faciliten la interacción entre aplicaciones y contratos.
Escrito por Vitalik Buterin y Fabian Vogelsteller en 2015, ERC-20 propone un formato relativamente simple para tokens basados en Ethereum. Siguiendo el esquema, los desarrolladores no necesitan reinventar la rueda. En cambio, pueden construir sobre una base que ya se utiliza en toda la industria.
Una vez que se crean nuevos tokens ERC-20, son interoperables automáticamente con servicios y software que admiten el estándar ERC-20 (billeteras de software, billeteras de hardware, intercambios, etc.).
Cabe señalar que el estándar ERC-20 se desarrolló en un EIP (específicamente, EIP-20). Esto ocurrió un par de años después de la propuesta original debido a su uso generalizado. Sin embargo, incluso años después, el nombre “ERC-20” se ha mantenido.
Un resumen rápido de los tokens Ethereum
A diferencia de ETH (la criptomoneda nativa de Ethereum), los tokens ERC-20 no se mantienen en cuentas. Los tokens sólo existen dentro de un contrato, que es como una base de datos autónoma. Especifica las reglas para los tokens (es decir, nombre, símbolo, divisibilidad) y mantiene una lista que asigna los saldos de los usuarios a sus direcciones de Ethereum.
Para mover tokens, los usuarios deben enviar una transacción al contrato pidiéndole que asigne parte de su saldo a otra parte. Por ejemplo, si Alice quiere enviar 5000 BinanceAcademyTokens a Bob, llama a una función dentro del contrato inteligente de BinanceAcademyToken pidiéndole que lo haga.
Su llamada está contenida dentro de lo que parece ser una transacción regular de Ethereum que paga 0 ETH al contrato del token. La llamada se incluye en un campo adicional de la transacción, que especifica lo que Alice quiere hacer (en nuestro caso, transferir tokens a Bob).
Aunque no envía ether, aún debe pagar una tarifa denominada en él para que su transacción se incluya en un bloque. Si no tiene ETH, necesita obtener algo antes de transferir los tokens.
Aquí hay un ejemplo del mundo real de lo anterior en Etherscan: alguien está realizando una llamada al contrato BUSD. Puede ver que se transfirieron tokens y se pagó una tarifa, aunque el campo Valor muestra que se han enviado 0 ETH.
Ahora que estamos al día, echemos un vistazo bajo el capó para comprender mejor la estructura de un contrato ERC-20 típico.
¿Cómo se crean los tokens ERC-20?
Para cumplir con ERC-20, su contrato debe incluir seis funciones obligatorias: suministro total, saldo de, transferencia, transferencia desde, aprobación y asignación. Además, puede especificar funciones opcionales, como nombre, símbolo y decimal. Puede que le quede claro qué hacen esas funciones a partir de sus nombres. Si no, no te preocupes: los analizaremos.
A continuación se muestran las funciones tal como aparecen en el lenguaje Solidity especialmente diseñado por Ethereum.
oferta total
función totalSupply() devuelve la vista pública (uint256)
Cuando la llama un usuario, la función anterior devuelve el suministro total de tokens que contiene el contrato.
equilibrio de
función balanceOf(dirección _propietario) devuelve la vista pública (saldo uint256)
A diferencia de totalSupply, balanceOf toma un parámetro (una dirección). Cuando se llama, devuelve el saldo de las tenencias de tokens de esa dirección. Recuerda que las cuentas de la red Ethereum son públicas, por lo que puedes consultar el saldo de cualquier usuario siempre que conozcas su dirección.
transferir
transferencia de función (dirección _a, uint256 _valor) devoluciones públicas (éxito bool)
transfer transfiere tokens de un usuario a otro. Aquí, usted proporciona la dirección a la que desea enviar y el monto a transferir.
Cuando se llama, la transferencia desencadena algo llamado evento (transferencia de evento, en este caso), que básicamente le dice a la cadena de bloques que incluya una referencia a él.
Transferido de
función transferFrom(dirección _from, dirección _to, uint256 _value) devoluciones públicas (bool exitoso)
La función transferFrom es una alternativa útil a la transferencia que permite un poco más de programabilidad en aplicaciones descentralizadas. Al igual que la transferencia, se utiliza para mover tokens, pero esos tokens no necesariamente tienen que pertenecer a la persona que llama al contrato.
En otras palabras, puedes autorizar a alguien (u otro contrato) a transferir fondos en tu nombre. Un posible caso de uso implica pagar por servicios basados en suscripción, donde no desea enviar un pago manualmente todos los días/semanas/mes. En lugar de eso, simplemente deja que un programa lo haga por usted.
Esta función desencadena el mismo evento que la transferencia.
aprobar
función aprobar (dirección _spender, uint256 _value) devoluciones públicas (éxito bool)
aprobar es otra función útil desde el punto de vista de la programabilidad. Con esta función, puede limitar la cantidad de tokens que un contrato inteligente puede retirar de su saldo. Sin él, corre el riesgo de que el contrato no funcione correctamente (o sea explotado) y le roben todos sus fondos.
Tomemos nuevamente nuestro ejemplo de modelo de suscripción. Suponga que tiene una gran cantidad de BinanceAcademyTokens y desea configurar pagos recurrentes semanales a una DApp de transmisión. Estás ocupado leyendo el contenido de Binance Academy día y noche, por lo que no quieres tomarte el tiempo cada semana para crear una transacción manualmente.
Tiene un saldo enorme de BinanceAcademyTokens, que supera con creces lo necesario para pagar la suscripción. Para evitar que la DApp los agote todos, puede establecer un límite con aprobación. Supongamos que su suscripción cuesta un BinanceAcademyToken por semana. Si limita el valor aprobado a veinte tokens, su suscripción podría pagarse automáticamente durante cinco meses.
En el peor de los casos, si la DApp intenta retirar todos sus fondos o si encuentra un error, sólo podrá perder veinte tokens. Puede que no sea lo ideal, pero ciertamente es más atractivo que perder todas sus posesiones.
Cuando se llama, aprobar desencadena el evento de aprobación. Al igual que el evento de transferencia, escribe datos en la cadena de bloques.
prestación
asignación de función (dirección _propietario, dirección _spender) devuelve la vista pública (uint256 restante)
La asignación se puede utilizar junto con aprobar. Cuando haya otorgado permiso a un contrato para administrar sus tokens, puede usarlo para verificar cuántos aún puede retirar. Por ejemplo, si su suscripción ha consumido doce de sus veinte tokens aprobados, llamar a la función de asignación debería devolver un total de ocho.
Las funciones opcionales
Las funciones antes comentadas son obligatorias. Por otro lado, no es necesario incluir el nombre, el símbolo y el decimal, pero pueden hacer que su contrato ERC-20 sea un poco más bonito. Respectivamente, le permiten agregar un nombre legible por humanos, establecer un símbolo (es decir, ETH, BTC, BNB) y especificar con cuántos decimales son divisibles los tokens. Por ejemplo, los tokens que se utilizan como monedas pueden beneficiarse más al ser más divisibles que un token que representa la propiedad de una propiedad.
Consulte este ejemplo en GitHub para ver estos elementos en un contrato real.
¿Qué pueden hacer los tokens ERC-20?
Al reunir todas las funciones anteriores, obtenemos un contrato ERC-20. Podemos consultar el suministro total, verificar saldos, transferir fondos y otorgar permisos a otras DApps para que administren tokens por nosotros.
Una gran parte del atractivo de los tokens ERC-20 es su flexibilidad. Las convenciones establecidas no restringen el desarrollo, por lo que las partes pueden implementar características adicionales y establecer parámetros específicos para satisfacer sus necesidades.
Monedas estables
Las monedas estables (tokens vinculados a monedas fiduciarias) suelen utilizar el estándar de token ERC-20. La transacción del contrato BUSD a la que hicimos referencia anteriormente es un ejemplo, y la mayoría de las monedas estables más importantes también están disponibles en este formato.
Para una moneda estable típica respaldada por dinero fiduciario, un emisor mantiene reservas de euros, dólares, etc. Luego, por cada unidad de su reserva, emite un token. Esto significa que si se guardaran 10.000 dólares en una bóveda, el emisor podría crear 10.000 tokens, cada uno canjeable por 1 dólar.
Esto es bastante fácil de implementar en Ethereum, técnicamente hablando. Un emisor simplemente lanza un contrato con 10.000 tokens. Luego, los distribuirán a los usuarios con la promesa de que luego podrán canjear los tokens por una cantidad proporcional de moneda fiduciaria.
Los usuarios pueden hacer varias cosas con sus tokens: pueden comprar bienes y servicios o usarlos en DApps. Alternativamente, podrían solicitar que el emisor los intercambie de inmediato. En ese caso, el emisor quema los tokens devueltos (haciéndolos inutilizables) y retira la cantidad correcta de fiat de sus reservas.
El contrato que rige este sistema, como ya hemos dicho, es relativamente simplista. Sin embargo, lanzar una moneda estable requiere mucho trabajo en factores externos como la logística, el cumplimiento normativo, etc.
Fichas de seguridad
Los tokens de seguridad son similares a las monedas estables. A nivel de contrato ambos podrían incluso ser idénticos ya que funcionan de la misma manera. La distinción se produce a nivel del emisor. Los tokens de seguridad representan valores, como acciones, bonos o activos físicos. A menudo (aunque no siempre es así), otorgan a su titular algún tipo de participación en un negocio o bien.
Fichas de utilidad
Los tokens de utilidad son quizás los tipos de tokens más comunes que se encuentran en la actualidad. A diferencia de las dos ofertas anteriores, no están respaldadas por nada. Si los tokens respaldados por activos son como acciones de una compañía aérea, entonces los tokens de utilidad son como programas de viajero frecuente: cumplen una función, pero no tienen valor externo. Los tokens de utilidad pueden atender una gran variedad de casos de uso, sirviendo como moneda en el juego, combustible para aplicaciones descentralizadas, puntos de fidelidad y mucho más.
➠ ¿Quieres empezar a utilizar criptomonedas? ¡Compre ether en Binance!
¿Puedes extraer tokens ERC-20?
Puedes extraer ether (ETH), pero los tokens no se pueden extraer; decimos que se acuñan cuando se crean otros nuevos. Cuando se lanza un contrato, los promotores distribuyen el suministro según sus planes y hoja de ruta.
Normalmente, esto se hace a través de una Oferta Inicial de Monedas (ICO), una Oferta Inicial de Intercambio (IEO) o una Oferta de Token de Seguridad (STO). Es posible que encuentre variaciones de estas siglas, pero estos conceptos son bastante similares. Los inversores envían ether a la dirección del contrato y, a cambio, reciben nuevos tokens. El dinero recaudado se utiliza para financiar el desarrollo del proyecto. Los usuarios esperan poder utilizar sus tokens (ya sea inmediatamente o en una fecha posterior) o revenderlos para obtener ganancias a medida que se desarrolle el proyecto.
No es necesario automatizar la distribución de tokens. Muchos eventos de financiación colectiva permiten a los usuarios pagar con una variedad de monedas digitales diferentes (como BNB, BTC, ETH y USDT). Luego se asignan los saldos respectivos a las direcciones proporcionadas por los usuarios.
Pros y contras de los tokens ERC-20
Ventajas de los tokens ERC-20
Fungible
Los tokens ERC-20 son fungibles: cada unidad es intercambiable por otra. Si tuvieras un BinanceAcademyToken, no importaría qué token específico tuvieras. Podrías cambiarlo por el de otra persona y seguirían siendo funcionalmente idénticos, como el dinero en efectivo o el oro.
Esto es ideal si su token pretende ser una moneda de algún tipo. No querrías unidades individuales con rasgos distinguibles, lo que las haría no fungibles. Esto podría hacer que algunos tokens se vuelvan más (o menos) valiosos que otros, socavando su propósito.
Flexible
Como exploramos en la sección anterior, los tokens ERC-20 son altamente personalizables y pueden adaptarse a muchas aplicaciones diferentes. Por ejemplo, se pueden utilizar como moneda del juego, en programas de puntos de fidelidad, como objetos coleccionables digitales o incluso para representar obras de arte y derechos de propiedad.
Popular
La popularidad de ERC-20 en la industria de las criptomonedas es una razón muy convincente para utilizarlo como modelo. Hay una gran cantidad de intercambios, billeteras y contratos inteligentes que ya son compatibles con los tokens recién lanzados. Es más, la documentación y el soporte para desarrolladores son abundantes.
Contras de los tokens ERC-20
Escalabilidad
Como ocurre con muchas redes de criptomonedas, Ethereum no es inmune a los problemas de crecimiento. En su forma actual, no escala bien: intentar enviar una transacción en horas punta genera altas tarifas y retrasos. Si lanza un token ERC-20 y la red se congestiona, su usabilidad podría verse afectada.
Este no es un problema exclusivo de Ethereum. Más bien, es una compensación necesaria en sistemas distribuidos y seguros. La comunidad planea abordar estos problemas en la migración a Ethereum 2.0, que implementará actualizaciones como Ethereum Plasma y Ethereum Casper.
Obtenga más información sobre los problemas de escalabilidad en Escalabilidad de Blockchain: cadenas laterales y canales de pago.
Estafas
Si bien no es un problema con la tecnología en sí, la facilidad con la que se puede lanzar un token podría considerarse una desventaja en algunos aspectos. Se necesita un esfuerzo mínimo para crear un token ERC-20 simple, lo que significa que cualquiera podría hacerlo, para bien o para mal.
Como tal, debes tener cuidado con lo que estás invirtiendo. Hay una serie de esquemas piramidales y ponzi disfrazados de proyectos blockchain. Haga su propia investigación antes de invertir para llegar a sus propias conclusiones sobre si una oportunidad es legítima.
ERC-20, ERC-1155, ERC-223, ERC-721: ¿cuál es la diferencia?
ERC-20 fue el primer (y, hasta la fecha, el más popular) estándar de token de Ethereum, pero de ninguna manera es el único. A lo largo de los años, han surgido muchos otros, ya sea proponiendo mejoras en ERC-20 o intentando lograr objetivos completamente diferentes.
Algunos de los estándares menos comunes son los que se utilizan en los tokens no fungibles (NFT). A veces, su caso de uso realmente se beneficia al tener tokens únicos con diferentes atributos. Si quisieras tokenizar una obra de arte única, un activo del juego, etc., uno de estos tipos de contrato podría ser más atractivo.
El estándar ERC-721, por ejemplo, se utilizó para la inmensamente popular DApp CryptoKitties. Dicho contrato proporciona una API para que los usuarios acuñen sus propios tokens no fungibles y codifiquen metadatos (imágenes, descripciones, etc.).
El estándar ERC-1155 podría verse como una mejora tanto del ERC-721 como del ERC-20. Describe un estándar que admite tokens fungibles y no fungibles en el mismo contrato.
Otras opciones como ERC-223 o ERC-621 tienen como objetivo mejorar la usabilidad. El primero implementa salvaguardas para evitar transferencias accidentales de tokens. Este último agrega funciones adicionales para aumentar y disminuir el suministro de tokens.
Para obtener más información sobre el tema de las NFT, asegúrese de consultar Una guía sobre criptocoleccionables y tokens no fungibles (NFT).
Pensamientos finales
El estándar ERC-20 ha dominado el espacio de los criptoactivos durante años y no es difícil ver por qué. Con relativa facilidad, cualquiera puede implementar un contrato simple que se adapte a una amplia gama de casos de uso (tokens de utilidad, monedas estables, etc.). Dicho esto, ERC-20 carece de algunas de las características que ofrecen otros estándares. Queda por ver si otros tipos de contratos ocuparán su lugar.