Dashboard research
The FIO dApp product has been renamed Dashboard. This page has not been updated.
Solutions for account creation/log-in and signing
In order to support most of the recommended functionality, users will need to sign-in to the dApp and transactions made by the dApp need to be signed by the private key which owns the FIO Address. The following is a list of considered approaches. Multiple of those may be considered.
Solution | Description | Log-in | Sign transactions | Pros | Cons |
---|---|---|---|---|---|
User/name password | Duh! | YES | NO |
|
|
Using password to generate and/or encrypt and store private key or seed phrase | The user will simply create a password and that password would be used to encrypt seed phrase which would then be stored by the dApp. This approach is used by:
| YES | YES |
|
|
Import seed phrase or private key | Allows a user to import FIO Private key or seed phrase into dApp | NO | YES |
|
|
Using 3rd party oauth | Users will be able to log-in using other accounts, such as Google, Facebook, Twitter, Coinbase, etc. | YES | NO |
|
|
Using private key or seed phrases on every interaction | The private key or seed phrases would be generated on site and the user would be required to write them down as they would not be stored on the server. Every time the user wanted to sign a transaction they would have to copy/paste the private key or seed phrases. This is considered a very unsafe practice, as it susceptible to MITM attacks. There are however sites that use this approach today such as Coinbase Commerce and MEW (though they discourage it strongly). | YES | YES |
|
|
Scatter/Anchor | Both wallets support signing of FIO transactions and may be easily enabled as wallets to generate and store FIO private keys | YES | YES |
|
|
Wallet Connect | Wallet Connect is an open source standard for “connecting” wallets with web dApps for the purpose of signing transactions. It supports many wallets, including Trust, Coinomi, Atomic, Infinito. It is primarily being used for Ethereum dApps, although Bianance Dex used it to connect with Trust wallet. FIO Chain signing would have to be “enabled” by each of the wallets implementing and some wallets (i.e. Trust) have indicated the yare not interested in enabling other chain | YES | YES |
|
|
Portis white label |
| YES | YES |
|
|
Browser plug-in | A browser plugin would store FIO Private keys and sign transactions, akin to MetaMask | YES | YES |
|
|
Example of Anchor Authentication
Here’s an example of how this mechanism currently functions between bloks.io and Anchor Wallet. The example is for voting, but it would work the same way for any transaction.
Use cases
As a new user, I want to create an account on a FIO website to access FIO services.
Options:
Email and password
Verify email with a link (does not prevent Sybil attack)
generate a seed phrase after account creation
Generate seed phrase
collect email later
Login with Anchor by Greymass (must already have a FIO account)
limitation: only proves control of one FIO account
Login (or install) a browser plugin
A plugin will allow for multiple FIO private keys
collect email later (or as part of the installation of the plugin)
Additional considerations
Ask for phone number and verify it with a code?
Ask for social handles (twitter, telegram, instagram, etc)?
As a FIO website user, I want to purchase custom FIO domain for myself
Provide a nice domain search functionality
Suggest alternative available domains
Purchase with FIO tokens (offer a discount?)
Show how to obtain FIO tokens (ChangeNOW, BitMax, etc)
Purchase with BTC, ETH… via registration website (or embed it directly as part of the app)
As a FIO website user, I want to create a FIO address for myself
Select a domain
Show available public domains
Offer purchase for a custom domain
Use your own custom domain
Select a FIO username on a domain
check for availability
Pay with FIO or via the registration site (see domain purchase flow above)
As a FIO website user, I want to purchase custom FIO domain for someone else
Same as above, but provide education on how to obtain someone’s FIO public key
Enhancements:
Ask for a FIO address, lookup the public key
Email address lookup (see separate user story)
As a FIO website user, I want to purchase a FIO domain and some FIO addresses for someone else
This is currently tricky because the domain is set to private when created so only the domain owner can then register addresses on it after creation. One solution would be to create the domain and addresses and then transfer them after the fact, but we need address transfer for that to work.
As a FIO website user, I want to set my domain public or private
As a FIO website user, I want to manually configure FIO address mappings for public blockchain addresses
As a FIO website user, I want to see all my FIO addresses
Ask for fio address
Unauthenticated will be a “watch only” address
Authenticated will allow for FIO Request creation, rejection, and approval (for supported tokens, if anyway)
View information about each FIO address (see separate user story)
Bundled transactions remaining
As a FIO website user, I want to see my exchange deposit addresses (and balances if possible)
Select supported exchange.
Provide API key to access the exchange (include instructions and education on this)
As a FIO website user, I want to renew my domain/address
As a FIO website user, I want to transfer my domain/address
(address transfer not currently supported on chain)
provide education on how to obtain someone’s FIO public key
Enhancements:
Ask for a FIO address, lookup the public key
Email address lookup (see separate user story)
As a FIO website user, I want to set my domain public or private
As a FIO website user, I want to see updates about the protocol
giveaways I can participate in
new features being rolled out
(pending a co-op program) As a FIO Co-op member, I want to see how much money I’m making
View FIOP balances
View historical record of fees collected (also helpful for taxes)
(pending a referral program) As a FIO referral participant, I want to see how much money I’m making
As a FIO website user, I want to invite my friend to FIO via email
Ask for email address, send an email
Email includes a link to the website and a simple off chain entry in a database to keep track of who made the referral
As a FIO website user, I want to send (or request) crypto to/from a friend via email
See challenges outlined here: One-sided FIO transactions
As a FIO website user, I want to manage my FIO token balance through the site
receive FIO tokens
send FIO tokens
As a FIO website user, I want to manage any crypto token through the site
Much more challenging, but might be possible with an integration with Portis.
ETH based tokens: integrate with metmask
Ledger Nano supported tokens: Integrate with Ledger
EOSIO based tokens: Integrate with Anchor
As a FIO website user, I want to vote for block producers
As a FIO website user, I want to vote for FIO board members
Additional Features and Functionality
As we explore additional features related to FIO (Wrapping, DeFi, Incentives, etc), a web-based dApp could provide a mechanism for onboarding users to the FIO experience, including a simple process to get their first FIO address via a basic login/password approach or a login with Facebook, Google, Twitter, etc approach, similar to how easy WAX Cloud makes it to get a WAX account. From this perspective, a web-based app focusing on FIO interactions might be useful in many different ways and expand from there to cover more features in the future. Examples include:
Keeping track of all your FIO Wallet names across multiple wallets (luke@edge, luke@stokes, luke@shapeshift, luke@infinitowallet, etc) and potentially showing (and allow for adjusting) mappings for these wallets (and potentially balances at specific times which is very useful for accounting, taxes, etc).
Keeping track of which FIO NFTs you own across multiple key pairs, including which ones have been wrapped and exist on other networks like ETH and where they exist now on those networks (are they on OpenSea? Are they connected to a specific ETH address, etc). For wraps, it could show outbound transactions you initiated or the history inbound transactions (from ETH to FIO, for example) you now control.
The date any FIO address was registered, how many bundled transactions it has remaining, a link to renew it / add more bundles, any other useful information on it (such as accumulated FIOPs, when we roll that feature out)
When DeFi integration begins to take shape, a page to report on the various tokens that have been locked up via messages sent via FIO and details on how to unlock them, etc. This could evolve into a full reporting tool on DeFi activities empowered by FIO with instructions on how to participate in other DeFi / CeFi opportunities using FIO.
Easy onboarding (create an account, register a FIO address or domain or both, transfer it somewhere else later)
More challenging: build something with actual wallet support starting as a web app and Anchor + MetaMask support. This would give us all EOSIO tokens, all Ethereum tokens, and Binance Smart Chain tokens. Using FIO might be a little clunky in that you’d sign FIO related actions with FIO-enabled Anchor and token transfers with EOSIO-enabled Anchor or MetaMask.
More challenging: build a reference implementation wallet (or work with a team already doing so, such as GP) that can highlight the best possible example of integration with FIO in a wallet experience. This can then be user-tested to improve it even further and eventually give it as the gold standard of what a FIO integrated wallet should look like. We can then user test against our existing FIO enabled wallets and see how they compare, ideally encouraging our wallet partners to make incremental changes towards the better experience we’ve demonstrated and supported with user testing data.
Use existing exchange APIs to map all deposit addresses for a user. Coinbase Example: https://developers.coinbase.com/api/v2#list-accounts This could be done with all exchanges (and crypto enabled APIs). This could end up being a sub component of the FIO Dapp.
Other documentation
https://drive.google.com/file/d/1mhoej8dDMhgPxphzrEhbkVW0BbiuMQfm/view?pli=1