# Blockchain Node

{% tabs %}
{% tab title="Full Node" %}
A full Ethereum Virtual Machine (EVM) node maintains the current state of the blockchain and handles both read-only and state-changing transactions. To conserve disk space and reduce sync time, a full node prunes the blockchain data, but still stores enough data to recompute chain events if needed.
{% endtab %}

{% tab title="Archive Node" %}
An Archive Ethereum Virtual Machine (EVM) node not only stores the current state of the blockchain and handles read-only and state-changing transactions, but it also stores historical data, including all past states and account balances. This allows an archive node to provide access to all past transactions and account states, making it useful for research and data analysis purposes. However, due to the large amount of data that an archive node needs to store, it can be more resource-intensive to operate and requires more disk space than a full node.
{% endtab %}

{% tab title="Ethereum client" %}
An Ethereum client is a software program that allows users to interact with the Ethereum blockchain. It acts as a bridge between the user and the network, enabling them to send and receive transactions, deploy smart contracts, and interact with decentralized applications (dApps).  \
\
It is like a driver that helps your car navigate the roads. Just as a driver needs to be able to understand and interpret traffic signals and road signs to get you where you need to go, an Ethereum client needs to be able to understand and interpret the complex network of nodes and transactions on the Ethereum blockchain to help you send and receive transactions and interact with dApps.

1. **Geth** - a command-line interface (CLI) client written in Go that is widely used by developers to interact with the Ethereum network.
2. **Parity** - a client written in Rust that supports multiple networks and features a user-friendly interface.
3. **Besu** - a Java-based client developed by ConsenSys that is optimized for enterprise use.
4. **Nethermind** - a client written in C# that features high performance and low resource usage.
5. **OpenEthereum** - a client previously known as Parity Ethereum, also written in Rust, that supports multiple networks and is focused on security.
6. **Erigon** - a Rust-based Ethereum client that is known for its fast synchronization speed, low memory requirements, and low CPU usage.

\
\
<https://ethernodes.org/>
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://indexdao.gitbook.io/indexerdao/indexer-technical-stack/indexer-infrastructure/blockchain-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
