No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a OpenZeppelin

Curso de Introducción a OpenZeppelin

Sebastián Leonardo Perez

Sebastián Leonardo Perez

Estándar multitoken ERC1155

8/19
Recursos

Tanto los tokens ERC20 como los ERC721 ofrecen interesantes funcionalidades para la emisión de activos digitales. Pero tienen sus limitaciones que el estándar ERC1155 propone solucionar como un estándar multitoken, más eficiente, rápido y seguro.

Limitaciones de los tokens ERC20 y ERC721

Por un lado, en el estándar ERC20 pueden ocurrir pérdidas de tokens debido a que si se envía por error los mismos a direcciones inexistentes, estos serán irrecuperables.

Por otro lado, el estándar ERC721 tiene sus problemas de emisión de tokens. Solo se puede emitir y transferir de a un token a la vez. Si queremos transferir 10 tokens, esto representa 10 transacciones y 10 comisiones para la red. Otra limitación muy grande es la falta de posibilidades de obtener el tokenId de un token en particular para identificar el mismo.

Tanto el estándar ERC20 como el ERC721, son incompatibles entre sí. Solo permiten que una colección de tokens viva dentro de un contrato.

Características de los tokens ERC1155

El estándar ERC1155, propuesto en el EIP1155, define que un contrato inteligente puede tener múltiples tokens a la vez. Los mismos conviven en el mismo contrato y pueden actuar como tokens fungibles o no-fungibles según nuestra necesidad.

Resuelve los problemas de seguridad del estándar ERC20 para evitar la perdida de tokens y se vuelve más amigable con la red que el estándar ERC721 al permitir la emisión y transferencia de muchos tokens a la vez.

Implementación de tokens ERC1155

A lo igual que con el estándar ERC20 y ERC721, OpenZeppelin posee su propia implementación del estándar ERC1155.

Su implementación no deja de ser sencilla. Debemos definir los múltiples tokens que vamos a utilizar con la diferencia de que esta vez, el tokenId no hace referencia a un solo token, sino a toda la colección.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

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

contract MultiToken is ERC1155 {
    // Definimos los IDs de cada colección de tokens
    uint256 public constant Fungible = 0;
    uint256 public constant NoFungible = 1;
    uint256 public constant OtroFungible = 2;

    constructor() public ERC1155("URI del proyecto") {
        _mint(msg.sender, Fungible, 1000, "");
        _mint(msg.sender, NoFungible, 1, "");
        _mint(msg.sender, OtroFungible, 5000, "");
    }
}

Al emitir tokens de cada tipo, debemos especificar el ID de la colección que guardamos en variables públicas, la cantidad de emisión de ese token determinará si el mismo es fungible o no, y una metadata opcional que acompaña a los mismos.

También es posible configurar una URI que podría utilizarse para redireccionar a la web oficial del proyecto, donde se dé explicación de la utilidad de cada tipo de token que el contrato posee.

Casos de uso del estándar ERC1155

La existencia de este estándar, no quiere decir que debamos dejar de implementar los estándares ERC20 y ERC721. Ambos continuarán siendo completamente útiles para determinadas reglas de negocio y son fáciles de emplear.

El estándar ERC1155 permite solucionar casos de uso más avanzados donde múltiples tokens deben trabajar juntos. Los videojuegos “play to earn” utilizan este estándar para crear tokens con valor económico para el intercambio de otros tokens no-fungibles con las características de los personajes del juego. Sin duda, el caso de uso que más provecho sacará de este estándar.

Solo se requiere que la imaginación vuele para encontrar los mejores usos tanto para el estándar ERC1155, como para el ERC20 y ERC721. Saber cuándo aplicar cada uno y desarrollar de la forma más eficiente nuestros contratos inteligentes y resolver variadas reglas de negocio.


Contribución creada por: Kevin Fiorentino (Platzi contributor).

Aportes 5

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Comparto más información sobre el ERC1155, Recomiendo la lectura para conocer ventajas y desventajas y el por qué de la existencia de este protocolo.

El token ERC-1155 es un token de tipo estándar que tiene capacidad para almacenar bajo su control tokens. Esto significa que este token puede actuar como si fuera otro token, por ejemplo, un token ERC-20 o ERC-721. También puede almacenar ambos tokens bajo una misma dirección.

La función principal de este token es la de crear una interfaz Smart Contract que pueda controlar y representar rápidamente cualquier número de tokens, ya sean fungibles o no fungibles.

De este modo, ERC-1155 puede cumplir con las mismas funciones que los conocidos ERC-20 y ERC-721 e incluso con ambas al mismo tiempo.
by mercadorypto.

En el ejemplo del profe, el constructor pudo usar _mintBatch() en lugar de solo `_mint()``

contract MutiToken is ERC1155 {
    uint256 public constant Fungible = 0;
    uint256 public constant NoFungible = 1;
    uint256 public constant OtroFungible = 2;

    uint[] public ids; 
    uint[] public amounts; 

    constructor() ERC1155("aca una uri") {

        ids = [Fungible, NoFungible, OtroFungible];
        amounts = [1000,1,500];
        _mintBatch(msg.sender, ids, amounts, "");
    }

}

Los videojuego play to earn si duda es el caso de uso que más uso hará de este tipo de tokens.