The definition of a node may vary significantly according to the context it is used. When it comes to computer or telecommunication networks, nodes may offer distinct purposes, acting either as a redistribution point or as a communication endpoint. Usually, a node consists of a physical network device, but there are some specific cases where virtual nodes are used.
Simply put, a network node is a point where a message can be created, received, or transmitted. Hereby we will discuss the different types of Bitcoin nodes: full nodes, supernodes, miner nodes, and SPV clients.
Diving into the context of blockchains - which are designed as distributed systems - the network of computer nodes is what makes it possible for Bitcoin to be used as a decentralized peer-to-peer (P2P) digital currency. As such, it is censorship-resistant by design and doesn't require a middle-man to be transacted from user to user (no matter how distant they are in the world).
Therefore, blockchain nodes are responsible for acting as a communication point that may perform different functions. Any computer or device that connects to the Bitcoin interface may be considered as a node in the sense that they communicate somehow with each other. These nodes are also able to transmit information about transactions and blocks within the distributed network of computers by using the Bitcoin peer-to-peer protocol. However, each computer node is defined according to its particular functions, so there are different types of Bitcoin nodes.
Full nodes are the ones that really support and provide security to Bitcoin, and they are indispensable to the network. These nodes may also be referred to as fully validating nodes as they engage in the process of verifying transactions and blocks against the system’s consensus rules. Also, full nodes are able to relay new transactions and blocks to the blockchain.
Usually, a full node downloads a copy of the Bitcoin blockchain with every block and transaction, but this is not a requirement to be considered a full node (a reduced copy of the blockchain may be used instead).
A full Bitcoin node can be established through different software implementations, but the most used and popular one is the Bitcoin Core. These are the minimum requirements to run a Bitcoin Core full node:
Many volunteer organizations and users are running full Bitcoin nodes as a way to help the Bitcoin ecosystem. As of 2018, there are roughly 9,700 public nodes running on the Bitcoin network. Note that this number only includes the public nodes, which refer to the listening Bitcoin nodes that are visible and accessible (aka. as listening nodes).
Besides the public nodes, there are many other hidden nodes which are not visible (non-listening nodes). These nodes are usually operating behind a firewall, through hidden protocols like Tor, or simply because they were configured to not listen for connections.
Essentially, a listening node or super node is a full node that is publicly visible. It communicates and provides information to any other node that decides to establish a connection with it. Hence, a super node is basically a redistribution point that may act both as a data source and as a communication bridge.
A reliable super node typically runs 24/7 and has several established connections, transmitting the blockchain history and transactions data to multiple nodes around the world. For that reason, a super node will probably require more computational power and a better internet connection when compared to a full node that is hidden.
In order to be able to mine Bitcoins in the current competitive scenario, one has to invest in specialized mining hardware and programs. These mining programs (software) are not directly related to the Bitcoin Core and are executed in parallel to try and mine Bitcoin blocks. A miner may choose to work alone (solo miner) or in groups (pool miner).
While the solo miners’ full nodes make use of their own copy of the blockchain, pool miners work together, each one contributing to his own computational resources (hashpower). In a mining pool, only the administrator of the pool is required to run a full node - which can be referred to as a pool miner’s full node.
Also known as Simplified Payment Verification (SPV) clients, the lightweight clients are the ones that make use of the Bitcoin network but do not really act as a full node. Therefore, SPV clients do not contribute to the network’s security because they do not keep a copy of the blockchain and do not participate in the process of verifying and validating transactions.
In short, SPV is the method through which a user can check whether some transactions were included or not in a block, without having to download the entire block data. Thus, SPV clients rely on the information provided by other full nodes (supernodes). The lightweight clients work as communication endpoints and are used by many cryptocurrency wallets.
It is important to note that running a full node is not the same as running a full mining node. While miners have to invest in expensive mining hardware and software, anyone is able to run a fully validating node.
Before trying to mine a block, a miner needs to gather pending transactions that were previously accepted as valid by the full nodes. Next, the miner creates a candidate block (with a group of transactions) and try to mine that block. If a miner manages to find a valid solution for their candidate block, they broadcast it to the network so that other full nodes can verify the validity of the block. Therefore, the consensus rules are determined and secured by the distributed network of validating nodes and not by the miners.
Bitcoin nodes communicate with one another through the Bitcoin P2P network protocol, and by doing so, they guarantee the integrity of the system. A node that misbehaves or tries to propagate incorrect information is quickly recognized by the honest nodes and is disconnected from the network.
Despite the fact that running a fully validating node does not provide financial rewards, it is highly recommended because it provides trust, security, and privacy to the users. Full nodes ensure that the rules are being followed. They protect the blockchain against attacks and frauds (such as double-spending). In addition, a full node does not need to trust others, and it allows the user to be in total control of his money.