Delegate/Undelegate an NFT

Ternoa provides you with many NFT features. Not only creating an NFT can be done in just a few lines of code but we also cover many NFT basic use cases: Ternoa allows you to easily create functions to delegate, transfer, burn an NFT, or even set the NFT royalty without using any smart contracts.

Prerequisites

Before getting started, make sure you have the following ready:

  1. Create a Ternoa account with Alphanet CAPS

  2. Install and set up your editor of choice (we will use Visual Studio Code [VSC] in this tutorial)

  3. Install NodeJS v.14+ & NPM

How to delegate an NFT using Ternoa-JS

This function delegates an NFT to someone else on the Ternoa chain. It returns an object promise containing the NFTDelegatedEvent provided by the Ternoa blockchain. Use your own account by updating the //TernoaTestAccount with your account seed when retrieving the keyring from the example below. Since you are willing to delegate your NFT to someone else, replace both variables delegatee and NFT_ID with the data of your choice.

import {
	delegateNft,
	initializeApi,
	getKeyringFromSeed,
	WaitUntil,
} from "ternoa-js";

const delegateNFT = async () => {
	try {
		await initializeApi();
		const keyring = await getKeyringFromSeed("//TernoaTestAccount");
		const delegatee = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"; // The destination account address.
		const NFT_ID = 1; // the NFT id you want to delegate
		const nftData = await delegateNft(
			NFT_ID,
			delegatee,
			keyring,
			WaitUntil.BlockInclusion
		);
		console.log(`NFT ${nftData.nftId} delegated to : ${nftData.recipient}`);
	} catch (e) {
		console.error(e);
	}
};

The expected params

`id`: The ID of the NFT.
`recipient`: Destination account. If set to undefined this function acts as a way to undelegate a delegated NFT.
`keyring`: the provided keyring (containing the address) will be used to sign the transaction and pay the execution fee.
`waitUntil`: WaitUntil defines at which point we want to get the results of the transaction execution: BlockInclusion or BlockFinalization.

Response

The response provided from the blockchain event includes all the information below according to the parameters provided when delegating/undelegating the NFT.

`nftId`: ID of the delegated/undelegated NFT.
`recipient`: The address of the delegatee as string or null when the NFT is undelegated.

How to undelegate an NFT using Ternoa-JS

To undelegate a delegated NFT, you just need to run the same function as before and replace the delegate variable with undefined.

import {
	delegateNft,
	initializeApi,
	getKeyringFromSeed,
	WaitUntil,
} from "ternoa-js";

const delegateNFT = async () => {
	try {
		await initializeApi();
		const keyring = await getKeyringFromSeed("//TernoaTestAccount");
		const delegatee = undefined; // This will undelegate the NFT you will pass in the params below.
		const NFT_ID = 1; // the NFT id you want to delegate
		const nftData = await delegateNft(
			NFT_ID,
			delegatee,
			keyring,
			WaitUntil.BlockInclusion
		);
		console.log(`NFT ${nftData.nftId} undelegated`);
	} catch (e) {
		console.error(e);
	}
};

Support

If you face any trouble, feel free to reach out to our community engineers in our Discord.

Last updated