The development of Bitcoin has its epicenter in the Bitcoin Core software, an incredible piece of code inherited from the unknown Satoshi Nakamoto and that makes the operation of Bitcoin in all its splendor possible.

EAmong all implementations of Bitcoin, without a doubt there is one that is the mother of all of them, being the best known. Is about Bitcoin Core, an open source development under MIT license that carries the weight of the development of the Bitcoin protocol. This is responsible for the entire Bitcoin protocol and for implementing the  full client benchmark for Bitcoin. In this way, Bitcoin Core has everything you need to verify payments autonomously. And last but not least is the implementation that started the very Satoshi Nakamoto, the creator of Bitcoin.

To date, Bitcoin Core is the only one that implements the Bitcoin protocol in its entirety. So it is a reference on which the other developed clients rely. It is made up of a program that creates nodes complete, which download the entire blockchain so that they can fully validate it. As well as by a wallet that operates and manages the bitcoins and verifies all the operations carried out.

How does it work?

The Bitcoin Core software can be downloaded like any other program on our computerIn fact, just visit this web to do it. But before that several aspects must be taken into account. First, Bitcoin Core implements all aspects of the Bitcoin network, therefore, by downloading it you will become a complete node of the network. This includes an exact and complete copy of all the operations that have been carried out with Bitcoin since its launch in 2009. And of course, it will be constantly updated. So the demand for available storage space on the hard drive will be at least 400 gb.

Second Bitcoin Core implements a wallet, through which all transactions made with the copy of the blockchain. So downloading and syncing it to a computer will take a few days before you can use it. Therefore, although it provides high levels of security and privacy, it is recommended only for advanced users.

Another important feature of Bitcoin Core is that it uses an internal program (daemon) called bitcoind. A daemon (demon in Spanish) is a program that runs in the background for use through command lines and remote procedure calls (RPC). The name "demon" is closely related to systems UNIX and derivatives like GNU / Linux. Bitcoin Core is also capable of creating a testnet, a test network where developers check the changes they want to make. This way they can analyze in detail how the changes or improvements they want to the network work before incorporating them into it.

Furthermore, Bitcoin Core also contains a program called bitcoin-cli. This is a command line interface, through which users can send commands RPC a bitcoind and perform any operation supported by Bitcoin.

Bitcoin Core wallet, the official Bitcoin wallet

How much do you know, cryptonuta?

Is Bitcoin Core the only way to create a full node for Bitcoin?

FALSE!

There are other options to enable a full Bitcoin node, one of those options is Amir Taaki's Libbitcoin. But the only one that fully implements the options for it is Bitcoin Core.

Bitcoin Core development and improvements

Bitcoin Core development started with version 0.1.0. This is considered the first implementation of the Bitcoin software created by Satoshi Nakamoto. It was only available for Windows. In version 0.2.0, support for Linux systems was introduced for the first time and later MacOS.

Nakamoto participated in the development and improvement of Bitcoin Core until version 0.3.19 in 2010, then abandoned the project, leaving it in the hands of Gavin Andresen. It was Andresen who later, in 2014, gave the project to Wladimir J.van der Laan and other major developers.

In version 0.3.20 the testnet testing network. And from version 0.5.0 of 2011 it started to be called Bitcoin-QT. This referring to an implementation based on the MIT licensed Qt4 graphical interface library. It was developed by the developer Wladimir Van der Laan and provides a friendly interface to Bitcoin code. All in order to make its use easier, friendlier and more intuitive for users not familiar with programming.

Later, in version 0.9.0, the software recovered the name of Bitcoin Core, and in it, transaction fees were reduced as a measure to encourage the completion of microtransactions.

Leaving OpenSSL behind and improving capabilities

In its early days, Bitcoin Core used OpenSSL for many crypto operations. However, this started to change in 2015 due to bugs discovered in OpenSSL. Among the security flaws was one that allowed an attacker to read the memory of a server and obtain private keys. Another bug detected is that OpenSSL uses a "weak" font for random numbers, and the Bitcoin Core developers decided to create their own font. For those reasons, OpenSSL was removed from the Bitcoin Core source code.

In version 0.11.2, developers incorporated a feature into the network, where certain future conditions could be established to prevent the expense of some transactions. Then with version 0.12.1 the functionality of allowing multiple soft forks simultaneously.

Almost close to 100 collaborators worked on version 0.13.0, where they introduced more than ten significant changes. For 2016, the soft fork was activated CheckSequenceVerify. In that same year the soft fork of followed as an improvement to transaction malleability and the space of the blocks without changing their size.

In 2018, version 0.16.0 was released, which allowed the use of a native address format for SegWit, also called an address format. bech32, which was originally developed by Peter wuille y Greg Maxwell

The risks of centralization

As we have said, Bitcoin Core is the quintessential Bitcoin client. It is not just any client, it is the most used. On the Bitnodes website it may look As the Satoshi client (that's what Bitcoin Core is called internally), it is the client of over 95% of all nodes connected to the network.

This has a positive part: all the nodes speak a very homogeneous protocol. However, this also has a negative and potentially horrible side for some detractors: the control capacity that the developers of that client have.

Although a client is nothing more than a program that implements the Bitcoin protocol, it must be understood that the protocol alone does nothing, requires the program to execute it. For this reason, this program has control over which parts of the protocol to implement and which not, for example what BIPs to integrate.

Although it is true that it is an open source program, which we can see its code and even propose changes, only a small group of programmers has the control so that those changes enter the program. A small and closed group, which is constantly tempted with offers from multinationals and governments. After all, open source software does not give money directly, and they must live on something, corporations and governments know this and have the ability to fool with what is necessary, putting these programmers on the payroll and lobbying them as a lobby to direct the functionalities in one way or another. Just like in politics with representatives.

In this situation, being the client par excellence and seeing how complicated it is to create a new client where committed and anonymous developers without the ability to be corrupted maintain the code, some developers chose to do a hard fork Bitcoin.

The centralization problem is something real, a problem that Bitcoin seeks to solve, but without a doubt there are still many opportunities for improvement that exist around Bitcoin and this concept.