Bitcoin full nodes’ implementation is included in Bitcoin Core software:

Bitcoin Core – Bitcoin is just a protocol. Everyone can write its implementation. Bitcoin Core is a bitcoin implementation started by Satoshi Nakamoto, written in C++ and playing a role of reference implementation. It means that it is the authoritative reference on how each part of bitcoin network should be implemented. It is an open source code project, free to download and use for any purpose created by the community of volunteers. If you want to be part of it – simply join the bitcoin core’s GitHub.

Full nodes are programs which have the complete bitcoin blockchain on their hardware and thus have the capability to validate new transactions and blocks. They are the beating heart of bitcoin ecosystem  (if you are looking for more information about their structure and role – Bitcoin explained III. Full nodes). Since bitcoin is a decentralized network anyone with a computer meeting the requirements is free to run their own full node. What are the requirements? According to the official bitcoin core site:

  • Desktop or laptop hardware running recent versions of Windows, Mac OS X, or Linux.
  • 145 gigabytes of free disk space, accessible at a minimum read/write speed of 100 MB/s.
  • 2 gigabytes of memory (RAM)
  • A broadband Internet connection with upload speeds of at least 400 kilobits (50 kilobytes) per second
  • An unmetered connection, a connection with high upload limits, or a connection you regularly monitor to ensure it doesn’t exceed its upload limits. It’s common for full nodes on high-speed connections to use 200 gigabytes upload or more a month. Download usage is around 20 gigabytes a month, plus around an additional 140 gigabytes the first time you start your node.
  • 6 hours a day that your full node can be left running. (You can do other things with your computer while running a full node.) More hours would be better, and best of all would be if you can run your node continuously.

If you are a developer, having full node is a necessity to create applications which directly operate on the bitcoin blockchain. Even if you don’t want to write bitcoin apps anytime soon, running a full node helps tremendously the bitcoin network as a whole by making it more robust and decentralized. Also if you want to use a wallet on your full node, your transactions will be quicker since your node will be the first one to validate them. Still, if you ask me, these incentives are probably not good enough for most people. It is not easy for a non-developer to sacrifice a lot of RAM, storage and Internet uploads and got nothing in return but the idea of helping the bitcoin network.  And since full nodes are the crucial part of bitcoin ecosystem, not having any reward for running them might be a problem in the future with the increasing amount of transactions. That’s why I personally have a lot of hope with the coming Lightning Network. With LN every full node with some bitcoins on it will be able to become a hub for channeled transactions. In a nutshell, full node owners will be able to earn some fees from transactions which will definitely influence the number of running full nodes and thus making the whole bitcoin network better. In my future posts, I’ll explain in more detail how lighting network works. But now, lets go back to full nodes. If you are a developer or someone who wants to improve the speed of their transactions and improve the bitcoin network as a whole, I strongly suggest reading the following paragraphs.


Installing bitcoin full node on Ubuntu

Bitcoin full nodes can be run on Windows, macOS and Linux. Installing it on Windows and Macs is really straightforward – it comes only to downloading the needed exec and go through the installation wizard – therefore I won’t cover it here. When it comes to running bitcoin full node, my choice is the most popular Linux distribution – Ubuntu. Now there are two ways of doing it. First, the easiest way is to add a needing repository, and then download the precompiled binaries. This is a good option for someone who doesn’t care about the latest version so it would fit really nicely someone who doesn’t want to write cutting-edge apps. For developers a better option is to install it by compiling bitcoin core from the source code, which I’ll explain in the next part of this series. For now, let’s see how to do that in an easy way.

For someone who is Linux savvy this process will be extremally easy but for those of you who just start with Linux I’ll give a step-by-step instruction. And then everyone will be able to brag about being part of a bitcoin revolution 🙂 So here we go:

First, we have to open a new terminal window (default short-cut for that is alt+ctrl+t) and it looks like that:

Ubuntu terminal. All the commands are typed after the dollar sign.

And now we need to type 4 commands:

1. Add Bitcoin PPA. By doing that we will be able to download the bitcoin core binaries.  You will be asked for your Ubuntu password.

$ sudo apt-add-repository ppa:bitcoin/bitcoin

2.Update repositories

$ sudo apt-get update

3. Install Bitcoin Core from bitcoin repository

$ sudo apt-get install bitcoin-qt

4. Run the Bitcoin Core

$ bitcoin-qt

Now a new window should appear letting you decide where you want to install the full bitcoin blockchain.

Bitcoin Core welcome screen, asking where to download the full bitcoin blockchain.

Once it’s done you have a full running node on your computer ready to start validating new transaction and then by connecting to other nodes becoming part of the whole bitcoin network!

For a quick recap that’s how the whole process looked like on my computer:

In the next part, I cover how to install bitcoin core from compiling the bitcoin’s source code. The whole process is more complicated and it’s dedicated mostly to developers who want to have the most recent bitcoin core version running.

If someone is not interested in developing bitcoin apps and is satisfied with given binaries can skip to part 3 in which I explain the basics commands we can use to get data from the bitcoin blockchain.

Pawel Bakiewicz

Pawel Bakiewicz

Software developer, blockchain advocate and proponent of cryptocurrencies as our financial future. If you have any queries please contact me at