Skip to main content

Tokens

Fungible Token

How do I transfer ROOT token?

Since ROOT token is a security token, it's managed by the balances pallet. To transfer ROOT tokens, use the following snippet:

// transfer 1 ROOT to Alice
await api.balances.transfer(1_000_000, "0xE04CC55ebEE1cBCE552f250e85c57B70B2E2625b").signAndSend(...);

ROOT token has 6 decimals.

How do I transfer XRP or any other fungible tokens?

XRP and any other non-default fungible tokens are managed by the assets pallet, separate from the balances pallet. That also means you need to provide the asset ID when you want to transfer any of these tokens.

// get the `metadata` to determine the `decimals`
const XRP_ID = 2;
const metadata = (await api.query.assets.metadata(XRP_ID)).toJson();
const oneXRP = 1 * Math.pow(10, metadata.decimals);

// transfer 1 XRP to Alice
await api.assets.transfer(XRP_ID, "0xE04CC55ebEE1cBCE552f250e85c57B70B2E2625b", oneXRP).signAndSend(...);

To retrieve a list of available tokens and their asset IDs, checkout Tokens section in our Block Explorer

NFT (Non-Fungible Token)

How do I create and mint an NFT?

To create your NFT collection, call the nft.createCollection() extrinsic with the following parameters:

await api.tx.nft.createCollection(
	collectionName,
	initialIssuance,
	maxIssuance,
	tokenOwner,
	metadataScheme,
	royaltiesSchedule,
	crossChainCompatibility
);

The royaltiesSchedule is in permill (parts per million) scaling, so if you want a 10% royalty, that would be 100,000 (as 100_000 / 1_000_000 = 0.1);

Once your collection is created, the collection owner can call the nft.mint() method on the collection contract to start minting additional tokens so long as the max issuance has not been reached:

await api.tx.nft.mint(collectionId, quantity, beneficiary);