FIO Token Management

Table of Contents

UX

Use Flow

Token Management - Wallet

Assets

Sketch UX Assets

FIO Token

Visual

Functionality

Visual

Functionality

Wallet List

 

Create New Wallet

  • Collect

    • Wallet name

      • Pre-populate with: “My FIO Wallet X” where X is a sequential number of FIO Wallets associated to user account (first is “My FIO Wallet”, second is “My FIO Wallet 2”, third is “My FIO Wallet 3” and so on.

  • Validate

    • Wallet name

      • Validation rules

        • Format:

          • Allowed characters: a-z, A-Z, 0-9, space, - dash, _ underscore

          • Min 1

          • Max 32

  • Links

    • Create Wallet

      • On click

        • Create new wallet and redirect to Wallet Details Page

          • If PIN required, collect PIN

        • Store server-side

    • X

      • On click

        • Close window and display Wallet List Page

Import Wallet

Cancel import Confirmation

Valid Key but no active account

Invalid Key

  • Display

    • Links

      • Import Wallet

        • On click

          • Check if corresponding FIO Public Key exists on chain

            • If Yes import

            • If No Display Error: Valid Key but no active account

          • Import private key and add to account

            • If seed phrase entered import only key at index 0 (firs one)

          • Display Wallet List Page with confirmation banner

          • On error

      • Cancel or Back

        • On click

          • Display Cancel Confirmation

            • On confirm Display Wallet List Page

            • On cancel Display Import Wallet Page

  • Collect

    • Private Key or Mnemonic Seed Phrase

    • Wallet name

  • Validate

    • Private key

      • Valid FIO Private key format

    • Seed Phrase

    • Wallet name

      • Validation rules

        • Format:

          • Allowed characters: a-z, A-Z, 0-9, space, - dash, _ underscore

          • Min 1

          • Max 32

        • Error

          • Display Invalid Key Page

Wallet Transaction List

 

 

 

  • Display

    • Wallet name

    • Balance in FIO and USDC at the time of display

      • Total

      • If locked > 0, also show:

        • Locked

        • Available

      • If staked > 0, also show:

        • Staked

        • Available

      • Obtain using /get_fio_balance (modified in FIP-6 - spec not yet updated)

    • Transactions

      • Show 25 of type on initial load and load next 25 when user scrolls to bottom (lazy scroll)

      • Sent FIO Requests (fetch on click)

        • “Sent” label and icon

        • Date/Time: FIO Request time_stamp in browser time

        • To: FIO Request’s payer_fio_address

        • FIO Request status

        • Obtained using /get_sent_fio_requests (modified in FIP-1)

      • Received FIO Requests (fetch on click)

        • “Received” label and icon

        • Date/Time: FIO Request time_stamp in browser time

        • From: FIO Request’s payee_fio_address

        • FIO Request status

        • Obtained using get_received_fio_requests (added in FIP-19)

      • Sent/Received FIO Data (fetch on click)

        • “Sent” or “Received” label and icon

        • Date/Time: FIO Data time_stamp in browser time

        • Counter-party FIO Address

          • For OBT data sent by user show To label

          • For OBT data received by user show From label

        • Obtained using /get_obt_data

      • Transactions (default view)

        • “Sent” or “Received” label and icon

        • Date/Time: FIO Data time_stamp in browser time

        • Transaction ID

          • Show FIO TX ID

          • Copy

            • On Click - Copy FIO TX ID to pasteboard

          • Open Explorer

        • Display: Transaction amount

    • Links

    • Actions - same module as with modified logic which only displays action if it is designated with TOK.

Wallet Transaction List - 0 balance and no transactions

 

  • Display

    • Same as Wallet Transaction list above (except Need FIO token tile)

  • Display instead of Transaction tab (notice: copy different from image, use copy below)

    • Intro Section

      • Header

        • We see that you do not have any FIO tokens in your wallet.

      • Subhead

        • You can get FIO Tokens by sending them to a public address or FIO Crypto Handle from another wallet, sending a FIO Request for tokens to another FIO-enabled wallet, or getting them from one of your partners.

    • Send Section

      • Header

        • Send FIO Tokens

      • Sub-head

        • Send FIO Tokens to your wallet by QR code capture or copying your public address / FIO Crypto Handle to an external wallet.

      • Wallet Details Sub-Section

        • QR Code

        • Public Address

          • Display wallet’s FIO public address

          • Action

            • On click - Copy public address to pasteboard

        • LEDGER WALLET only

          • Display Show Public Address on Ledger

            • On click - Show Public Address on Ledger

        • Associated FIO Crypto Handles

          • Display all FCH owned by Wallet

          • Action

            • On click - Copy FIO Crypto Handle to pasteboard

    • Send FIO Request Section

      • Header

        • Send FIO Request

      • Subhead

        • Send a FIO Request for FIO Tokens to another FIO-enabled wallet.

      • Action: FIO Request

    • Get FIO Section

      • Header

        • Need FIO Tokens?

      • Subhead

        • FIO tokens are used to pay fees for certain transaction types such as FIO Domain and Crypto Handle registrations or adding bundles.

          Get FIO Token from one of our partners today.

      • Action: Get FIO Tokens

Receive FIO

 

  • Content same as Wallet Transaction List - 0 balance and no transactions except:

    • Intro Section

      • Head

        • Receive FIO Tokens

Transaction Details

Sent FIO Request

Received FIO Request

FIO Data

  • Collect PIN on display to fetch private key to decrypt the data

  • Display

    • Sent FIO Request

      • FIO Request Information

        • Status: FIO Request status

          • Pending

          • Rejected

          • Paid = sent_to_blockchain

          • Canceled

        • Date/Time: FIO Request time_stamp in browser time

        • Type: Request

        • Requestor: FIO Request payee_fio_address

        • To: FIO Request payer_fio_address

        • Amount: FIO Request amount + token_code

          • If chain_code = FIO and token_code = FIO display USDC equivalent based on rate of exchange at time of display

        • Chain: FIO Request chain_code

        • Memo: FIO Request memo

      • If status = Paid show Payment information tab (content from obt_data with matching fio_request_id)

        • Date/Time: FIO Data time_stamp in browser time

        • Type: Payment

        • Payer: FIO Data payer_fio_address

        • To: FIO Data payee_fio_address

        • Amount: FIO Data amount + token_code

          • If chain_code = FIO and token_code = FIO display USDC equivalent based on rate of exchange at time of display

        • Chain: FIO Data chain_code

        • ID: FIO Data obt_id

          • See FIO Data transaction linking

        • Memo: FIO Data memo

      • Actions

        • If status = Pending

          • Cancel Request link

            • On click display Cancel FIO Request Page

    • Received FIO Request

      • FIO Request Information

        • Status: FIO Request status

          • Pending

          • Rejected

          • Paid = sent_to_blockchain

          • Canceled

        • Date/Time: FIO Request time_stamp in browser time

        • Type: Request

        • From: FIO Request payee_fio_address

        • Amount: FIO Request amount + token_code

          • If chain_code = FIO and token_code = FIO display USDC equivalent based on rate of exchange at time of display

        • Chain: FIO Request chain_code

        • Memo: FIO Request memo

      • Actions

        • If status = Pending

          • Reject link

            • On click display Reject FIO Request Page

        • If status = Pending and chain_code = FIO and token_code = FIO

          • Pay link

            • On click display Send FIO Token Page and pre-populate Your Sending FIO Address, Send to Address, Send Amount, Memo

        • If status = Pending and chain_code != FIO and token_code != FIO

          • Pay link

            • On click display Enter Payment Details Page

      • If status = Paid show Payment information tab (content from obt_data with matching fio_request_id)

        • Date/Time: FIO Data time_stamp in browser time

        • Type: Payment

        • Payer: FIO Data payer_fio_address

        • To: FIO Data payee_fio_address

        • Amount: FIO Data amount + token_code

          • If chain_code = FIO and token_code = FIO display USDC equivalent based on rate of exchange at time of display

        • Chain: FIO Data chain_code

        • ID: FIO Data obt_id

          • See FIO Data transaction linking

        • Memo: FIO Data memo

    • Sent/Received FIO Data

      • FIO Data Information

        • Status: FIO Data status

          • Sent to Blockchain = sent_to_blockchain

        • Date/Time: FIO Data time_stamp in browser time

        • From: FIO Data payer_fio_address

        • To: FIO Data payee_fio_address

        • Amount: FIO Data amount + token_code

          • If chain_code = FIO and token_code = FIO display USDC equivalent based on rate of exchange at time of display

        • Chain: FIO Data chain_code

        • ID: FIO Data obt_id

          • See FIO Data transaction linking

        • Memo: FIO Data memo

FIO Data transaction linking

Wallet Settings Page

Non-Ledger Wallet

Ledger Wallet

Show Private Key

 

 

 

  • Collect

    • Wallet Name

  • Validate

    • Wallet Name

      • Validation rules

        • See Create New Wallet

    • Password

      • Validation rules

        • See

  • Display

    • Wallet Name

    • Links

      • Update

        • On click

          • Update Wallet Name and close pop-up

      • Show Private Key

        • On click

          • Display private key

        • In the event this wallet is connected to ledger, the option to show the private key will not be displayed.

      • Delete Wallet

        • On click

          • Display Delete Wallet Page

Delete Wallet

Non-Ledger wallet

Ledger Wallet

Confirmation

 

  • Display

    • Links

      • Yes, Delete This Wallet

        • On click

          • Delete wallet (display password/pin screen if required)

          • Display Wallet List Page with confirmation

      • Cancel

        • On click

          • Close pop-up

 

Send FIO Token

With memo or in response to FIO Request

Address Selector

  • Display

    • Wallet name

    • Available FIO balance

    • Transaction details

      • Transaction fee in FIO as obtained from /get_fee for /transfer_tokens_pub_key and in USDC equivalent

      • Transaction total

        • Send Amount + Transaction Fee

      • If memo was entered or if tokens sent in response to FIO Request

        • In addition to transaction cost in FIO, display bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Back

        • On click

          • Display Wallet Transactions Page

      • Send FIO Tokens

        • On click

          • Collect PIN

          • Execute /transfer_tokens_pub_key

            • On error

              • Display Generic Error

          • If memo entered or if tokens sent in response to FIO Request, when transfer_tokens_pub_key finishes, get the transaction and execute /record_obt_data

            • If transfer_tokens_pub_key succeeded and record_obt_data failed, display FIO Tokens Sent Confirmation Page with banner that memo failed to send.

          • On success

            • Display FIO Tokens Sent Confirmation Page

  • Collect

    • Sending FIO Address

      • If user has 0 FIO Addresses - do not show label and field

      • If user has only 1 FIO Address show label and FIO Address as text

      • If user has more than 1 FIO Address - show available FIO Addresses selector with first (alphabetically FIO Address pre-selected)

    • Send to Address

      • On click

        • Display FIO Address/Public Key collector overlay

          • Display list of all FIO Addresses used by this account as destination FIO Address for Send FIO Tokens to, Request FIO Tokens from

    • Amount denominated in FIO with as you type conversion to USDC with ability for user to switch to entry in USDC with as you type conversion to FIO

    • Memo - show only if user has at least 1 FIO Address registered and the “Send to Address” is FIO Address and not a public key

      • If user enters a memo field display bundle cost

  • Validate

    • Send to Address

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid FIO Address or FIO Public Key

      • Validation rules

        • Format

          • Valid FIO Public Key or registered FIO Address with a valid FIO Public Key mapped to chain: FIO, token: FIO

    • Send Amount

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid amount

      • Validation rules

        • Format

          • Numeric

          • Max 9 decimals

        • Available amount

          • If wallet balance is less than Send Amount + fee display Low Balance banner and prevent clicking Send FIO Tokens.

    • Memo

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid memo

      • Validation rules

    • Bundled transaction count

      • If <5 display Low balance banner prevent clicking Send FIO Tokens

    • Wallet balance

      • If balance is less than fee display Low Balance and prevent clicking Send FIO Tokens

FIO Tokens Sent Confirmation

Send succeeded, but memo failed

  • Display

    • Sending FIO Address

    • Send to Address (or public key)

    • Send Amount

    • Memo - if entered

    • Chain code

    • ID: transaction ID

      • See FIO Data transaction linking

    • Transaction cost

      • Transaction fee in FIO as obtained from fee_collected and in USDC equivalent

      • Transaction total

        • Send Amount + Transaction Fee

      • If memo was entered or if tokens sent in response to FIO Request

        • Display bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Close and X

        • On click

          • Display Wallet Transactions Page

FIO Request

Visual

Functionality

Visual

Functionality

New FIO Request

 

  • Display

    • Wallet name

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Back

        • On click

          • Display Wallet Transactions Page

      • Send FIO Request

        • On click

          • Collect PIN

          • Execute /new_funds_request

          • On error

            • Display Generic Error

          • On success

            • Display FIO Request Confirmation Page

  • Collect

    • Requesting FIO Address

      • If user has 0 FIO Addresses - do not show label and field

      • If user has only 1 FIO Address show label and FIO Address as text

      • If user has more than 1 FIO Address - show available FIO Addresses selector with first (alphabetically FIO Address pre-selected)

    • Request from FIO Address

      • On click

        • Display FIO Address/Public Key collector overlay

          • Display list of all FIO Addresses used by this account as destination FIO Address for Send FIO Tokens to, Request FIO Tokens from

    • Amount denominated in FIO with as you type conversion to USDC with ability for user to switch to entry in USDC with as you type conversion to FIO

    • Token Code

      • Pre-populate with FIO

    • Chain Code

      • Pre-populate with FIO

    • Memo

  • Validate

    • Requesting FIO Address

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid FIO Address

      • Validation rules

        • Format

          • Registered FIO Address with a valid FIO Public Key mapped to chain: FIO, token: FIO

    • Send Amount

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid amount

      • Validation rules

        • Format

          • Numeric

          • Max 9 decimals

    • Chain code

      • Min: 1

      • Max: 10

      • Pattern: ^[A-Z0-9]+$

    • Token code

      • Min: 1

      • Max: 10

      • Pattern: ^[A-Z0-9]+$

    • Memo

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid memo

      • Validation rules

    • Bundled transaction count

      • If <2 display Low balance banner prevent clicking Send FIO Request

FIO Request Confirmation

  • Display

    • Requesting FIO Address

    • Request sent to FIO Address

    • Amount Requested

    • Chain: FIO

    • ID: transaction ID

      • See FIO Data transaction linking

    • Memo

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Close and X

        • On click

          • Display Wallet Transactions Page

      • Cancel Request link

        • On click

          • Display Cancel FIO Request Page

Reject FIO Request

  • Display

    • Date/Time: FIO Request time_stamp in browser time

    • Type: Request

    • From: FIO Request payee_fio_address

    • Amount: FIO Request amount + token_code

      • If chain_code = FIO and token_code = FIO display USDC equivalent based on rate of exchange at time of display

    • Chain: FIO Request chain_code

    • Transaction cost

      • Bundle cost (this can be hard-coded to 1) and remaining

  • Links

    • Back

      • On click

        • Display Transaction Details Page

    • Reject

      • On click

        • Collect PIN

        • Execute /reject_funds_request

        • On error

          • Display Generic Error

        • On success

          • Display FIO Request Confirmation Page

  • Validate

    • Bundled transaction count

      • If <1 display Low balance banner prevent clicking Reject

FIO Request Rejected Confirmation

  • Display

    • Requesting FIO Address

    • Request sent to FIO Address

    • Amount Requested

    • Chain: FIO

    • ID: transaction ID

      • See FIO Data transaction linking

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Close and X

        • On click

          • Display Wallet Transactions Page

Cancel FIO Request

  • Display

    • Date/Time: FIO Request time_stamp in browser time

    • Type: Request

    • Request sent to FIO Address

    • Amount Requested and Token Code

    • Chain Code

    • ID: transaction ID

      • See FIO Data transaction linking

    • Memo

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Cancel

        • On click

          • Collect PIN

          • Execute /cancel_funds_request

          • On error

            • Display Generic Error

          • On success

            • Display FIO Request Cancel Confirmation Page

FIO Request Cancel Confirmation Page

  • Display

    • Request sent to FIO Address

    • Amount Requested and Token Code

    • Chain Code

    • ID: transaction ID

      • See FIO Data transaction linking

    • Memo

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Close and X

        • On click

          • Display Wallet Transactions Page

FIO Data

Visual

Functionality

Visual

Functionality

Enter Payment Details

  • Display

    • Type: Request

    • To FIO Address from payee_fio_address in FIO Request

    • Public address from FIO Request

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Back

        • On click

          • Display Transactions Details Page

      • Send Payment Details

        • On click

          • Collect PIN

          • Execute /record_obt_data

          • On error

            • Display Generic Error

          • On success

            • Display Payment Details Confirmation Page

      • Copy public address

        • On click

          • Copy to clipboard

      • QR code

        • On click

          • Display QR code

  • Collect

    • Amount

      • Pre-populate from amount in FIO Request

    • Token code

      • Pre-populate from token_code in FIO Request

    • Chain code

      • Pre-populate from chain_code in FIO Request

    • Memo

      • Pre-populate from memo in FIO Request

    • Transaction ID

  • Validate

    • Send Amount

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid amount

      • Validation rules

        • Format

          • Numeric

          • Max 9 decimals

    • Memo

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid memo

      • Validation rules

    • Transaction ID

      • Validate onfocusout

        • On validation error

          • Display error message:

            • Please enter valid transaction ID

      • Validation rules

    • Bundled transaction count

      • If <1 display Low balance banner prevent clicking Send Payment Details

Payment Details Confirmation

  • Display

    • To FIO Address

    • Amount

    • Token code

    • Chain code

    • ID: transaction ID

      • See FIO Data transaction linking

    • Memo

    • Transaction cost

      • Bundle cost (this can be hard-coded to 2) and remaining

    • Links

      • Close and X

        • On click

          • Display Wallet Transactions Page