Bitcoin Core - the Bitcoin code

By Simplify Crypto | Simplify Crypto | 16 Aug 2020

Bitcoin is an open source project. Being a project of this type has a deeper meaning than simply being free. It means that this project is developed by an open community of volunteers. The original code, which is under a free license, can be downloaded by anyone interested in being part of the Bitcoin community.

At first, this community was just Satoshi Nakamoto, but the number of stakeholders and contributors grew. In 2016, the source code had more than 400 contributors, with about a dozen programmers working full-time, and many more part-time. When Satoshi created Bitcoin, the software was complete and working before he wrote the paper where he released it. He wanted to make sure his idea worked before he published it.

This first version of the code, then called just Bitcoin or Satoshi Client has already undergone many changes and improvements. It evolved into Bitcoin Core which is now recognized as the benchmark implementation of the bitcoin system. In other words, it is the authoritative reference of how to implement each piece of technology. In this source code, all Bitcoin components are described and implemented, including portfolios, transactions, the block validation engine and, even, a complete node of the Bitcoin peer-to-peer network.

Bitcoin's peer-to-peer network is made up of nodes, mostly maintained by volunteers and some companies that build applications for Bitcoin. By maintaining and operating a node, the user has a direct and authoritative view of the Bitcoin blockchain and a local copy of all transactions independently validated by their own system. By maintaining a node, the user is not only independent of any third party sources to validate a transaction but is contributing to making the Bitcoin network more robust. It becomes one of the decentralized points of the network and increases the difficulty in taking down Bitcoin.

However, some resources are needed, mainly computational. You will need to have a system permanently on and connected to the internet, with 2GB of RAM and, currently, more than 200GB of disk memory. Over time the memory dedicated to Bitcoin's blockchain will increase in proportion to the number of transactions that will have to be saved. The internet connection will also be affected, as some bandwidth will be consumed to transmit and receive Bitcoin transactions and blocks.

Despite having to invest all these resources, there are thousands of volunteers who maintain their network nodes. Because?

Some of the most common reasons why someone wants to keep a knot are:

  • Programmers / companies that are developing applications that need to trust a node to have access to the network and blockchain. Having your own knot means that you don't have to depend on anyone.
  • Programmers / companies that are building applications that need to validate transactions, according to the network's consensus rules. With their own node, they can validate transactions themselves.
  • People who want to support Bitcoin. Having a node makes the network more robust and allows the network to serve more users and make more transactions per unit of time.
  • People who do not want to depend on third parties to process or validate transactions. As mentioned, with their node they are independent to validate their transactions.

At the time of writing this article there are about 11,000 nodes in the Bitcoin network. We can consult the number of nodes at the moment, as well as their distribution in the globe, through the Bitnodes website.


In the image above, you can see a representation of what contains Bitcoin Core and how it relates to Bitcoin's peer-to-peer (P2P) network and the applications that will work on the network.

A fully implemented node receives transactions that were carried out by other nodes in the network from the P2P network and validates them independently. You will also receive blocks that have been added during a period of time in which you are disconnected from the network in order to stay updated and follow the blockchain from there. To do this, it uses peer discovery procedures and later stores them so that you can trust them and connect to them to keep the network alive and synchronized. External applications access the nodes that contain these implementations to obtain information about transactions and blocks. The RPC box represents the procedures used by the applications to access the desired information within the complete node.

Within the Bitcoin Core, in the image above, we can also see that all transactions and blocks that are validated by the node and later stored through the storage engine in the respective location are included. The Mempool box identifies transaction data that has already been verified by network nodes but has not yet been confirmed. That is, they have not yet been added to a block on the blockchain. The block headers are stored as an easier and faster way to access the blocks that are stored on the blockchain. The Miner box represents the mining part included in the complete implementation that validates the blocks and, if you win the reward, stores the coins, bitcoins, in the indicated place. A complete portfolio is also included in this code, although it is not the most agile format to use.

This source code is updated and improved by hundreds of volunteers who agree with each other the best step to take to make the network more capable in several aspects: security, number of users or number of transactions per second. These improvements have already created 19 versions that build an increasingly secure network capable of carrying out an increasing number of transactions.

How do you rate this article?



Simplify Crypto
Simplify Crypto

Trying to help people to understand the crypto world from the basic concepts to the crypto projects purpose. My articles are publish in Publish0x and Hive

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.