DEV Community

Cover image for Cómo Lanzar Tokens Colecionables en el Blockchain [ ERC-1155 ]
Ahmed Castro
Ahmed Castro

Posted on

Cómo Lanzar Tokens Colecionables en el Blockchain [ ERC-1155 ]

El standard ERC-1155 fue creado con el objetivo de representar ítems en los videjuegos pero puede digitalizar otros assets. Es muy similar al estándar ERC-721 con la diferencia que cada id representa una colleción de tokens, no un token único.

En tutorial vamos a lanzar un contrato ERC-1155 en Rinkeby Testnet, subiremos las imágenes y metadata en Github y veremos el resultado en Opensea y Rarible.

Características de un ERC-1155

  • Puede contener varias monedas en un solo contrato
  • Puedes hacer Batch transfers, transferir tokens en una sola transacción
  • No cuenta con un Nombre ni Símbolo
  • Mejoras en seguirdad inspiradas en ERC-777

Antes de comenzar

Aseguráte de tener instalado Metamask con fondos en Rinkeby Testnet que puedes conseguir grátis en el faucet.

1. Subimos la metadata a internet

A pesar de ser centralizado, usualmente optamos por subir la metadata en Github para ser transparentes y tener más control. Pero también existe la posibilidad de subirla via IPFS o en servidores centralizados. Dónde subirlos dependerá de lo que se quiera lograr.

0000000000000000000000000000000000000000000000000000000000000001.json

{
    "name": "Zanahoria",
    "description": "Tiene muchas vitaminas",
    "image": "https://TUURL/Zanahoria.png"
}
Enter fullscreen mode Exit fullscreen mode

0000000000000000000000000000000000000000000000000000000000000002.json

{
    "name": "Papa",
    "description": "Te dá energía",
    "image": "https://TUURL/Papa.png"
}
Enter fullscreen mode Exit fullscreen mode

2. Lanzamos un contrato ERC-1155

Fíjate cómo el contrato te propone que estructures los urls de la metadata: https://MIURL/{id}.json. Donde {id} representa el id que se define en el contrato 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000002, 0000000000000000000000000000000000000000000000000000000000000003 etc...

// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

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

contract MyCollectibles is ERC1155 {
    constructor() ERC1155("https://MIURL/{id}.json") {
        _mint(msg.sender, 1 /* Id Zanahoria */, 10 /* Cantidad */, "");
        _mint(msg.sender, 2 /* Id Papa      */, 20 /* Cantidad */, "");
    }
}
Enter fullscreen mode Exit fullscreen mode

3. Lanzamos un contrato ERC-1155

Ahora podemos observar y manejar nuestros ítems en Rarible Testnet o en Opensea Testnet.

Documentación oficial

Gracias por ver este tutorial!

Sígueme en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.

Discussion (2)

Collapse
skerear profile image
SkereAr

Amigo... como sería si quiero incluir todos los nfts dentro de una colección en OpenSea? cuando creo el contrato en opensea me aparece una colección con un nombre Unidentified contract - eh3tA4Mq9i. He visto que todas las colecciones que hay en OpenSea tienen avatar, descripcion y redes sociales. Cómo se puede hacer eso?
Otra consulta que tengo es si se puede dentro del mismo contratoponer a la venta los nfts con un precio fijado. Cómo se podria hacer?

Collapse
turupawn profile image
Ahmed Castro Author

Para poder editar tu descripción tienes que usar el contrato Owner de Openzeppelin, pronto subiré un video al respecto