Crypto wallet, the basis of the OLO.money ecosystem

Secure non-custodial mobile wallet
Project goal
Our client OLO.money is a company with a large community of crypto and fintech enthusiasts. The client plans to develop an ecosystem of various services. They see great potential in blockchain technologies that allow building a voting system for the community, creating fintech applications, and distributing profits.

To enable community members to take full advantage of the ecosystem, OLO.money plans to issue tokens on the Polygon blockchain platform. Before that, they held a crowdfunding campaign. Participants could reserve tokens on the web platform before on-chain release. More than 30 thousand users took part in the campaign.

Our task was to create a mobile platform. Community members will use it to access cryptocurrency wallets and the ecosystem services that will be provided further.
Duration
6 months
Timeline
3 520
Team
Product Owner
Project manager
UI / UX Designers
Analysts
Developers
QA
Technologies
Golang, Vue JS, Docker, Nginx, MySQL, Elasticsearch, Camunda BPM
Mobile apps
Web development
Product consulting and development
We have decomposed our task into the following components:

1. Create a mobile wallet application with the ability to store the OLOB cryptocurrency and conduct transactions. Later this app will expand with other services.

2. Migrate users from the existing web service to a crypto-wallet mobile application to enable the crediting of purchased OLOB tokens in the Polygon network.
Product Value
The current version of the product brings value to the client as it suits his specific goals.
Firstly, it is a secure non-custodial crypto wallet that meets all client requirements.

Secondly, it is an easily transformable base for new products. The client-server architecture allows the application to combine the capabilities of blockchain and traditional mobile technologies.
Thirdly, the community migration to the mobile platform is implemented seamlessly for users and project administrators.
During the pre-sale, users have already created accounts on the client's web platform and reserved a certain number of tokens. Our goal was to seamlessly transfer their data to the mobile platform and distribute tokens to their crypto-wallets. We developed a solution that looks as follows from the user side.

A user downloads the app from the store and launches it. The chatbot asks the user if he is already registered on OLO.money and offers to enter the corresponding email address. The application server sends a message with a confirmation code to the specified address.

After confirming the Email address, the user has to choose one of two options - create or import a wallet. If he chooses to create a wallet, then the app generates a mnemonic phrase. Next, the user reads and accepts the license agreement. During the registration, the mobile application sends a request with the following parameters: email address, wallet address, and public authorization key, stored in the application.

As a result of this process, in the user directory, the information about the user's Email address, the account in OLO.money, and the wallet in the blockchain appears. Then the project tokens will be credited to this address.
For security reasons, the client did not use white label solutions that can be found on the market. He decided to develop a mobile wallet from scratch. The architecture of the solution secures user assets on several levels.

1. Non-custodial wallet ensures that the intermediary does not have access to the funds. The application server does not store the mnemonic phrase and private key from the client's wallet. Of course, this imposes additional responsibility on the client since he will not be able to restore access to the wallet if he forgets the mnemonic phrase. Therefore, when creating a new wallet, a user has to collect a mnemonic phrase from randomly mixed words. This step helps to ensure that a user saves the phrase and has access to the newly created wallet.

2. A payment password is used to conduct transactions. This procedure provides an additional layer of protection and user authentication. The wallet key is stored in encrypted form on the user's mobile device. In order to sign a transaction, a user must enter his password to decrypt the key.
For security reasons, the client did not use white label solutions that can be found on the market. He decided to develop a mobile wallet from scratch. The architecture of the solution secures user assets on several levels.

1. Non-custodial wallet ensures that the intermediary does not have access to the funds. The application server does not store the mnemonic phrase and private key from the client's wallet. Of course, this imposes additional responsibility on the client since he will not be able to restore access to the wallet if he forgets the mnemonic phrase. Therefore, when creating a new wallet, a user has to collect a mnemonic phrase from randomly mixed words. This step helps to ensure that a user saves the phrase and has access to the newly created wallet.

2. A payment password is used to conduct transactions. This procedure provides an additional layer of protection and user authentication. The wallet key is stored in encrypted form on the user's mobile device. In order to sign a transaction, a user must enter his password to decrypt the key.

3. The app has access to a server that implements other features of the ecosystem, such as connecting credentials and a user's wallet address. Requests are authorized on the server with authorization keys, which are also encrypted and stored on the mobile device. Keys are generated based on a mnemonic phrase using an implicit deterministic algorithm.

At the moment, users do not pass the authentication when entering the application. The server authorizes signed requests to the API, without user participation. However, in the future, we will add the authentication system native to mobile platforms - by PIN, fingerprint, or Face ID.
Crypto wallet
    3. The app has access to a server that implements other features of the ecosystem, such as connecting credentials and a user's wallet address. Requests are authorized on the server with authorization keys, which are also encrypted and stored on the mobile device. Keys are generated based on a mnemonic phrase using an implicit deterministic algorithm.

    At the moment, users do not pass the authentication when entering the application. The server authorizes signed requests to the API, without user participation. However, in the future, we will add the authentication system native to mobile platforms - by PIN, fingerprint, or Face ID.
    Community migration to mobile app
    We start working on your IT project in 24 hours
    03.2017 - 08.2017
    Monitoring Plus
    We developed client and server software for company fleet management
    Web development
    Outstaffing
    Our clients contact us when they need product development. We take on projects from scratch or help with inherited code
    Our services
    Our goal is the development of long-term partnerships with clients. Our clients come to us with ideas, and we help research them and offer solutions
    About us
    More