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
niSí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"
}
0000000000000000000000000000000000000000000000000000000000000002.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...
// 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 o en Opensea Testnet.
Gracias por ver este tutorial!
Sígueme en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.
Top comments (5)
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?
Para poder editar tu descripción tienes que usar el contrato Owner de Openzeppelin, pronto subiré un video al respecto
Si haces una colección de 10000 NFT copiando de a uno los json te Volves pelotudo
Bro, tendras algun ejemplo para ERC-721?
Sí amigo. Tengo esta playlist sobre NFTs, también tengo un video de 1h de principio a fin sobre cómo lanzar una colección
https://www.youtube.com/watch?v=nh4KnGPerXM&list=PLtBMv9K24Hn-XXMOYX_3zrFMWV_Dg0Csn&index=2