Skip to main content

Features

FT3 supports the following features:

Account management

The central entity of the FT3 module is account. An account is uniquely identified by an id:

entity account {
key id: byte_array;
}

Multiple users can control an account with different levels of access rights. The authentication descriptors define who can control an account and what he can do with it:

entity account_auth_descriptor {
descriptor_id: byte_array;
key account, descriptor_id;
index descriptor_id;
auth_type: text;
args: byte_array;
}

At the moment, the module defines two types of authentication descriptors: SingleSig and MultiSig, and two authorization types: Authentication ("A") and Transfer ("T"). The A flag specifies who can edit an account (and thus has all privileges to the account), and the T can only transfer assets.

Although there are only two predefined authorization flags, dapp developers can add more flag types to create a custom access control for their dapp

SingleSig authentication descriptor can provide access to a single user. The descriptor accepts the user's public key and authorization flags which specify what access rights the user has:

struct single_sig_args {
flags: set<text>;
pubkey;
}

MutliSig authentication descriptor provides M of N control of an account. It accepts a list of N public keys, of which you need a minimum of M signatures to authorize an operation and a set of authorization flags:

struct multi_sig_args {
flags: set<text>;
signatures_required: integer;
pubkeys: list<pubkey>;
}

Asset management

FT3 provides support for multiple assets. The asset table contains a list of registered assets:

entity asset {
id: byte_array;
key id;
key name;
issuing_chain_rid: byte_array;
}
note

Although the transfer is only possible within the same chain for now, issuing_chain_rid is available in preparation for the forthcoming release when FT3 supports cross-chain asset transfer.

The balance table keeps track of an account's assets:

entity balance {
key account, asset;
mutable amount: integer = 0;
}

Single sign-on (SSO)

SSO allows users to log in to different applications with a single account (similar to how "Login with Google/Facebook" works).

The Vault is an SSO service of the Chromia ecosystem: you can configure any FT3 dapp to allow users to log in using their Vault account.