Developing blockchain based Bitcoin applications is very simple, even when you have to get your hands-on code level if you have a few programming notions. If something is complicated, it is easy to understand which pieces come into play and how. The rest does not change in excess of another type of applications, wherein a matter of hours you can have something fully functional.
This article is not to deal with a step by step how to develop a blockchain app, but to give you a mental outline of the pieces that form a basic app and how they interact.
Of course, it is advisable to understand the basics of Blockchain. To begin, you must think in a modular way. On one hand is your application and one another Bitcoin.
To interact with Bitcoin can be done in two ways: Installing a Bitcoin own node or using the other node. In both cases, it then interacts with an API. Sometimes some simpler API’s, however they are RESTful APIs, and others a bit more cumbersome at the JSON-RPC level. However, and luckily, the programmers already have open source reusable libraries to simplify both cases if desired.
In this case, let’s imagine that you use the slightly more complex version, which is based on using your own Bitcoin node, which gives more autonomy and gives a better understanding of how Bitcoin works.
A Bitcoin node is composed of 3 remarkable pieces:
The “demon”: It is connected to other nodes, allowing to create that P2P network where all the events that occur in the network are exchanged by sockets.
Blockchain: the database that records the events locally in each node. Actually, your application will not use that database.
API: events are converted to a JSON response and transmitted by a port, may or may not be protected for external listeners.
The node can be installed on a Unix or Windows computer and can be called or listened to when desired through the port it has for it, with or without authentication, being a channel for two-way communication: You can receive in real time whatever happens in the node and can also send you information to do things or inform you of events.
How to set up your Bitcoin node in less than 10 minutes
Of course, it can be developed in the language you want and it must not necessarily know in excess the operation of the Bitcoin node.
A simple application is composed of a backend, a database, and a frontend. Until there nothing new. You can put an API or not … the same as always. The backend, whenever you want to interact with the Bitcoin network, can call the node’s RPC API or listen to it to make decisions.
Simplified typical example of a web application
You join pieces: Application + Bitcoin Node
Imagine that you want to make a blockchain explorer. You simply have to put your backend to listen to all the events that occur in your node (which informs you of what is happening in the network), save the information that passes you the node in your database for further queries.
Simplified structure of a web application interacting with a Bitcoin node
It should be noted that having an app similar to blockchain.info, a blockchain browser, with its own RESTful API in private or public mode to interact from your application is a matter of a couple of minutes with the open source development called BitPay Insight.
Send a payment to the network is also very simple, since once the transaction is prepared in the backend what is done is to send it to the node through the JSON-RPC API so that it relays it to the rest of the nodes, and those to others and so on until it spreads throughout the network. That is why it is important to have the node well paired, and quality pairs, because this ensures that a transaction is retransmitted throughout the network very fast and will make transactions confirm before.
The addresses and transactions are prepared offline. That is, the node is not needed for it, only to obtain the information. Then the transaction is prepared and sent to the already coded network.
Logically for almost all languages, there are already libraries that simplify everything once imported, their methods allow the same but with less code.
In the backend normally two libraries are used (although both could be in one, depending on the library). The first communicates with the Bitcoin node, and the second is responsible for generating addresses or preparing transactions.
This is a simple example and a bird’s-eye view of a simple typical organization, but its use, and here creativity comes into play, is what allows you to create new cases of use.
In almost all cryptocurrencies, its node and how it interacts with them at the schema level is very similar. To mount an exchange of cryptocurrencies (Coinbase or OKCoin type) is not far from the principles that have been exposed here, though, replicating everything: balanced backends, multiple nodes of each cryptocurrency in case one falls or becomes out of phase.
A tip: If it is your first time developing on Bitcoin, it is best to rent a server, it is a small investment and they give you a dedicated machine ready to “break it” as many times as you need. In addition, downloading the blockchain there will be much faster and more comfortable. Then you can develop your app locally and use the Bitcoin node API of the rented machine.
With this, you have what it takes to make a mental sketch of where to start creating your application. Depending on the language you want to use, you should only look for the necessary libraries. For example, for NodeJS you can use Bitcore, which has everything you need in the same library. Also, Bitcoins, although this only focuses on the part of Bitcoin offline work (create addresses, prepare transactions, etc.).