Developing Mobile Cryptocurrency Wallets

There are two kinds of cryptocurrency wallets: custodial and non-custodial. Custodial ones are a service or an application where a developer is responsible for storing keys and creating backups. Types of custodial wallets:

  • An exchange wallet. An exchange issues them for each deposited cryptocurrency. Addresses are generated on the exchange’s servers, as well as private keys that are stored there or in other storages, not including client devices.
  • A software wallet (certain types). Some desktop applications also store keys on developer’s servers. However, it has become less common these days.

A non-custodial wallet is an application or a device that stores private keys. When registering such a wallet, a user indicates a mnemonic phrase. Using this phrase, they can restore access to their cryptocurrencies if they lose keys. Types of non-custodial wallets:

  • A desktop wallet is a PC program used to access the blockchain. It can be full (containing the entire blockchain as large as hundreds of GB) or thin (only partially synchronising with the blockchain).
  • A mobile wallet is an application for a smartphone and tablet. It is convenient for frequent transactions and paying for purchases and services when crypto is accepted.
  • A web wallet is a service of a fintech startup or sometimes of a large crypto exchange. It is useful for those who do not wish to install applications on smartphones and computers.
  • A hard wallet is a physical device for storing keys. They are popular among long-term investors and ‘whales.’
  • A paper wallet is a printed document containing both types of keys, a seed phrase, a QR code, and other encrypted data.

How a mobile crypto wallet works

The principle of operation of a mobile crypto wallet

An application is downloaded from the Apple App Store or Google Play and installed on a smartphone/tablet. Since there are only a few popular blockchains capable of fitting in the memory of a mobile device, such wallets are created thin to avoid downloading the entire blockchain. After registering or logging in, a user can send and receive cryptocurrency through transactions with other people. In order for transactions to go through the network, the wallet will partially synchronise with the blockchain.

In fact, coins are not transferred across the network or blockchain. Initially, they appear when a miner has generated a block and added it to the chain. There they stay forever. The ‘sending’ and ‘receiving’ operations are actually transactions of information, not coins. One participant of a network sends another the right to use certain coins (or fractions), confirming it with a private key. When synchronising, all network participants receive information about transferring rights to these coins from one address to another.

Each mobile crypto wallet has two kinds of keys:

  1. A public key that consists of a long series of letters and numbers. It is also called an address and used to receive coins. Before each upcoming transaction, it is possible to generate a new address and only then disclose it to a sender of coins.
  2. A private key that is randomly generated. It is a hexadecimal code of 256 bits, or 32 bytes, used to sign transactions. A transaction signed this way enters the network, miners confirm it in a first-come-first-served manner, and then coins change their owner.

How to develop a mobile crypto wallet

Stages of developing a mobile crypto wallet

At the start of their project, a customer should have a vision of their mobile crypto wallet. It should be presented as terms of reference (TOR). When there are no TOR, together with a customer we fill out a brief and then draw up the TOR anyway. Only after this we start the development.

The cycle of developing a mobile cryptocurrency wallet consists of 7 stages. Let’s briefly describe each stage.

Evaluating and planning

A project manager studies the brief and client’s requirements, negotiates possible team members to be involved in the project, and estimates time and cost of the development. The result of their work is a project concept with details on goals and stages.

Analytics

A team lead defines the technical requirements for the mobile app. They form the app’s specifications and describe the detailed plan and tasks for developers. A project manager or a software architect can also carry out analytics.

Design

If a client does not have drafts or a prototype of a user interface, a UI/UX designer creates them from scratch. First they create a wireframe with the main details of the future application and then — prototypes. The final design is drawn up after confirming the interface and the functions required by the client.

Development

Developers start programming according to the TOR, brief, and available prototypes. When developing for iOS, they write in Swift or Objective-C. In case with Android, they write in C++, C#, Java, Kotlin, or Python.

When the code is ready and the application operates, a UI/UX designer checks its interface. The result of this stage is an alpha version of a crypto wallet ready for quality assurance.

Quality assurance and bug fixing

When developers release an alpha version of the crypto wallet, testers and QA engineers start testing it. We test applications taking into account all possible use cases. If we find bugs or flaws, we fix them on the spot. A beta version release is possible only after all team members confirm the quality of the released app.

Release

After the team completes testing and fixes all bugs, the project manager submits the mobile crypto wallet to Apple App Store and/or Google Play. Alternatively, a client can take it upon themselves and publish the application on digital distribution platforms.

Technical support and further development

After the release, experienced users can encounter bugs that did not pop up during the testing period. Such bugs must be fixed by developers. During the first two or three months users can also ask to improve some functions or to implement new ones. Such feedback must be taken into account for the further development of the mobile crypto wallet.

What functions a crypto wallet needs

The main functions of a cryptocurrency wallet

Most mobile crypto wallets have the same functions as mobile banking apps or payment systems (PayPal, Stripe). They allow carrying out transactions via QR codes, sending cryptocurrencies to other users, and paying for purchases. The main functions are:

  • Registration and authorization. Performed through email, social media accounts, or a mobile phone number.
  • Generation of cryptocurrency addresses (public keys) in a peer-to-peer payment system.
  • Linking an account and a cryptocurrency address. If a user already has accounts in other payment systems, it should be possible to add them to the application.
  • A QR scanner. To read somebody’s cryptocurrency address with a camera of a smartphone/tablet.
  • Increased security. An application should support two-factor and hardware authentication, as well as automatically log out of the account when idle. Often, users are also interested in the compatibility with a scanner of fingerprints (Touch ID) and faces (Face ID).
  • Asset management. Display of the current balance, incoming/outgoing transactions for a selected period, monitoring the portfolio status, etc.
  • Push notifications. Messages about the completion of transactions, the receipt of coins, and other information.

Non-custodial mobile wallets for crypto exchanges require additional functions that are important in their own way. They can be more about market prices, conversion, and exchange of one cryptocurrency for another. Here is an example of a cryptocurrency wallet we have developed for the Polyx platform. The Android version was released in October 2021, and the iOS version — in February 2022.

Polyx Crypto Wallet

Your Message has been succesfully sent. We will contact you soon!