Saltar al contenido principal

API

Estas son las API que permiten realizar operaciones sobre la blockchain.

Utilidades de blockchain

Contiene métodos para el envío de comandos a la blockchain y las siguientes funciones:

Envío de transacciones

El método sendTransaction devuelve un PromiseEither<BlockchainError, UUID>. Este método envía una transacción a la blockchain. Recibe un payload de tipo SendTransactionParams y un caller.

const blkUtils = sdk.transactions.blkUtilsApi;

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

const approveMethod = new ContractFunction('approve', AssetType.NFT);
approveMethod.addInput('to', '0x97C091cBc01feC79742b7d6657e82748e6039a15');
approveMethod.addInput('tokenId', 1);

const payload:SendTransactionParams = {
address: new EthereumAddress('0x5CDDc72bC879f311aa32cfE6B0C479ab9b5b4F23'),
chainId: new ChainID(80001),
method: approveMethod
}

const result = await blkUtils.sendTransaction(payload, caller);
Caller

El caller es una dirección Ethereum que se utiliza para firmar la transacción. Y representa al usuario que realiza la transacción.

Envío de consultas

El método query<T> devuelve un PromiseEither<BlockchainError, T>. Permite realizar consultas a la blockchain. Recibe un comando de tipo QueryCommand<T>

const blkUtils = sdk.transactions.blkUtilsApi;

const cmd = new ReadQuery<string>(
new ChainID(80001),
new EthereumAddress('0x5CDDc72bC879f311aa32cfE6B0C479ab9b5b4F23'),
new ContractFunction('owner', AssetType.NFT)
)

const result = await blkUtils.query(cmd)

Observar sagas de transacciones

El método observeSaga nos permite enviar el ID de una transacción y obtener los eventos que estén relacionados con esa transacción. Devuelve un Observable<CommandEvent>.

const transaction = await blkUtils.sendTransaction(payload, caller);

transaction.fold(
(err) => console.error(err.message),
(id) =>
blkUtils.observeSaga(id).subscribe((event) => {
const { name, status } = event.payload;
console.log(`Metodo ${name}, Estado ${status}`);
})
);

API para ERC20

Transferir tokens ERC20

El metodo transfer devuelve un PromiseEither<BlockchainError, UUID> y recibe un payload de tipo TransferErc20Payload y un caller..

const api = sdk.transactions.erc20Api;

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

const payload: TransferErc20Payload = {
amount: new Amount("100"),
asset: Token.fromPrimitive({
type: AssetType.ERC20,
address: "0xd87ba7a50b2e7e660f678a895e4b72e7cb4ccd9c",
amount: "46.49995",
assetId: "0",
chainId: 80001,
metadata: new Metadata({}).toPrimitive(),
}),
to: new Owner("0x97C091cBc01feC79742b7d6657e82748e6039a15"),
};

const transaction = await api.transfer(payload, caller);

API para ERC721

Minar un NFT

El metodo mint devuelve un PromiseEither<BlockchainError, UUID> y recibe un MintableAsset, el nuevo owner y el caller.

const api = sdk.transactions.erc721Api;

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

const file = new File([], "image.jpg"); // input 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);
await mintableAsset.prepare();

const owner = new Owner("0x97C091cBc01feC79742b7d6657e82748e6039a15");

const transaction = await api.mint(mintableAsset, owner, caller);

Transferir un NFT

El metodo transfer devuelve un PromiseEither<BlockchainError, UUID> y recibe un Asset, el nuevo owner y el caller.

const api = sdk.transactions.erc721Api;

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

const asset = AssetsFactory.fromPrimitive({
type: AssetType.NFT,
address: "0x7C6ac312c08b975a0e74Be8Cd8C6ad8b8b4A8DEB", // Direccion de contrato
chainId: 80001,
assetId: '1',
metadata: {},
});

const owner = new Owner("0x97C091cBc01feC79742b7d6657e82748e6039a15");

const transaction = await api.transfer(asset, owner, caller);

Borrar un NFT

El metodo burn devuelve un PromiseEither<BlockchainError, UUID> y recibe un Asset y el caller.

const api = sdk.transactions.erc721Api;

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

const asset = AssetsFactory.fromPrimitive({
type: AssetType.NFT,
address: "0x7C6ac312c08b975a0e74Be8Cd8C6ad8b8b4A8DEB", // Direccion de contrato
chainId: 80001,
assetId: '1',
metadata: {},
});

const transaction = await api.burn(asset, caller);

API para ERC1155

Minar un erc1155

El metodo mint devuelve un PromiseEither<BlockchainError, UUID> y recibe un MintableAsset, el nuevo owner y el caller.

const api = sdk.transactions.erc1155Api;

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

const data = {
type: AssetType.ERC1155,
address: "0x7C6ac312c08b975a0e74Be8Cd8C6ad8b8b4A8DEB", // Direccion de contrato
chainId: 80001,
amount: '10',
assetId: "1",
metadata: {
name: "My token erc1155",
description: "Description of my erc1155",
attributes: [], // Un arreglo con los attributos del asset
symbol: 'MTO',
decimals: 5
},
};

const file = new File([], "image.jp"); // input file

const asset = sdk.utils.mintableERC1155FromPrimitive(data, file);

const owner = new Owner("0x97C091cBc01feC79742b7d6657e82748e6039a15");

const transaction = await api.mint(asset, owner, caller);

Transferir un erc1155

El metodo transfer devuelve un PromiseEither<BlockchainError, UUID> y recibe un payload que es de tipo TransferERC1155Payload y el caller.

const api = sdk.transactions.erc1155Api;

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

const data = AssetsFactory.fromPrimitive({
type: AssetType.ERC1155,
address: "0x7C6ac312c08b975a0e74Be8Cd8C6ad8b8b4A8DEB", // Direccion de contrato
chainId: 80001,
amount: '10',
assetId: "1",
metadata: {},
});

const payload: TransferERC1155Payload = {
amount: new Amount('1'),
asset: data,
assetId: new ID('2'),
to: new Owner("0x97C091cBc01feC79742b7d6657e82748e6039a15")
}

const transaction = await api.transfer(payload, caller);