Mining More Detailed. 2. Full Node's Tasks From Perspective Of Blockchain
In the previous article, we have described mining as regards a computing machine. A miner performs calculations, closes a new block, and gets rewarded with a certain amount of cryptocurrency. But when it comes to the blockchain network as a whole, mining resolves more various tasks, such as transaction retransmission for a new block, transaction data filtration for lightweight (or simply light) nodes, hash function calculation, and correctness verification.
Mining is performed with the help of a wallet software. Any person can download or compile a wallet to receive and access correct blockchain data. Hence, talking about wallets, we consider a full node wallet software. This reservation is mandatory because a full node is the only type of nodes that performs the most important tasks on blockchain.
A full node receives and sends data. This data includes transactions received from “neighboring” nodes of any type. By neighbouring nodes we mean the ones that interact with the full node. Transactions that should be added to blockchain are constantly received and checked by full nodes. The Bitcoin protocol, programmed in the node software, assures the correctness of the process. This way full nodes guarantee the convergence of the blockchain network. The term “convergence’ means that every node in the network has the same information about the blockchain content. Lightweight nodes can only send transactions, but when it comes to spreading data across the whole blockchain network, lightweight nodes totally rely on the full ones.
A full node does not provide a lightweight node with the whole blockchain. Still, the lightweight node requires information on transactions it is going to use. Here, each full node acts as a data filter. It searches through all transactions in the network and identifies the ones that are required by a particular lightweight node. A lightweight node delegates the right to select transactions from the entire blockchain to a full node.
The Bloom filtering is a special technique used to protect a light node from being disclosed via its transactions. Also, light nodes can partially verify the blockchain content proposed by full nodes. For this purpose, the Merkle tree and the Simplified Payment Verification (SPV) mode are used.
Every single node contains the rules determined by its protocol. These rules are called consensus. If a transaction meets the rules, it satisfies the consensus as well. Such transaction will sooner or later be placed into a block depending on the performance of the blockchain network and a transaction fee.
Unfortunately, lightweight nodes cannot apply rules verification to check transactions for two reasons. Lightweight nodes do not pay attention to transactions transferred by other lightweight nodes. Each transaction is transferred in a peer-to-peer way, where lightweight nodes cannot be receivers. Even if a lightweight node received transactions and analyzed them, it would not be able to fully check their correctness. A lightweight node does not keep the whole blockchain. Thus, it cannot verify whether received transaction inputs correspond to the outputs of a blockchain transaction.
Full nodes also carry out transaction verification. Once a new transaction is received by a full node, its inputs are checked for compliance with outputs of transactions that already exist in blockchain. In case of successful verification, the transaction may either be placed in a new block, or moved to the memory pool for further use.
Full nodes perform significant amount of work to support blockchain performance. Even if a part of its work was delegated to lightweight nodes, it would lead to enormous vulnerabilities. The protocols built on blockchain cannot take such a risk, at least in their current state.