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 鈥減lay 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?

o inicia sesi贸n.

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.