What role does a Bitcoin Full Node play
What you'll learn
- Bitcoin functions & participants
- Running a Full Node
- Storing the Blockchain
- Routing Transactions
In the previous article in this section we looked at an overview of the architecture of Bitcoin as a decentralised monetary system running across a peer-to-peer network. Keeping things high-level, we split the architecture into two broad components. The rules that define how Bitcoin works as a monetary system, delivered as a piece of software and a hierarchy of network participants who run it.
In this article we’ll flesh out more details of the essential system functions and then look at the first of the network participants - a Full Node. Full Nodes play a crucial role in fulfilling Bitcoin’s core functions and enabling others to connect to the network.
The main functions of Bitcoin’s monetary system
In order to provide a functioning monetary system, without a central mediator, Bitcoin needs to achieve the following:
- Maintaining an accurate historic ledger of transactions & unspent balances
- Validate new transactions that confirm with the rules (consensus mechanism)
- Add those transactions to the historic ledger, in the correct date order & data format
- Issue new bitcoin at the defined rate - currently 6.25BTC per new block
- Allow wallets to spend & receive transactions & sync to the ledger
- Act as a service for external users/services to reference transactional data
- Route information across participants in its peer-to-peer network
Satoshi Nakamoto encapsulated these functions in the original reference code he wrote in 2008. It has since been updated and is made available in a reference client, the most commonly used being Bitcoin Core.
Bitcoin network participants
The Bitcoin network has no hierarchy, but does have different types of Nodes fulfilling the required functions to a greater or lesser extent.
- Full Nodes: All functions except creating new bitcoin
- Lightweight Nodes: Routing & Wallet ( 5 & 7)
- Miners: Issuance/Ordering; Routing & Full ledger (3,4 & 7)
- API Clients - Providing ready made connections to Bitcoin Core (6)
- 3rd Party Services: Connecting to Bitcoin Core via API Clients or directly to Full Nodes to power external services
Each of the parts of the Bitcoin network represent an opportunity for you to actively participate in running and expanding its ecosystem, but the Full Node is the most crucial runs Bitcoin Core, nesting all functions (except Mining) by default.
Running a Full Node
By running Bitcoin Core anyone with a modest computer set-up and competence can become a Node on the Bitcoin’ network, helping fulfill the important functions, as well as providing a bridge to those that want to build services to expand the ecosystem and user adoption.
It is an open source piece of software maintained and developed by a voluntary team which is known, confusingly, by the same name - Bitcoin Core.
It is written in C++ and can be downloaded for free from Bitcoin.org. It will take several days to synchronise as it includes a copy of the ledger of transactions, known as the Bitcoin Blockchain.
The full Bitcoin Blockchain is currently over 350 GB but once the download is complete - known as Initial Blockchain Downloading (IBD) - you can start playing a direct role in supporting the Bitcoin ecosystem.
Running a Full Node means maintaining a constantly updating record of the ledger of bitcoin transactions, known as the Bitcoin blockchain. This means there is a significant bandwidth requirement for running a Full Node.
- A full node is responsible for inspecting the authenticity of each digital signature before adding a new block to the blockchain.
- A full node has the authority to reject transactions or blocks that don't follow the protocol.
Maintaining the Bitcoin Blockchain
The bitcoin blockchain is, as its name suggests, a linked chain of historic bitcoin transactions recorded into successive timestamped blocks of data. This provides the accurate settlement history record that any monetary system requires.
The blocks are bound together using timestamps and cryptographic hashes and are created (via the Mining process) at intervals of roughly 10 minutes, which adjusts its difficulty every two weeks to achieve that (detailed below).
Each block of transactions has a hash to validate the integrity of the previous ensuring a sequential pattern of blocks called the blockchain.
The first block in the Bitcoin network is called the Genesis block because it does not reference any previous block. Instead, it was hard-coded into the source code by Satoshi.
Each block size is no bigger than 1MB, with a capacity to accommodate about 4,000 transactions (each transaction size is an average of 250 bytes). The size limitation is crucial to the objective of decentralisation because any increase in storage makes the IBD larger.
Too big and it limits who can participate, which is the antithesis of openness and inclusivity. This will make more sense as we fill in the details of the system participants that produce blocks, validate and verify transactions.
Just as a database is modelled, the Bitcoin network functions as a replicated database where each contains the same list of previous Bitcoin transactions. Full Nodes propagate this “transaction data” (payments) and “block data” (additions to the ledger).
The complexity of the Bitcoin architecture is in ensuring nodes acts independently of each other while still maintaining a highly secure and anonymous network. Although not all cryptocurrencies follow the Bitcoin network architecture, it the first successful and currently largest cryptocurrency network, and has been used as a model for many subsequent cryptocurrencies, adapting its rules and functions.
Routing & storing transactions
A Full Node validates any transaction sent to it as it includes a full copy of the Bitcoin blockchain - introduced above. Once a bitcoin transaction is sent to any node connected to the bitcoin network, the transaction will be validated by that node.
Validation is crucial to maintain the integrity of the whole system, which is why running a Full Node actively supports Bitcoin. Validation means ensuring consensus on:
- The number of bitcoin each block can create. (Currently 6.25 BTC)
- Transactions having correct signatures for the bitcoins to be spent.
- Transactions/blocks happening in the correct data format.
- No transaction output being double-spent within the blockchain
If valid, each node will propagate transactions to the other nodes to which it is connected, and either a success or failure message will be returned synchronously to the originator, depending on the validity of new transactions.
Once proven as a valid transaction, the node propagates the transaction to other nodes which eventually gets picked up by a Miner and - after the required Proof of Work has been done - is added to the next block.
This structure prevents spamming, denial-of-service attacks, or other nuisance attacks against the bitcoin system. In a nutshell, every node independently validates every transaction before propagating it further.
Communicating with Bitcoin Core & controlling functions
Bitcoin Core acts like a server which means all the nested functions - as listed above - can be accessed and controlled by the client. Full Nodes do this by using set commands in JSON-RPC (Remote Procedure Calls) format which are available across a whole range of languages. So chances are, if you have programming skills you can communicate with Bitcoin Core and build out functions.
Given Bitcoin Core includes the full blockchain - the entire historical ledger of bitcoin transactions and balances - the possible uses of that information are limited only by your imagination and programming skills.
Here’s a list of ways of communicating with Bitcoin Core.
Python; Ruby; Erlang; PHP; JAVA ;Perl; Go; .Net; JS; Deno; Command Line; C; Clojure; C##
Full details can be found on the Bitcoin Wiki. There is however, a shortcut provided by the Intermediary Layer (sometimes called Client Layer) of pre-built APIs that will do the heavy-lifting for you.
Benefits of Running a Bitcoin Node
Running a full bitcoin node doesn't have any coin rewards, however, it comes with its intangible benefits. They include:
- Running a full bitcoin node increases the security of a transaction. If you carry out multiple BTC transactions a day, you can access updated information regarding your transactions directly from Bitcoin's blockchain.
- By running a full node, you can enforce Bitcoin's consensus rules and have the authority to reject a transaction that breaks the rules. Plus, the more copies of the Bitcoin blockchain exists, the more resilient the platform is. So, you're not just helping to improve the security but also strengthening the Bitcoin network.
- If you are a trader or holder, you'll have immediate access to large transactions that can move the market. In fact, a research paper published by Lennart Ante recommends that traders should run a Bitcoin node themselves to assess the market.
- Outside of Nodes, Bitcoin transactions are processed through a third party. People who are very concerned about their privacy should run Bitcoin nodes of their own to take full advantage of Bitcoin's privacy system.
- In the event of a hard fork, bitcoin full nodes have the option to choose which chain to join. So, if you run a full Bitcoin node, you can get involved in the governance of the Bitcoin protocol. Read more about forks here.
Running a Node
By running a node, you can actively participate in the crypto revolution helping shape an alternative monetary system. Before you start with the process, you need to know the risks and requirements associated with running a Bitcoin node. Let's dive into that-
1) Secure Your Wallet
When running a Bitcoin node, you can store your bitcoins in the Bitcoin core wallet, however; take safety measures as you would for running any other crypto wallet.
2) Minimum Requirements for a Full Node
- Desktop or laptop with updated versions of the operating software
- 200 GB of free disk space, with a minimum read/write speed of 100 mb/s.
- 2 GB of random access memory
- A fast internet connection with a minimum speed of 500 kb/second
- An unmetered connection or a connection with high upload limits, as well as one that does not have any upload limits.
- A minimum of six hours a day for your node to run.
Note: Ensure your laptop or desktop is running at optimal condition since most of the operating systems allow your computers to enter a low-power mode as soon as the screensaver activates. This will halt or slow down the traffic.
3) Problems You May Encounter
- Legal: Ensure your country hasn't banned Bitcoin.
- Bandwidth Limit: Check the data bandwidth of your internet connection with your service provider. The goal is to keep the Bitcoin node running.
- Firewall Access: Like any blockchain, spammers try to malign the Bitcoin blockchain, too. But, rest assured that the Bitcoin network is safe and won't affect your hardware. Some antivirus programs may make it difficult to run the Bitcoin node, so check antivirus software in your system before you begin with the process.
- Target Risks: Hackers or spammers who wish to undermine the Bitcoin network are on a constant lookout to attack a full bitcoin node. So, take extra precautions to ensure your hardware doesn't get attacked.
3) Options to Run the Bitcoin Node
There are three options to run a Bitcoin full node:
i) Run it on a virtual private network (VPN).
ii) Run it on an 'out of the box' solution, like Lighting In A Box, Raspiblitz, Nodl, Casa Node, etc.
iii) Run it on a customized solution, like Raspberry PI 4- a mini-computer that has the capacity to run full nodes on the Bitcoin network.
4) Now the Process to Run a Bitcoin Node on a Computer using VPN
Step 1: The first step is to keep your hardware ready to run the Bitcoin node.
Step 2: Choose the operating system you wish to use to run the Bitcoin node. Some options are Windows distributions (7,8, or 10), Linux distributions(Debian, Ubuntu, etc), and Mac OS.
Step 3: Install Bitcoin on your hardware using these step-by-step instructions.
Step 4: Follow these steps to configure your router to allow port 8333:
a) Login to your router, and look for the port forwarding(Virtual Server) section. You'll find it under the "NAT" section.
b) Input your IP address..
c) Type '8333' on both Internal Port Start and External Port Start.
d) Select TCP/UDP in the "Protocol" section.
e) Click Apply/Save
Step 5: Verify with websites like "earn.com" to ensure your Bitcoin node is reachable.
Helping build & maintain Bitcoin Core
If your interest isn’t so much in participating in the ecosystem, but building the infrastructure behind it, that is just as permissionless.
Bitcoin Core is maintained by a voluntary team of Contributors, and anyone is free to propose changes, test code, review and make comments. Major changes to Bitcoin Core are proposed in what are known as BIPs - Bitcoin Improvement Proposals. These require a formal process of proposal, discussion and approval. Some of the biggest chances to Bitcoin, including Segwit - resulting from the so-called Block Size War - came via BIPs
Smaller bug fixer fixes and maintenance aren’t required to go through the formal BIP process, as on rare occasions they are fixes to significant vulnerabilities. This was the case in 2018 when a patch was required which could have led to the creation of bitcoin beyond the fixed supply cap which would have destroyed confidence in the entire system.
You don’t necessarily have to be a developer to help improve Bitcoin Core. You can help improve documentation, translation, suggest process change or improvements to the UI.
As an alternative to building and maintaining Bitcoin Core there are completely separate implementations of the Bitcoin Protocol, such as Libbitcoin, which act as collections of open source C++ libraries for building bitcoin applications.
Find out more about contributing to Bitcoin Core, but please note it is a support channel for Bitcoin. In the next article we'll look at the role Miners play in supporting the Bitcoin Network and how you can participate in the mining process.