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

Ahmed Castro - Aug 2 '21 - - Dev Community

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.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player