Saltar al contenido principal

Transacciones sobre Erc721

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.NFT,
address: '0x7C6ac312c08b975a0e74Be8Cd8C6ad8b8b4A8DEB', // Direccion de contrato
chainId: 80001,
metadata: {
name: 'My NFT',
description: 'Description of my nft',
attributes: [
{
trait_type: 'Color',
value: 'green'
},
{
trait_type: 'Year',
value: '1952'
}
], // Un arreglo con los attributos del asset
}
}
const mintableAsset = sdk.utils.mintableAssetFromPrimitive(file, assetData);
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 erc721.

const erc721api = sdk.transactions.erc721Api;

Y tambien obtenemos el caller.

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

Luego usamos su metodo minar para ejecutar finalmente el minado.

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

Transferir

Para transferir solo necesitamos enviar el asset de tipo NFT y la direccion del nuevo owner.

Usamos la api para los erc721.

const erc721api = sdk.transactions.erc721Api;

Usamos el metodo transfer de la api.

const to = new Owner('0xa73a3b8ACa335855EeaC2f9Fb505BB0360A1B703');
const caller = sdk.transactions.callers.getCaller();
const transaction = await erc721api.transfer(asset, to, caller);

Borrar

Para borrar solo necesitamos enviar el asset de tipo NFT que queramos borrar.

Usamos la api para los erc721.

const erc721api = sdk.transactions.erc721Api;

Usamos el metodo burn de la api.

const caller = sdk.transactions.callers.getCaller();
const transaction = await erc721api.burn(asset, caller)