Features
FT3 supports the following features:
- Account management
- Asset management and transaction history
- Single Sign-On (SSO) from the Vault
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;
}
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.