Bitcoin relies on the Blockchain being shared across a collection of nodes, which make up the decentralized network. Unlike conventional banking systems there is no central place where this ledger is stored. Bitcoin cannot exist without functioning nodes.
Bitcoin wallets and the miners that secure the network make up the majority of nodes, but some nodes are more important than others. There are concerns regarding the number of full nodes that host a full copy of the full 35 gigabyte Blockchain.
A full node is defined as a network-attached bitcoin client application, such as the original bitcoin Core (QT) client or an implementation of the bitcoind framework. A full node has the entire, up-to-date set of blockchain files, and also has port 8333 open, so it is set to listen for incoming requests. This list is very specific, and all of these conditions must be met for it to be a useful full node.
The cause of declining full node numbers is well known. Users are discouraged by the 35 Gigabyte download, required to run a full node wallet app. The fear that the decline itself will render the Bitcoin network defenseless against attackers is the subject of much debate on boards like Reddit, and the Bitcointalk forum.
A common mistake, that many bitcoin node owners make, results in many nodes that actually hinder the network more than help it. This mistake is not making port 8333 accessible for incoming requests, which mainly happens because they don't know that their firewall is blocking that port.
When this port is blocked the node can only make a maximum of 8 connections to other nodes at a time. Correcting this one mistake across the network could double or triple the number of full nodes. Some developers feel we already could have an excess of nodes, because a change in the software or general user education would make such a big difference.
Head Bitcoin developer Gavin Andresen took that critique even further last summer on Reddit.
“Most ordinary folks should NOT be running a full node. We need full nodes that are always on, have more than 8 connections (if you have only 8 then you are part of the problem, not part of the solution), and have a high-bandwidth connection to the Internet."
- Gavin Andresen, Bitcoin Head Developer
We recently investigated the number of bitcoin miners, and found the number to be over 100,000 strong. Bitnodes, a website that tracks the number of full nodes in real time, reports that there are between 5,000 and 6,000 full nodes online at any time of the day. Considering the growth of the bitcoin network, and transactions, BitGo engineer Jameson Lopp created Statoshi to investigate in this number is high enough.
His initial fears were that we are seeing too many “thin” wallets, sometimes called Simplified Payment Verification (SPV) wallet clients, that don't have a full copy of the blockchain nor an open listening port. Through a lot of data analysis, and chart wizardry, Lopp eventually came to the conclusion that, “the current number of nodes is greatly in excess of what is needed in order to meet current demand.”
“The vast majority of nodes are full nodes that host the entire blockchain; SPV nodes constitute a trivial portion of network use.”
- Jameson Lopp, BitGo Engineer
Lopp isn't the only bitcoiner pondering this issue. Reddit user i_wolf has thought long and hard about the problem and recently made the argument that running a full node gives individuals added security.
Since an individual or business can be attacked on the Bitcoin network through a Sybil attack, where thieves surround an individual and try to feed her false information, it is only good, sound policy to run your own full node. Running your own full node could be considered as always having an accurate backup of the blockchain, and the information it contains.
Bitcoin inventor Satoshi Nakamoto seems to have addressed this issue as well, in the whitepaper that first described Bitcoin, when he first proposed SPV clients.
“Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.”
- Satoshi Nakamoto
While the bitcoin protocol incentivizes miners to secure the network, there is no direct financial reward for running a full node. Some users have publicly called for financially incentivized nodes, suggesting a simple a collection for distribution among the owners. Others have proposed that a new channel be added to the bitcoin protocol itself, in order to send some of the fees to node owners instead of miners.
The most effective incentive appears to have been a program run by Bitnodes, that created a contest between node operators for having the most connections between peers. The winner of the contest gets paid a modest cash prize, drawn from a collection of donations.
There are also some enterprising web hosts out there, including Fullnode, that have decided to sell the service of full node-hosting. However, they are finding it harder to stay profitable with the growing size of the blockchain, and Fullnode has announced that they are stopping the service soon.
Despite Fullnode's exit from the field, the price of remotely hosting a full node is not going up for everyone. While you can always run one from an old computer you have lying around your home or office, it's easier and far neater to run one on a VPS server. For a price around $10 to $20 per month there are many web host services that can help you roll out a Bitcoin full node with ease.
There are also several pre configured full nodes for sale, usually based upon the popular and inexpensive Raspberry Pi. Bitnodes recently launched its own hardware solution which is fully-contained and already configured for $168 worth of bitcoin. All it needs is a fast internet connection and power.