¿Qué es un token ERC-1155 en Ethereum?
Ethereum es conocido por sus tokens estándar diseñados para facilitar el despliegue de smart contracts asociados a los mismos y sus funcionalidades, y uno de los más recientes estándares en ese sentido es el ERC-1155.
Al igual que los estándares ERC-20 y ERC-721 de los que hemos hablado ya, el ERC-1155 es una formulación básica diseñada para crear tokens útiles que faciliten la vida de los desarrolladores, todo a la vez que les ofrece una herramienta potente y dinámica con la que trabajar.
Pero ¿Qué es exactamente el ERC-1155? ¿Por qué ha sido creado? ¿Qué funciones cumple o qué mejoras incluye? Pues bien, esto y más lo veremos a continuación.
ERC-1155, un estándar para manejar tokens con múltiples funciones
El token ERC-1155 es un tipo de token estándar que tiene la capacidad de almacenar bajo su control, tokens que pueden actuar como si fueran un token ERC-20 o ERC-721, o ambos al mismo tiempo bajo una misma dirección.
La idea es sencilla y busca crear una interfaz smart contract que puede representar y controlar cualquier número de tipos de tokens fungibles y no fungibles. De esta manera, el token ERC-1155 puede hacer las mismas funciones que un token ERC-20 y ERC-721, e incluso ambas al mismo tiempo. Y lo mejor de todo, mejorando la funcionalidad de ambos estándares, haciéndolo más eficientes y corrigiendo evidentes errores de implementación sobre los estándares ERC-20 y ERC-721. Este estándar fue desarrollado por Witek Radomski, Andrew Cooke, Philippe Castonguay, James Therien, Eric Binet y Ronan Sandford.
El token ERC-1155 se encuentra descrito en su totalidad en un EIP (Ethereum Improvement Proposal), más específicamente en el EIP-1155, del cual deriva su nombre.
¿Por qué se crearon los ERC-1155?
Para entender el por qué se crearon los tokens ERC-1155, es necesario examinar algunos puntos intermedios que nos darán una mejor comprensión de este punto. Entre esos puntos podemos mencionar:
Las limitaciones del token ERC-20
Los tokens ERC-20 (para tokens fungibles) y ERC-721 (para tokens no-fungibles, NFT) de Ethereum son ampliamente utilizados dentro del ecosistema. Basta con darle un vistazo a Etherscan para ver la enorme cantidad de tokens que existen de este tipo. Sin embargo, ambos tokens tienen limitaciones, algunas de ellas bastante graves.
Por ejemplo, en el token ERC-20, una limitación importante del mismo es la falta de una forma de “reaccionar” a los eventos de transferencia ERC-20. Esto da como resultado que los tokens ERC-20 quedan atrapados para siempre en los contratos cuando los usuarios enviaron tokens accidentalmente a la dirección incorrecta. De esta forma, si transfieres a una dirección ERC-20 incorrecta, eso que has transferido se pierde para siempre.
Las limitaciones del token ERC-721
Por su parte, los tokens ERC-721 también tienen sus propias limitaciones. Por ejemplo, obtener un identificador de token de forma directa es imposible, y esto dificulta las transacciones con estos tokens. De hecho, si por ejemplo tienes un set de 10 NFTs que deseas transferir a otra persona, esa transferencia requerirá que realices 10 transacciones distintas, con su cobro de comisión correspondiente y eso eleva por mucho el coste de esta sencilla operación, así como la carga de operaciones de la red, teniendo un impacto tremendo en la usabilidad de la red Ethereum. En esos escenarios tendrás que transferir token por token, siendo imposible transferir los 10 al mismo tiempo, algo bastante absurdo en realidad.
Otro problema es recorrer los tokens ERC-721. Esto requiere que todos los tokens dentro del contrato sean recorridos a los fines de ofrecer una respuesta a la DApp y el usuario en cuestión. Imagine por un momento que un contrato de ERC-721 tiene bajo su registro 1 millón de tokens, eso significa que, si una persona desea saber el estado de sus tokens, deberá enviar una transacción a la red la cual recorrerá este millón de tokens, los hará coincidir con las direcciones del usuario y luego le entregará la respuesta. Esa es la mayor demostración de ineficiencia que se pueda tener en un sistema de este tipo.
Incompatibilidad entre tokens ERC-20 y ERC-721
Junto a esto, los tokens ERC-20 y ERC-721, son incompatibles entre sí. De hecho, los contratos son tan distintos que crear una funcionalidad adicional que los vincule a ambos es una tarea titánica, y probablemente tendría un fuerte impacto en la red, potenciales fallos y altos costes de comisiones.
Esto es especialmente importante porque muchas DApps hacen uso de ambos tipos de tokens, y debido a esta limitación, la lógica de su funcionamiento se hace más compleja. Si se pudiera usar un mismo contrato inteligente para manejar todo, sería mucho más sencillo de programar, además de ser más seguro y menos complejo de diseñar.
Una forma más eficiente de usar los recursos y de programar
Ante ese panorama se ha creado el ERC-1155, con el fin de unir ambos mundos bajo un mismo contrato, superando las limitaciones ya descritas y haciendo más eficiente el manejo de los mismos. No solo eso, esta solución incluso evitaría la enorme fragmentación de tokens que existe en la actualidad, permitiendo que un mismo tipo de contrato controle ambos tipos de tokens.
Esto por ejemplo permitiría que, un desarrollador de una DApp pueda usar el ERC-1155 para que sus usuarios puedan registrar en esa misma dirección tokens fungibles (tokens que puede usar como monedas de pago) y tokens no fungibles (coleccionables, elementos intercambiables dentro de la DApp o juego) usando un mismo contrato, una misma dirección y simplificando la lógica de la DApps y los smart contracts asociados. Sin duda, es un uso más eficiente de recursos, algo que no vendría más en blockchains como Ethereum y sus limitados recursos.
Nuevas funciones y posibilidades del token ERC-1155
Hace un momento hablamos de que los tokens ERC-20 y ERC-721 tenían limitaciones a ser superadas y que ERC-1155 era la respuesta a ello. En este punto te preguntarás ¿Qué se puede hacer realmente con un ERC-1155? Pues bien, estas son algunas de las posibilidades:
Transferencias masivas de forma estándar
El estándar ERC-1155 permite hacer transferencias masivas de forma nativa de los tokens incluidos en un smart contracts. De esta forma, si, por ejemplo, tenemos una serie de tokens NFT o tokens fungibles (o ambos), podemos transferir en una misma operación, varios de estos tokens, haciendo que una sola operación haga efectiva esta transferencia.
De esta manera es posible ahorrar en coste de transacción, minimizar el impacto en la red, y habilitar sistema de comercio (escrow/atomic swap) usando dichos tokens de forma mucho más sencilla.
Múltiples tokens en un mismo contrato
Además de esto, un ERC-1155 puede describir la existencia y funcionamiento de múltiples tokens al mismo tiempo. Es decir, un ERC-1155 puede crear uno o más tokens fungibles (como el ERC-20) y también puede describir uno o más tokens no-fungibles (como el ERC-721) todo dentro del mismo contrato, facilitando el despliegue y programación de los mismos.
Detección integrada del tipo de token
Otra funcionalidad dentro del token ERC-1155 es la capacidad de integrar la funcionalidad del ERC-165 (conocido como, Interfaz Estándar de Detección), todo ello dentro del mismo sistema. De esta forma, el token ERC-1155 es capaz de detectar la interfaz del token y adaptar su comportamiento dependiendo de la misma. Esto resulta especialmente útil debido a la naturaleza multitoken del ERC-1155 y, simplifica el diseño de aplicaciones.
Transferencia segura de tokens
Quizás una de las funciones más prometedoras del token ERC-1155, es la transferencia segura de tokens. Para ello, el smart contract estándar del ERC-1155 incluye una función que verifica que la transacción se haya realizado, y en caso contrario, revierte la misma para devolver el control de los tokens a su emisor.
Esto resulta especialmente útil cuando nos equivocamos en las transcripción o copia de direcciones y en su lugar enviamos nuestros tokens a una dirección equivocada incapaz de procesar nuestra transacción. En ese caso, la transferencia es nula, y el emisor recupera los tokens, dejándole verificar nuevamente la dirección y reintentar la operación. Para evitar los ataques de doble gasto, hay una serie de reglas descritas que evitan este comportamiento, haciéndolo seguro contra este tipo de ataques y otras trampas.