FIO Token
Overview
FIO Chain’s native token is FIO. FIO is the only token present on the FIO Chain.
- Ticker: FIO
- Symbol: ᵮ
FIO Token is registered at index 235/0x800000eb
on the SLIP-44 coin types with FIO key derivation path of 44'/235'/0'/0/0
Each FIO Token can be further divided into 1,000,000,000 Smallest Units of FIO (SUFs). All transactions in FIO Protocol are expressed in SUFs.
Native Integration
For wallets desiring full control over the registration user experience, the best strategy is to execute mapping actions directly to the FIO Chain.
Public/Private Keys
FIO Private Keys follow standard Wallet Import Format (WIF) standard and public keys follow well-known base58 encoding with FIO prefix. For example: FIO7tkpmicyK2YWShSKef6B9XXqBN6LpDJo69oRDfhn67CEnj3L2G
Transferring Tokens
Tokens on the FIO Chain are transferred using the trnsfiopubky
action.
The action requires a FIO Public Key for the payee (the person receiving the funds). The FIO Public Key is hashed down to an account name and funds are transferred to that account. If that account does not exist, it gets created automatically.
If you want to send FIO Tokens to a FIO Handle, you will first have to perform a FIO Handle Look-up, just like you would for any other blockchain.
transfer
actionThe native EOSIO
transfer
action is not supported on FIO Chain.
Transaction memos
trnsfiopubky
does not accept a memo field. To attach a memo to a FIO Token transfer, both payer and payee must have a FIO Handle and a separate recordobt
action.
Staking FIO Tokens
For a non-technical guide to staking, see FIO Staking blog post.
High level
- User has to vote, proxy, or auto-proxy their FIO Tokens.
- User decides what amount of their FIO Tokens to stake.
- User stakes FIO Tokens, which are now locked and not spendable until unstake + 7 days.
- 25% of all FIO Chain fees collected plus daily mint is redirected to a pool to be distributed among all stakers.
- User decides what amount of their FIO Tokens to unstake.
- User unstakes FIO Tokens and they receive the original staked amount plus their share of rewards.
- Unstaked tokens are locked and are unspendable for a period of 7 days.
Integrator incentive
FIO Staking offers a new incentive to integrators which lets them earn 11% of the staking reward paid out to their users. When the user unstakes their FIO Tokens, the staking reward is computed and 90% of it is paid out to the user staking. If a TPID was supplied in the unstake call, the remaining 10% (or 11.11% of what was paid to the user) is credited to that TPID. If TPID is not supplied, that amount remains in treasury and increases staking reward for all remining stakers.
How to implement voting, proxy, or auto-proxy
The easiest way to achieve this objective is for the integrator (not the User) to register as a proxy, vote for block producers and insert the FIO Crypto Handle of their proxy into the TPID field of every call made by the user.
Alternatively, the integrator may choose to let the User vote their tokens directly, but that would require the development of a voting UI inside the wallet or exchange.
How to stake FIO Tokens
Staking is accomplished using stakefio action and passing in amount of FIO Tokens to stake.
Please note that the FIO Handle parameter may be left blank. The user does not need to have a FIO Handle to stake, but if they don't, the stake call will have a fee, instead of deducting a bundled transaction.
How to unstake FIO Tokens
Unstaking is accomplished using unstakefio action and passing in amount of FIO Tokens to unstake.
Please note that the FIO Handle parameter may be left blank. The user does not need to have a FIO Crypto Handle to unstake, but if they don't, the unstake call will have a fee, instead of deducting a bundled transaction.
When tokens are unstaked, the reward amount is automatically deposited into the user's account. Both the unstaked amount and the reward amount are then locked for a period of 7 days.
When tokens are locked they cannot be transferred, or used to pay a FIO Chain fee. However, they can be voted.
Understanding user's FIO balance
Getting user's balance
The /get_fio_balance call is being modified to include new values:
Parameter | Description |
---|---|
balance | Unchanged. Total amount of FIO Tokens (SUFs) in account. Please note that this value will now include tokens which may not spendable, because they are staked or locked. |
available | Amount of FIO Tokens (SUFs) which can be spent. available = balance - staked - locked. |
staked | Amount of FIO Tokens (SUFs) which are staked. |
srps | Amount of staking reward points held by account. See below for Computing staking rewards. |
roe | Rate of exchange of SRPs to FIO when unstaking. See below for Computing staking rewards. |
Getting information about locked tokens
Total amount of locked tokens in account can be computed by using the values returned by /get_fio_balance call:
locked_tokens = balance - staked - available
In addition, information on when locked tokens will become available is returned using /get_locks endpoint. It returns:
Parameter | Description |
---|---|
lock_amount | Amount of FIO Tokens (SUFs) that were locked in account. |
remaining_lock_amount | Amount of FIO Tokens (SUFs) still locked. |
time_stamp | Epoch date when locking clock was started. |
payouts_performed | Number of unlocks that have already occurred. |
can_vote | 0 - user cannot vote locked tokens; 1 - user can vote locked tokens (for tokens locked as a result of unstake, 1 will be returned.) |
unlock_periods | Multiple unlock periods remaining and depicted as SUF amount of FIO Tokens unlocking duration seconds after time_stamp. |
Please note that when user unstakes tokens multiple times, there may be multiple lock periods returned (unstakes during the same 24-hour period will only have 1 unlock period). Therefore, a maximum of 7 unlock periods will be found in accounts which staked tokens. However, locking can also be used for other purposes than staking unlocking, which means that some users may have more than 7 unlock periods.
Computing staking rewards
When user has staked tokens, it's possible to compute their currently accrued rewards by using the values returned by /get_fio_balance call:
amount of staking rewards accrued to user = (srps * roe * 0.9) - staked
Staking Rewards
When showing staking rewards to wallet or exchange users, note that 90% of the staking reward goes to the user and the remaining 10% is paid to the TPID (or stays in the staking pool if no TPID is given).
A prorated amount of staking rewards accrued can also be used to compute partial unstaking. For example if user is has 1000 tokens staked and plans to unstake 200 tokens, they will receive 20% (200/1000) of total amount of staking rewards accrued.
Please note that amount of staking rewards accrued calculation is approximate and may be very slightly different due to rounding.
FIO Token Statistics
For integrators, who want to display general FIO Token statistics, such as FIO Token total/circulating/locked supply or staking statistics, such as historical APY, the FIO Foundation operates FIO Services API:
Endpoint | Description |
---|---|
/staking | Returns current FIO Token staking statistics, including historical APY. |
/supply | Returns current FIO Token supply, meaning amount of FIO Tokens, which have been minted. Not all tokens, which were minted, may be circulating, i.e. they may be locked. To get circulating supply see /circulating endpoint. |
circulating | Returns current FIO Token circulating supply. This excludes supply which is currently locked. To get total supply see /supply endpoint. |
/locked | Returns current FIO Token locked supply. This represents supply which is currently locked. |
Transaction history
Please review Transaction History Guide for additional information, specifically Transactions Impacting FIO Token Balance.
Getters
Integrating these actions do not require the integrator to have access to user's FIO Private Key.
Available FIO Token Getters
Endpoint | Description |
---|---|
/get_fio_balance | Returns FIO Token balance for supplied IO Public Key. Also returns available balance which only includes tokens which are not locked. |
/chain/get_locks | Returns information about FIO Token locks which may apply to the supplied FIO Public Key. You may run this call, when get_fio_balance returns different amounts for balance and available, which would indicate some tokens are locked. |
Write Transactions
Integrating these actions require the integrator to have access to user's Private key and properly serialize and sign each transaction. For additional information, see Write Transaction.
Available FIO Token Actions
Action | Description | Can be paid with bundled tx? |
---|---|---|
trnsfiopubky | This action transfers FIO Tokens to a supplied FIO Public Key. | No |
trnsloctoks | This action transfers locked FIO Tokens to a supplied FIO Public Key. | No |
stakefio | This action stakes FIO Tokens. | Yes |
unstakefio | This action unstakes FIO Tokens. User can unstake any amount previously staked. | Yes |
wraptokens | This action wraps FIO Tokens to another chain. | No |
retire | This action burns FIO Tokens from account which executes this action. Once burned tokens are removed from circulation. | Free |
Link to FIO App
Alternatively to Native Integration, the application may link the user to to the FIO App, a comprehensive website to register and manage FIO Handles and many other functionality related to FIO Protocol.
For additional information, see FIO App.
Updated about 1 year ago