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.