Types

Yours Protocol supports both non-fungible and semi-fungible tokens. The difference is simply how many tokens you create under the same project and collection.

Non-Fungible Tokens

Tokens that are non-fungible are unique per token, this means that under each token, there should maxiumum exist 1 token_balance.

function mint_non_fungible_token(name, to_account_id: byte_array) {
  val spec = yours.token_info(
    project = "Cat Dapp",
    collection = "Cats Collection",
    name,
    modules = [rell.meta(mint_non_fungible_token).module_name]
  );

  val token = yours.create_token(spec);
  val account = accounts.account @ { .id == to_account_id };
  yours.mint(token, yours.balance_info(account, 1L));
}

With the function above, each time we mint, it will create a new token under the same collection.

Assuming that we call this function three times.

mint_non_fungible_token("Bengal", x"DEADBEEF");
mint_non_fungible_token("Maine Coon", x"DEADBEEF");
mint_non_fungible_token("Ragdoll", x"DEADBEEF");

The tokens that would get created are the following.

Project
Collection
Token ID
Token Name
Token Balance

Cat Dapp

Cats Collection

0

Bengal

1

Cat Dapp

Cats Collection

1

Maine Coon

1

Cat Dapp

Cats Collection

2

Ragdoll

1

Semi-Fungible Tokens

Semi-Fungible Tokens can be shared among multiple users, and each user can own multiple of them. This means that we will end up with multiple token_balance under the same token.

With the functions above, we will mint new balances of the provided token.

The tokens that would get created are the following.

Project
Collection
Token ID
Token Name
Token Balance

Cat Dapp

Cats Collection

0

Bengal

2

Cat Dapp

Cats Collection

1

Maine Coon

1

Cat Dapp

Cats Collection

2

Ragdoll

4

Last updated

Was this helpful?