5

There seem to be some different interpretations of what the term "full-node" implies. E.g. there seems to be some disagreement whether a pruned node is still a full-node.

So: What characteristics must be fulfilled to label a Bitcoin client as a full-node?

1
5

Fully validating nodes ("full nodes") are clients that have validated the whole blockchain self-sufficiently and enforce all of the rules of Bitcoin on any data they receive. Therefore, they cannot be cheated by means of invalid blocks or transactions.
Running your own full node is the most secure, most private, and least trusting way to participate in the Bitcoin network. A full node is necessary to prevent invalid blocks when mining.

Common usage of the term does not require that the node keeps all blockchain data at hand. Although many full nodes have a complete copy of the blockchain, full nodes can also run in pruning mode.

Nodes that can serve the complete blockchain are referred to as Archival Nodes.

Sources:

6
  • What is the difference then between a SPV node and a full node? A SPV node also validates the entire blockchain using block headers no? Then subsequently uses bloom filters to subscribe to transactions it is interested in receiving. – rny Sep 7 '16 at 1:07
  • @renlord: Thin clients don't check all transactions, therefore cannot enforce all rules of Bitcoin. They only check the header, i.e. whether a block fulfills its own difficulty statement, and via Merkle branches the position of the transaction in the block. Thin clients rely on additional confirmations to assume that the block was accepted by the network. They are vulnerable to lies by omission, and reveal addresses of interest to nodes when sending their bloom filter. – Murch Sep 7 '16 at 8:04
  • If there's a soft fork, a full node may not be "fully validating". If all the miners accept a soft fork and have enough of the non-mining full nodes accept it to make it secure, the remaining full nodes aren't doing a full validation on transactions anymore. – Chan-Ho Suh Jan 30 '20 at 19:42
  • 1
    "Full nodes … enforce all of the rules of Bitcoin on any data they receive." If they're not enforcing the rules of the soft fork, they're not full nodes anymore. – Murch Jan 30 '20 at 20:35
  • 1
    Since there is no standards body for Bitcoin lingo, I'm afraid that some people may happen to use other definitions for "full node", especially since the earliest releases of full node software happened to be able to be wallets and archival nodes as well. I filed an issue on the Mastering Bitcoin repository to point out that keeping a complete copy of the blockchain is not necessary in order to fully validate all blocks and transactions. – Murch Feb 14 '20 at 19:50
1

full-node should be able to create valid blocks. peers of full-node can not cheat this full-node and force it to create invalid block.

1

Both full node and pruned node can perform the following tasks:

  • validate new unconfirmed transactions
  • relay valid or invalid transactions and maintain its own mempool
  • validate blocks independently with reference to its own blockchain replica
  • relay new blocks

The difference between a full node and a prune node is that a pruned node cannot service getblock or getblockheader requests as it does not contain the full copy of the blockchain. It cannot rebuild the current state of Bitcoin from the genesis block without re-downloading the entire blockchain.

Therefore, in summary, to spell it out more explicitly. A full-node is defined as a node capable of full validation with reference to its own complete blockchain replica which stores all blocks since the genesis block. It is also the only type of node which may recompute the current state of Bitcoin from existing blocks that form the longest chain. A full node is also the only type of node AFAIK that is capable of responding to getblocks and getheaders request.

5
  • Thank you, but you didn't address the main question, which is about a definition of the term "full-node". Your answer might fit better on the question What do pruning nodes contribute to the network?. – Murch Sep 6 '16 at 12:29
  • 1
    Also, why would either relay invalid transactions? That doesn't make sense. – Murch Sep 6 '16 at 12:30
  • Just saying it could. Full nodes operate under the assumption that they do not trust other nodes therefore they will always perform independent validation. – rny Sep 6 '16 at 13:30
  • I hope my latest edit addresses the main question. Otherwise, please correct me where I am mistaken :) – rny Sep 6 '16 at 13:46
  • Thanks, that's better. :) Since I disagree with you, I've added my own answer. ;) I still don't understand why you mention that full nodes would relay invalid transactions. They might relay a transaction that another node considers invalid, but when do they ever relay transactions they themselves consider invalid? Do you mean XT's feature to relay doublespends? – Murch Sep 6 '16 at 14:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.