Any computer that connects to the Bitcoin network is called a node. Nodes that fully enforce all of the rules of Bitcoin are called full nodes. Most nodes on the network are s instead of full nodes, but full nodes form the backbone of the network.
What makes a full node?
Full nodes download every block and transaction and check them against Bitcoin's core consensus rules. Here are examples of consensus rules, though there are many more:
- Blocks may only create a certain number of bitcoins. (Currently 25 BTC per block.)
- Transactions must have correct signatures for the bitcoins being spent.
- Transactions/blocks must be in the correct data format.
- Within a single block chain, a transaction output cannot be double-spent.
If a transaction or block violates the consensus rules, then it is absolutely rejected, even if every other node on the network thinks that it is valid. This is one of the most important characteristics of full nodes: they do what's right no matter what. For full nodes, miners actually have fairly limited power: they can only reorder or remove transactions, and only by expending a lot of computing power. A powerful miner is able to execute some serious attacks, but because full nodes rely on miners only for a few things, miners could not completely change or destroy Bitcoin.
Nodes that have different consensus rules are actually using two different networks/currencies. Changing any of the consensus rules requires a reference client, which is the only client guaranteed to behave correctly., which can be thought of as creating a new currency and having everyone move to it. Consensus rules are different from policy rules, which specify how a node or miner prioritizes or discourages certain things. Policy rules can be changed freely, and different nodes can have different policy rules. Because all full nodes must use exactly the same consensus rules in order to remain compatible with each other, even duplicating bugs and oddities in the original consensus rules, creating a full node from scratch is extremely difficult and dangerous. It is therefore recommended that everyone who wishes to run a full node use software based on the
At minimum, a full node must download every transaction that has ever taken place, all new transactions, and all block headers and Merkle trees. Additionally, full nodes must store information about every unspent transaction output until it is spent. Modern-day full nodes are inefficient in that they download each new transaction at least twice, and they store the entire block chain (>30 GB) forever, even though only the unspent transaction outputs (<1 GB) are required.
Why should you run a full node?
Running a full node is the only way you can use Bitcoin in a trustless way. You will know for sure that all the rules of Bitcoin are being followed, for example that no bitcoins are spent not belonging to the owner, that no coins were spent twice, that no inflation happens outside of the schedule and that all the rules needed to make the system work (e.g. difficulty) are followed. Full nodes are currently the most private way to use Bitcoin, with no nobody else learning which bitcoin addresses belong to you. Full nodes are the most secure way to use Bitcoin, they do not suffer from many attacks that affect lightweight wallets.
As explained previously, full nodes enforce the consensus rules no matter what. However, lightweight nodes do not do this. Lightweight nodes, however, do whatever the majority of mining power says. Therefore, if most of the miners got together to increase their block reward, for example, lightweight nodes would blindly go along with it.
Don't worry, this can never happen in real life since any lightweight node is required to connect to a full node to get its information. So if you use a lightweight node you would have to be very unlucky connecting to an evil full node and since most lightweight nodes connect to a dozen nodes at random, it is statistically quite improbable to cause any issues.
There just have to be enough full nodes in the Bitcoin network.
Full nodes may provide various services to other network participants (if the software is run with -listen=1 as is default). This is especially important for lightweight nodes.
These services include:
- Filtering transactions and blocks on behalf of lightweight nodes so that lightweight nodes do not need to download every transaction ever made on the network in order to find their own transactions.
- Serving historical full blocks to nodes that have been offline for a while.
- Transmitting new transactions from users to miners.
- Broadcasting new blocks from miners to other nodes.
For the most part, these services are only usefully performed by full nodes that are listening on port 8333. Other full nodes and all lightweight nodes are actually a slight drain on the network's resources in this respect. The more full nodes that accept incoming connections there are, the more users the Bitcoin network can support.
Having the blockchain stored on your hard drive is the most private way to have a wallet. All other lightweight solutions leak information about which addresses are yours because they must query third-party servers. The Electrum servers will know which addresses belong to you and can link them together. Despite bloom filtering, SPV nodes based on BitcoinJ do not provide much privacy against nodes who connected directly to the wallet (7.1).
For many use cases, such privacy may not be required. But an important reason to run a full node and use it as a wallet is to get the full privacy benefits.
Lightweight nodes are sometimes able to be temporarily tricked into accepting transactions or blocks that are not actually valid. This could cause serious financial damage, especially for websites that automatically process Bitcoin transactions. Full nodes provide the maximum security possible, and so they should be used by all businesses, and also by regular users whenever doing so is convenient.
Some are incentivizing it
Bitnodes ran a program to incentivize full node operators until the end of 2015. (9.1)
How to run a full node
If you run the Bitcoin Core/bitcoind wallet, you are running a full node. If you open port 8333, you will contribute to the network's capacity. If you actually use the wallet feature, or if you use a lightweight client like MultiBit but configure it to connect exclusively to your full node, then you will contribute to the network's economic strength and receive protection from some possible attacks against lightweight nodes.
There are a few alternate full node implementations, but they are not recommended for serious use because it is currently difficult to determine whether they implement the consensus rules with 100% accuracy. Even very slight inaccuracies could cause serious problems for the users of these alternate clients. One widespread example implementation is Bitcore.
[[!template Error: failed to process template <span class="createlink"><a href="/ikiwiki.cgi?page=%2Ftemplates%2Fbitcoin_core_documentation&from=Full_node&do=create" rel="nofollow">?</a>bitcoin core documentation</span> template bitcoin_core_documentation not found ]]