2

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?

3

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:

  • The Bitcoin wiki explicitly describes pruning as an option for full nodes (see Wiki: Full Node).
  • Mastering Bitcoin introduces the term full-index client to distinguish a client with the complete blockchain.
  • Bitcoin Core developer Pieter Wuille announced the pruning feature thusly on Twitter:

    @orionwl just merged pruning support in #Bitcoin Core! Run a (no wallet) full node with 1.3 GB storage. Thanks to all who contributed.

  • 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. – renlord 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
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.

  • 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. – renlord Sep 6 '16 at 13:30
  • I hope my latest edit addresses the main question. Otherwise, please correct me where I am mistaken :) – renlord 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.