If you’ve ever been curious about the challenges involved in creating a successful blockchain app, here’s your chance to find out directly from an expert. Sergey Burmisov has over fourteen years’ experience in full-stack development and engineering management, including four years of blockchain-based development. As the CTO of OWNR Wallet, he leads the team in developing a multi-asset, cross-platform crypto wallet that will ultimately be a part of an ambitious cryptocurrency ecosystem.
What is the most complicated aspect of developing a cryptocurrency app?
If you take a quick look at any cryptocurrency wallet, you’ll see the work of the frontend team. But most of the work goes unnoticed — at least for someone not immersed in the development. It’s the part that unites the mobile app with the blockchain node (Bitcoin core, for instance). And this part is immense in our case.
It looks like a backend of any other app at first sight: with certain layers responsible for user authorization, notifications, and so on. But that’s not the most resource-intensive part. The deepest layer is made of the so-called ‘core’: parsing the blockchain, retrieving and analyzing its data, processing data so that it can be used for our goals. Analyzing the data in blockchain takes the most time and knowledge. It would be the most difficult part for a developer with no related experience.
Can cryptocurrency app developers look to existing resources for solutions?
You can find some ‘best practices’ and open source solutions. But they are either low-level or aimed at a limited range of issues. If you look for something more complicated, like cryptocurrency exchange, crypto wallet, backend for a crypto wallet and so on, you will see that the info is scarce. Anyone who is nowadays building an enterprise-level cryptocurrency system will have to build lots of things from scratch.
And our he initial goal was (and still is) to develop a whole cryptocurrency ecosystem. The wallet is just part of it. A good part of the work we do now would not be adequate if you assess it from the viewpoint of simply making a cryptocurrency wallet. But it’s more than adequate if you are building a base for various crypto services.
What has been the biggest challenge your team has faced during the app’s initial development?
In order to protect our customers’ funds, we refused to use any third-party services. Instead, we chose to work directly with the basic level — blockchain nodes. It’s cool for security, but there are some problems. A Bitcoin node as such wasn’t initially devised to serve numerous simultaneous requests, which is the case of a crypto wallet with thousands of users. For example, you can request a balance for an address in your wallet within this node, but not a random address in Bitcoin blockchain. The number of simultaneous requests to nodes is limited. This puts certain restrictions on scalability.
Is it possible to mitigate these restrictions?
The easiest way is to work with the simplest requests to a Bitcoin node. Like requesting the data about blocks. Once they have the data (rather raw data, I have to say), they can put it to the database where the requests needed are actually processed. And even such a simplified procedure isn’t that simple: e.g., you’ve got to deal with orphan blocks. Initial synchronization would be a challenge, too: you’ll have to process more than 600K blocks. Even after you have the initial synchronization done, you’ll be doing it anew every time you’ve made some amendments to the process. We’ve done it dozens of times. It takes a lot of time and calls for the efforts of a whole team: developers, database administrators, infrastructure specialists.
To see the results of Sergey’s team’s work in action, head to ownrwallet.com or download the app to your iOS or Android mobile device.