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 action

The 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:

ParameterDescription
balanceUnchanged. 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.
availableAmount of FIO Tokens (SUFs) which can be spent. available = balance - staked - locked.
stakedAmount of FIO Tokens (SUFs) which are staked.
srpsAmount of staking reward points held by account. See below for Computing staking rewards.
roeRate 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:

ParameterDescription
lock_amountAmount of FIO Tokens (SUFs) that were locked in account.
remaining_lock_amountAmount of FIO Tokens (SUFs) still locked.
time_stampEpoch date when locking clock was started.
payouts_performedNumber of unlocks that have already occurred.
can_vote0 - user cannot vote locked tokens; 1 - user can vote locked tokens (for tokens locked as a result of unstake, 1 will be returned.)
unlock_periodsMultiple 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:

EndpointDescription
/stakingReturns current FIO Token staking statistics, including historical APY.
/supplyReturns 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.
circulatingReturns current FIO Token circulating supply. This excludes supply which is currently locked. To get total supply see /supply endpoint.
/lockedReturns 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

EndpointDescription
/get_fio_balanceReturns FIO Token balance for supplied IO Public Key. Also returns available balance which only includes tokens which are not locked.
/chain/get_locksReturns 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

ActionDescriptionCan be paid with bundled tx?
trnsfiopubkyThis action transfers FIO Tokens to a supplied FIO Public Key.No
trnsloctoksThis action transfers locked FIO Tokens to a supplied FIO Public Key.No
stakefioThis action stakes FIO Tokens.Yes
unstakefioThis action unstakes FIO Tokens. User can unstake any amount previously staked.Yes
wraptokensThis action wraps FIO Tokens to another chain.No
retireThis 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.