What is the meaning of the term "full-node"?

3

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?

Murch

Posted 2016-09-06T09:39:21.270

Reputation: 41 609

related: What do pruning nodes contribute to the network?

Murch 2016-09-06T09:54:45.917

Answers

4

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.

Murch

Posted 2016-09-06T09:39:21.270

Reputation: 41 609

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 2016-09-07T01:07:21.043

@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 2016-09-07T08:04:59.933

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.

amaclin

Posted 2016-09-06T09:39:21.270

Reputation: 5 763

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.

renlord

Posted 2016-09-06T09:39:21.270

Reputation: 2 167

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 2016-09-06T12:29:57.593

1Also, why would either relay invalid transactions? That doesn't make sense.Murch 2016-09-06T12:30:41.730

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 2016-09-06T13:30:28.147

I hope my latest edit addresses the main question. Otherwise, please correct me where I am mistaken :)renlord 2016-09-06T13:46:11.783

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 2016-09-06T14:22:32.073