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.
Cat Dapp
Cats Collection
0
Bengal
Cat Dapp
Cats Collection
1
Maine Coon
Cat Dapp
Cats Collection
2
Ragdoll
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
.
function register_semi_fungible_token(name) {
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);
}
function mint_semi_fungible_token(
collection,
token_id,
to_account_id: byte_array,
amount: big_integer
) {
val token = yours.get_token("Cat Dapp", collection, token_id);
val account = accounts.account @ { .id == to_account_id };
yours.mint(token, yours.balance_info(account, amount));
}
With the functions above, we will mint new balances of the provided token.
register_semi_fungible_token("Bengal");
register_semi_fungible_token("Maine Coon");
register_semi_fungible_token("Ragdoll");
mint_semi_fungible_token("Cats Collection", 0, x"DEADBEEF", 2L);
mint_semi_fungible_token("Cats Collection", 1, x"DEADBEEF", 1L);
mint_semi_fungible_token("Cats Collection", 2, x"DEADBEEF", 4L);
The tokens that would get created are the following.
Cat Dapp
Cats Collection
0
Bengal
Cat Dapp
Cats Collection
1
Maine Coon
Cat Dapp
Cats Collection
2
Ragdoll
Last updated
Was this helpful?