Full node

From JaxNetwork Wiki
Jump to navigation Jump to search

Any computer that connects to the blockchain network is called a node. Nodes that fully verify on their own all of the rules of JaxNet protocol are called full nodes. In contrast to full nodes, lightweight nodes perform only a fraction of necessary communication and store only a fraction of necessary data. It's a common approach that data verified by light nodes is placed in block headers and called consensus data. The rest of the block data is placed in block body and called application data.

In JaxNet protocol full nodes complete full block data verification according to the protocol rules. So they do verify both consensus and application data. Moreover, they verify merge-mining data specified by JaxNet multichain architecture and generated by miners during merge-mining.

Types of full nodes

The concepts of full node and lightweight node were introduced in Bitcoin network by its anonymous founder Satoshi Nakamoto. This classification works fine for single chain blockchain networks. However, JaxNet protocol introduces multi chain paradigm. As a result, there are more types of full nodes and lightweight nodes.

What makes a full node?

Full nodes download every block and transaction and check them against JaxNet's consensus rules. Here are examples of consensus rules, though there are many more:

  • Blocks may only create a certain number of Jax coins and JaxNet coins.
  • Transactions must have correct signatures for all coins being spent.
  • Transactions/blocks must be in the correct data format.
  • Within a single block chain, a transaction output cannot be double-spent.
  • Shard blocks should be supplied with valid Merged Mining Proofs.

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 spending 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 coins in JaxNet.

Nodes that have different consensus rules are actually using two different networks/currencies. Changing any of the consensus rules requires a hard fork, 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 uses software based on the reference client, which is the only client guaranteed to behave correctly.

At minimum, a full chain node must download every transaction that has ever taken place on the target chain, all new transactions, and all block headers. Additionally, full nodes must store information about every unspent transaction output until it is spent. By default full nodes are inefficient in that they download each new transaction at least twice, and they store the entire block chain forever, even though only the unspent transaction outputs are required.

Full Shard Node

Super Full Node

Archival Nodes

A subset of full nodes also accept incoming connections and upload old blocks to other peers on the network. This happens if the software is run with -listen=1 as is default. Contrary to some popular misconceptions, being an archival node is not necessary to being a full node. If a user's bandwidth is constrained then they can use -listen=0, if their disk space is constrained they can use pruning, all the while still being a fully-validating node that enforces bitcoin's consensus rules and contributing to bitcoin's overall security.

Why should you use a full node wallet

How to run a full node

See Also

References