<p>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.</p>

CC BY-SA 3.0
2016-09-06T09:52:24.940Z
2016-09-06T09:52:24.940Z
amaclin
<p>Both full node and pruned node can perform the following tasks:</p>

<ul>
<li>validate new unconfirmed transactions</li>
<li>relay valid or <em>invalid</em> transactions and maintain its own mempool</li>
<li>validate blocks independently with reference to its own blockchain replica</li>
<li>relay <em>new</em> blocks</li>
</ul>

<p>The difference between a full node and a prune node is that a pruned node cannot service <code>getblock</code> or <code>getblockheader</code> 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.</p>

<p>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 <strong>complete</strong> blockchain replica which stores <strong>all</strong> 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 <code>getblocks</code> and <code>getheaders</code> request.</p>

CC BY-SA 3.0
2016-09-06T12:29:57.593Z
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?](http://bitcoin.stackexchange.com/q/42287/5406).
Murch
CC BY-SA 3.0
2016-09-06T12:30:41.730Z
Also, why would either relay invalid transactions? That doesn't make sense.
Murch
CC BY-SA 3.0
2016-09-06T13:30:28.147Z
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
CC BY-SA 3.0
2016-09-06T13:46:11.783Z
I hope my latest edit addresses the main question. Otherwise, please correct me where I am mistaken :)
rny
CC BY-SA 3.0
2016-09-06T14:22:32.073Z
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
CC BY-SA 3.0
2016-09-06T12:17:31.657Z
2016-09-06T13:45:32.863Z
2016-09-06T13:45:32.863Z
rny
<p>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.<br>
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.</p>

<p>Common usage of the term <strong>does not</strong> 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. </p>

<p>Nodes that can serve the complete blockchain are referred to as <strong>Archival Nodes</strong>.</p>

<p>Sources: </p>

<ul>
<li>The Bitcoin wiki explicitly describes pruning as an option for full nodes (see <a href="https://en.bitcoin.it/wiki/Full_node#What_makes_a_full_node.3F" rel="nofollow noreferrer">Wiki: Full Node</a>).</li>
<li>Bitcoin.org: <a href="https://bitcoin.org/en/full-node#what-is-a-full-node" rel="nofollow noreferrer">What is a full node?</a></li>
<li>Bitcoin Core developer Pieter Wuille <a href="https://twitter.com/pwuille/status/591527686117466113" rel="nofollow noreferrer">announced the pruning feature thusly on Twitter</a>:

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

CC BY-SA 3.0
2016-09-07T01:07:21.043Z
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
CC BY-SA 3.0
2016-09-07T08:04:59.933Z
@renlord: [Thin clients](http://bitcoin.stackexchange.com/q/32529/5406) 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
CC BY-SA 4.0
2020-01-30T19:42:28.000Z
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
CC BY-SA 4.0
2020-01-30T20:35:18.913Z
"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
CC BY-SA 4.0
2020-02-14T14:10:16.093Z
It seems difficult to find the "official" definition of this, after doing some researching, but i tend to think your definition is canonical.  I note that Antonopoulos in "Mastering Bitcoin" says "full node" means "full blockchain node", while I think the core developers says it means "fully validating node".
Chan-Ho Suh
CC BY-SA 4.0
2020-02-14T19:50:07.630Z
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
CC BY-SA 4.0
2016-09-06T14:19:29.063Z
2020-02-14T19:11:16.497Z
2020-02-14T19:11:16.497Z
Murch
<p>There seem to be some different interpretations of what the term "<strong>full-node</strong>" implies. E.g. there seems to be some disagreement whether a pruned node is still a full-node.</p>

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

CC BY-SA 3.0
2016-09-06T09:54:45.917Z
related: [What do pruning nodes contribute to the network?](http://bitcoin.stackexchange.com/q/42287/5406)
Murch
<full-node><terminology><pruning>
What is the meaning of the term "full-node"?
Murch
# What is the meaning of the term "full-node"?

(Asked by: username_0 on 2016-09-06)

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?

**Tags:** full-node, terminology, pruning

> **Comments:**
> **username_0**: related: [What do pruning nodes contribute to the network?](http://bitcoin.stackexchange.com/q/42287/5406)  

---

## 3 answers

### Answer by username_0 on 2016-09-06. Score: 7 | Accepted answer

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](https://en.bitcoin.it/wiki/Full_node#What_makes_a_full_node.3F)).
* Bitcoin.org: [What is a full node?](https://bitcoin.org/en/full-node#what-is-a-full-node)
* Bitcoin Core developer Pieter Wuille [announced the pruning feature thusly on Twitter](https://twitter.com/pwuille/status/591527686117466113):
  > @orionwl just merged pruning support in #Bitcoin Core! Run a (no wallet) full node with 1.3 GB storage. Thanks to all who contributed.

> **Comments:**
> **username_2**: 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.  
> **username_0**: @renlord: [Thin clients](http://bitcoin.stackexchange.com/q/32529/5406) 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.  
> **username_3**: 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.  
> **username_0**: "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.  
> **username_3**: It seems difficult to find the "official" definition of this, after doing some researching, but i tend to think your definition is canonical.  I note that Antonopoulos in "Mastering Bitcoin" says "full node" means "full blockchain node", while I think the core developers says it means "fully validating node".  
> **username_0**: 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.  

---

### Answer by username_1 on 2016-09-06. Score: 2

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.


---

### Answer by username_2 on 2016-09-06. Score: 0

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.

> **Comments:**
> **username_0**: 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?](http://bitcoin.stackexchange.com/q/42287/5406).  
> **username_0**: Also, why would either relay invalid transactions? That doesn't make sense.  
> **username_2**: Just saying it could. Full nodes operate under the assumption that they do not trust other nodes therefore they will always perform independent validation.  
> **username_2**: I hope my latest edit addresses the main question. Otherwise, please correct me where I am mistaken :)  
> **username_0**: 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?  

---

