Integration options

Resources

  1. Sending crypto using FIO Addresses
  2. FIO Private/Public Key
  3. FIO Address registration outside of wallet
  4. Assigning public addresses to FIO Address
  5. FIO Request and FIO Data
  6. FIO token
  7. FIO Address and FIO Domain registration inside wallet

It is up to the integrating wallet to decide which features of the FIO Protocol they want to implement and how. The following document defines available features and options.

1. Sending crypto using FIO Addresses

The most basic level of integration with FIO Protocol is to enable sending of crypto currency using human-readable FIO Address instead of long cryptic native blockchain public addresses (NBPAs).

This level typically requires updates to the Send crypto currency screen to allow for a FIO Address to be entered in addition to NBPA. FIO Address can be easily identified by looking for a : (colon) in the string.

Once FIO Address is entered, it can be resolved to NBPA on a specific blockchain using /pub_address_lookup API method.

Once NBPA is obtained, the Send transaction executes as if the user entered or scanned the NBPA.

Sample UX

See Sending Bitcoin using FIO Address

2. FIO Private/Public Key

All further integration options will require a FIO Private/Public key pair to be generated and stored inside the wallet.

FIO Chain’s is registered at index 235/0x800000eb on the SLIP-44, Level 2 of the hierarchy for deterministic wallets, which should make it easier to implement for wallets which already support SLIP-44.

FIO Private Keys follow standard Wallet Import Format (WIF) standard and public keys follow well-known base58 encoding with FIO prefix, e.g.

FIO7tkpmicyK2YWShSKef6B9XXqBN6LpDJo69oRDfhn67CEnj3L2G

For those who have integrated EOSIO, FIO public keys follows the same format, except the prefix is FIO instead of EOS.

3. FIO Address registration outside of wallet

Most FIO Protocol functionality requires a user to have a FIO Address. A FIO Address is an NFT owned by owner FIO Public Key and consists of a username and a domain delimited by a colon:

username:domain

The easiest way to facilitate a FIO Address registration is to redirect the users to a Foundation for Interwallet Operability co-branded website (available after Mainnet launch) which enables registration and payment with common crypto currencies, such as Bitcoin. FIO Public Key needs to be passed to the website, so that the FIO Address can be properly assigned to the owner.

Fees

FIO Address has annual fee associated with them. Fees in the FIO Chain are set by block producers. It’s estimated that at Mainnet launch registration fee for FIO Address will be 5 USD equivalent in FIO tokens.

Every FIO Address comes with a set number of bundled transactions annually. The specific number is set by the block producers and is estimated to be 500 annually at Mainnet launch. This bundle is expected to cover most transactions executed by user except token transfer fees and certain governance or domain management fees.

In order to ensure a particular action is covered by the bundle, the wallet should execute /get_fee API method before submitting any signed transaction.

Fetching user’s FIO Addresses

FIO Addresses currently owned by the user (even if registered outside of the wallet) may be fetched using /get_fio_names API method.

4. Assigning public addresses to FIO Address

In order allow others to send crypto currency using the user’s FIO Address, it has to be mapped to native blockchain public addresses (NBPAs). This has to be done from within the wallet using /add_pub_address API method. For now, this mapping is stored unencrypted, but a privacy mode will be added post Mainnet.

For deterministic wallets, mappings can be updated at any time by the wallet.

5. FIO Request and FIO Data

One of the key features of FIO Protocol is the ability to request crypto using FIO Request. The user requesting funds (Payee) can send a FIO Request to a user who is asked to pay (Payer), by only using the Payer’s FIO Address.

FIO Request data, such as amount, currency, and memo field are encrypted and only readable by Payee and Payer.

Submitting new FIO Request

To request funds, Payee’s wallet should submit a new FIO Request using /new_funds_request API method.

Fetching pending FIO Requests

The Payer’s wallet can fetch all new and pending FIO Requests using /get_pending_fio_requests API method.

Rejecting a FIO Request

The Payer’s wallet can reject a FIO Request, which will remove it from the pending list, using /reject_funds_request API Method.

Fetching sent FIO Requests

The Payee’s wallet can fetch all sent FIO Requests and its current status using /get_sent_fio_requests API method.

Recording FIO Data

Anytime crypto is sent using FIO Address, optional metadata such as amount, currency, and memo, may be recorded on the FIO Chain. FIO Data is encrypted and only readable by Payee and Payer.

FIO Data, can be recorded using /record_send API method.

Although /record_send has to be sent any time user is sending crypto currency in response to a FIO Request, it is optional when user sends crypto using FIO Address. It allows for transaction Memo to be reliably send across different wallets. It’s up to the wallet to decide if sending of metadata in such scenario should be enabled/disabled or left for user to decide in a setting.

Retrieving FIO Data

Coming soon…

Sample UX

See Requesting Bitcoin using FIO Address and Displaying incoming FIO Requests

6. FIO token

FIO Chain’s native token is FIO. Any wallet can integrate FIO token in a similar fashion as other blockchain’s tokens. Even though FIO is a fork of EOS, it does not require a creation of accounts, or even a FIO Address. In fact, accounts are totally transparent to the user of the blockchain.

There are 1,000,000,000 Smallest Units of FIO (SUFs) inside 1 FIO. All transactions in FIO Protocol are expressed in SUFs.

  • Ticker: FIO
  • Symbol: ᵮ

Transferring tokens

Token transactions only require a FIO Private/Public Key and can be executed using /transfer_tokens_pub_key API method.

Checking token balance

Token balance can be obtained by passing FIO Public Key to /get_fio_balance API method.

Transaction history

Coming soon…

7. FIO Address and FIO Domain registration inside wallet

For wallets desiring full control over the registration user experience, a full suite of FIO Address and FIO Domain registration and renewal API methods are available.

Registering/renewing FIO Domain

FIO Domain can be registered using /register_fio_domain API method and renewed using /renew_fio_domain API method.

Registering/renewing FIO Address

FIO Domain can be registered using /register_fio_address API method renewed using /renew_fio_address API method.

Fetching user’s FIO Addresses and Domains

FIO Addresses and Domains currently owned by the user may be fetched using /get_fio_names API method.

Checking FIO Address or Domain availability

To enable the registering wallet to easily check if a FIO Address or Domain is available for registration, /avail_check API method may be called.

Paying for FIO Addresses on behalf of users

Wallets may also decide to cover the cost of FIO Address for their users. For that purpose Foundation for Interwallet Operability will develop server code (available after Mainnet launch) which enables the wallet to run their own registration server.

Sample UX

See In-wallet FIO Address registration