Skip to content

Android Wallet App

micgre edited this page Feb 2, 2018 · 2 revisions

Goals

The purpose of this is to convey the functional and performance requirements of the product. This document ensures that the software requirements are properly understood. Also, the details of this document provide guidelines for future use and development of the product.

Our goal is to create a mobile application that makes transferring, depositing, paying, and exchanging crypto easier for users. Similar to desktop wallets, but running as an app on your smartphone, wallets enjoy most of the same advantages and disadvantages of regular, desktop wallets.

Smartphone wallets are often simpler and easier to use compared to their desktop counterparts and include the ability to scan other wallet addresses for faster transactions.

Divi users can hold funds individually or share finances securely with other users with multi-signature wallets, which prevent unauthorized payments by requiring multiple approvals. Here are some ways Divi can be used with others:

  • To save for vacations or joint purchases with friends
  • To track family spending and allowances
  • To manage business, club, or organization funds and expenses

Background and strategic fit

For those actively using Divi on a daily basis, paying for goods in shops or trading them face-to-face, a mobile Divi wallet is an essential tool. It runs as an app on your smartphone, storing your private keys and allowing you to pay for things directly from your phone. We hope to enable users to use their smartphones’ near-field communication feature, which means they can simply tap their phone against the reader, without having to provide any information at all.

Crypto wallets run on an app on your phone and are useful because they can be used anywhere including retail stores. Mobile wallets are usually much smaller and simpler than desktop wallets because of the limited space available on a mobile.

We will build the following features into this version of Divi for a Divi wallet that doesn't compromise on security or accessibility:

Support Divi crypto coin

  • Multiple Divi wallet creation and management in-app
  • Intuitive multi-signature security for personal or shared wallets
  • Device-based security: all private keys are stored locally, not in the cloud
  • Hierarchical deterministic (HD) address generation and wallet backups
  • Payment protocol (BIP70-BIP73) support: easily-identifiable payment requests and verifiably secure bitcoin payments
  • Support for 150+ currency pricing options and unit denomination in BTC or bits
  • Email and push notifications for payments and transfers
  • Easy spending proposal flow for shared wallets and group payments
  • Support for Divi test net wallets
  • Customizable wallet naming and background colors
  • Multiple supported languages, including French, German, Chinese (Simplified), and Spanish

Assumptions

Users will primarily access this from their phone. It's recommended that all final testing be done on a real device – both to assess performance and to enable features that are unavailable to the emulator (e.g. a device camera).

Requirements

  • User doesn’t know what he’s doing and if he is sending money to the right wallet - Must have - Let the user easily identify the wallet visually.

  • User does not know that fees for transfer are higher and that how big of a fee he uses might determine if he ends up paying the total value intended to be sent. - Must have - Educate the users on the fees when sending to a smart contract. (Fess to Smart Contracts are higher in General)

  • User might want to send money to an exchange but is not sure if they are sending it to the right address. User doesn’t understand the weird letters so he questions if he’s doing the right thing. - Must have - Show the user the name of identified Address (Eg. This is a known Exchange address, this is an ICO address for ConCoin, etc. )

  • User wants to receive his Divi from an exchange, too and wants to be sure his coins will come back to him. - Must have - Show the user the name of identified Address (Eg. This is a known Exchange address, this is an ICO address for ConCoin, etc. )

  • Multi-sig wallets are hard to setup and manage, especially if one forgets to do it in advance. - Must have - A simple multi-sig wallet setup, and due to being on Ethereum, this is also possible after the creation of the wallet.

  • Security is important but user doesn’t know all the best security practices. And frankly, user does not have time to research all that. And user sure as hell does not have a security box/ a vault. - Must have - Good Security (connected to the point above) that prompts the user and teaches them how to secure their wallet securely.

  • User wants to send or receive crypto in conversion to fiat as hourly rates are calculated in Fiat. - Must have - Being able to select how much to pay in Fiat. and convert it automatically.

  • Being able to setup how much the user should receive in Fiat and perform the transaction in person, or even send it over to a client via IM or Email.

  • Does not know much about crypto. User just knows they want to receive Eth for 200 Euro and they wants to make sure they receive it. - Must have - Show the progress of the transaction, what status it is in, etc.

  • User is not aware about security of Wallets and that they “has to be there own bank”. - Must have - Have an easy security setup process that is not complicating the setup and does not show the backup phrase.

  • Might be emotional if the value drops and she checks out the wallet at that time. - Must have - Might be a bad idea to show a graph.

User interaction and design

Home screen

  • Tell them the current exchange rate
  • Tell them how much specific crypto currency they have and how much it's worth
  • Tell them what crypto currency they have (The idea is to be a multi-currency wallet down the road)
  • Show them the latest transactions, at least the last one that they performed and to see if it's still pending, etc.

Then the transactions.

One Transaction in (Most Recent) History should contain

  • How much crypto you sent/got
  • If you sent the crypto or received it
  • From whom/To whom it was
  • If it’s received or not.

Transaction Details should contain

  • Transaction Id
  • Looking Up Transaction on Blockchain using third party service
  • Time, Date
  • Note
  • To, From
  • Name, how much was sent
  • Status and how many blocks/approvals it has

Sending payment

Some needs are

  • being sure whom you're sending the money to and if you put in the right address
  • Need to easily input the address
  • able to put in Fiat or Crypto
  • knowing the exchange rate
  • understanding the fee and what to expect (especially important with contract (eg. ICOs) addresses as the fees are higher)
  • being able to perform the transaction securely

Solution

With the problems or needs in mind we can come up and test the solutions to them.

In my case, this is what I came up with

  • showing the name of the address to which you're sending the money to (a True caller functionality for Addresses)
  • being able to just put in the name of the Contact as well as being able to paste the address or scan a QR code
  • two fields where a person can put in either fiat or crypto value
  • Showing the exchange rate in the input field before the user enters his details and also showing both fiat and crypto amount.
  • Limited amount of options for fees that also show how long it'd take to perform the payment
  • Having multiple levels of authentication required depending on the risk factor of the transaction

Recieve payment

  • Receive specific amount (usually specified in Fiat)
  • Share the Payment Request (The address or the request for specific amount which will also contain an address)
  • This can be done via an IM, email, etc.
  • Easily receive payments in person (from an ATM or other person)
  • The QR code should be readable by a machine (eg. big enough). The size of the QR code is especially important. It needs to be big enough so it's readable by any scanner, either on ATM or other wallet. So many times I saw a small QR code on many apps (also wallets) which really ruins the UX of using them in the first place. Going through a passport check-in with a small boarding pass QR code is no fun.

Settings

The security settings screen is important. User should see that there are more options to secure his wallet if he didn't enable them all. That's why he would also get a notification informing him to secure his wallet better after receiving his first payment nudging him into securing his funds so he won't have to have a horrible experience of losing them.

Clone this wiki locally