# Network architecture

In Mel, participants in the network can be divided into three roles:

<figure><img src="/files/ggwyQptNEckTbZTMjMJ0" alt=""><figcaption></figcaption></figure>

* **Staker nodes** are full nodes directly participate in the proof-of-stake [consensus](/concepts/consensus.md). They have stake, denominated in SYM, locked up on-chain, and receive consensus voting power in exchange.
* **Replica nodes** are full nodes that do not have SYM stake, but replicate and validate the output of the staker consensus. They not only provide a “CDN” for the blockchain, but more importantly by using a [nuking procedure](/concepts/consensus.md#stick-slashing-and-nuking), they shut the network down if a quorum of stakers produces invalid results.
* **Light clients**, also known as "clients", merely *consume* the security enforced by the stakers and replicas. They do not replicate the blockchain, but trust consensus proofs provided by the stakers that commit to a particular blockchain state. As long as the network as a whole is working correctly, light clients cannot be fooled. [Trustless light clients](/concepts/light-clients.md), embedded into apps as libraries (like [melprot](/developer-guides/gibbername/melprot-a-quick-intro.md)), are the cornerstone of Mel's off-chain composable vision.

{% hint style="info" %}
**Note**: "stakers" are called "validators" in most other blockchains. We intentionally use a different word because:

* *Staker* normalizes self-staking rather than pooled staking, and makes it clear that delegating stake to a staker is similar in trust to giving them a loan.
* *Validator* is highly misleading, since the main purpose of consensus is not to "validate" blocks, but to produce and decide on them. In fact, "validation" describes the job of normal full nodes much better!
  {% endhint %}

The staker and replica nodes form a P2P gossip network using the [HTTP-based melnet protocol](/concepts/melnet-the-p2p-layer.md); light clients can also talk the same protocol to query these nodes.


---

# 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://docs.melproject.org/concepts/network-architecture.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.
