Cómo Lanzar Tokens Colecionables en el Blockchain [ ERC-1155 ]
Tags: blockchain, solidity, ethereum, nfts
Published: 2021-08-02 21:45:04

---
title: Cómo Lanzar Tokens Colecionables en el Blockchain [ ERC-1155 ]
published: true
description:
tags: #blockchain, #solidity, #ethereum, #NFTs
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3o4vjw22u710xr2qr6l3.png
---

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.

{% youtube SXp0sWmtuPc %} 

## 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](https://metamask.io/) con fondos en Rinkeby Testnet que puedes conseguir grátis en el [faucet](https://faucet.rinkeby.io/).

## 1. Subimos la metadata a internet

A pesar de ser centralizado, usualmente optamos por subir la metadata en [Github](https://github.com/) 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`
```json
{
    "name": "Zanahoria",
    "description": "Tiene muchas vitaminas",
    "image": "https://TUURL/Zanahoria.png"
}
```

`0000000000000000000000000000000000000000000000000000000000000002.json`
```json
{
    "name": "Papa",
    "description": "Te dá energía",
    "image": "https://TUURL/Papa.png"
}
```

## 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...

```solidity
// 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 */, "");
    }
}
```

## 3. Lanzamos un contrato ERC-1155

Ahora podemos observar y manejar nuestros ítems en [Rarible Testnet](https://rinkeby.rarible.com/) o en [Opensea Testnet](https://testnets.opensea.io/).

[Documentación oficial](https://docs.openzeppelin.com/contracts/3.x/erc1155)

**Gracias por ver este tutorial!**

Sígueme en dev.to y en [Youtube](https://www.youtube.com/channel/UCNRB4tgwp09z4391JRjEsRA) para todo lo relacionado al desarrollo en Blockchain en Español.