Saltar al contenido principal

Transacciones sobre erc1155

tip

Las transacciones son operaciones que se ejecutan sobre la blockchain.

Minar

Crear un asset minable

Un asset minable es una clase de utilidad que permite pasarle como argumentos un objeto File de javascript y las propiedades del asset que se va a crear.

const file = new File(); // Archivo file
const assetData = {
type: AssetType.ERC1155,
address: '0x7C6ac312c08b975a0e74Be8Cd8C6ad8b8b4A8DEB', // Direccion de contrato
chainId: 80001,
amount: 200, // Por defecto se establecera en 1
metadata: {
name: 'My erc1155',
description: 'Description of my erc1155',
attributes: [
{
trait_type: 'Color',
value: 'green'
},
{
trait_type: 'Year',
value: '1952'
}
], // Un arreglo con los attributos del asset
decimals: 5
}
}
const mintableAsset = sdk.utils.mintableERC1155FromPrimitive(assetData, file);
Tipos de Asset

AssetType es un enum de typescript que se importa desde @alfabc/sdk

Primitivos de un Asset

En el ejemplo anterior, la constante assetData cumple con la interfaz Primitives<Asset>

EL objeto File

En el ejemplo anterior solo para fines de demostracion se hace una instancia de la clase File. Pero este objeto puede venir tambien de un input en un formulario.

Node.js File

La clase File no existe en Node.js . Si usas el sdk en el servidor necesitaras utilizar la clase de utilidad SdkFile disponible. Esta cumple con la interfaz de la clase original File.

import { SdkFile } from "@alfabc/sdk";

Preparar el asset

Despues de haber creado el asset minable, hay que preparalo para su minado. La clase subira el archivo File al servicio ipfs para que este disponible en la red ipfs y agregara automaticamente el hash de la imagen a la metadata del asset. Ademas se agregaran algunos atributos especiales al asset que serviran para el funcionamiento de la transaccion en el servidor o localmente.

await mintableAsset.prepare();

Ejecutar transaccion de minado

Para ejecutar una transaccion se necesita utilizar una de las apis disponibles en el sdk en su propiedad transactions. En este caso se necesita la api para los erc1155.

const erc1155Api = sdk.transactions.erc1155Api;

Y tambien obtenemos el caller.

const caller = sdk.transactions.callers.getCaller();

Luego usamos su metodo mint para ejecutar finalmente el minado.

const owner = new Owner('0xa73a3b8ACa335855EeaC2f9Fb505BB0360A1B703')
const transaction = await erc1155Api.mint(mintableAsset, owner, caller);

Transferir

Parametros para transferir

Para transferir un asset de tipo ERC1155 hace falta enviar un objeto con los parametros de la transferencia.

const payload: TransferERC1155Payload = {
asset: Asset,
to: new Owner("0xa73a3b8ACa335855EeaC2f9Fb505BB0360A1B703"),
amount: new Amount("1"),
assetId: new ID("1"),
};
Cantidad a transferir

Los assets ERC1155 son assets que hacen dos funciones, son como NFT cuando solo poseen 1 unidad. Si poseen mas de una unidad entonces se parecen mas a los ERC20, por eso al transferirlos hay que especificar la cantidad que se desea transferir del asset, este valor esta definido en wei

Ejecutar transaccion de transferencia

Usamos la api para los erc1155.

const erc1155Api = sdk.transactions.erc1155Api;

Y enviamos los datos.

const caller = sdk.transactions.callers.getCaller();
const transaction = await erc1155Api.transfer(payload, caller);