Lessons 1/4 · 20 min
The roles: what they keep and what they verify
A starting question
Your friend says: "My app queries a node, so it trusts nobody." Is that true? It depends entirely on the node. To answer, ask two questions about every role in the network:
- What does it store? (the whole history, only recent state, only block headers)
- What does it verify by itself? (every transaction and state transition, or only proofs and signatures)
Reminder from workshop 110: a block has a header (height, previous block hash, Merkle roots) and a body (the transactions). The state is the table of balances and data after each block; the header contains a fingerprint of it, the state root.
The roles, one by one
- Full node: downloads blocks, replays every transaction and checks the protocol rules. It rejects an invalid block even if everyone else signs it. It keeps recent state and, depending on configuration, may prune (delete) old state.
- Archive node: a full node that deletes nothing: it can answer "what was this account's balance at block 1,200,000?". It is therefore much larger.
- Light client: keeps only headers (or even just one recent trusted header). For a specific piece of data it asks a full node for a Merkle proof and compares it with the header's root. It does not replay transactions.
- Validator (proof of stake) or miner (proof of work): takes part in producing and voting on blocks. For its own safety and the network's, it should be a full node: it should not vote on what it has not verified (the protocol does not always enforce this: some pool miners work on a block template supplied by the operator). It also holds a signing key that puts its funds at stake.
- Collator: a term specific to Polkadot and its parachains. It gathers a parachain's transactions and prepares the candidate blocks that the relay chain's validators check. It does not secure the relay chain itself. Elsewhere the word does not exist or means something else: check each network's vocabulary.
- RPC node: a full (or archive) node whose JSON-RPC interface is opened to applications. It is a use of a node, not a data type.
Summary table
| Role | Keeps | Verifies by itself | Can answer old history? |
|---|---|---|---|
| Light client | Headers | Header signatures/work, Merkle proofs | No, not alone |
| Full node (pruned) | Blocks + recent state | All transactions | Only the retained period |
| Archive node | Everything, including past states | All transactions | Yes |
| Validator | Like a full node + signing key | All transactions, then votes | Depends on its configuration |
Worked example: who can answer?
A fictitious network has 2,000,000 blocks. Three questions: (a) "Is this payment in block 1,999,990?" (b) "What was account X's balance at block 500,000?" (c) "Does this transaction obey the rules?"
- (a) A light client can answer with a Merkle proof against the header.
- (b) Only an archive node has the state of block 500,000 immediately available; a pruned full node deleted it (if it kept the blocks, it could recompute it by replaying them, slowly). A light client can only ask, and must believe the answer unless it comes with a proof against the state root of that header.
- (c) Only a node that replays the transaction (full, archive, validator) truly verifies it.
What this does NOT guarantee
- Running a full node does not make you a validator: there is no vote and no reward without a validation key and, in proof of stake, without deposited stake.
- A full node does not protect you from a chain that is validly built but wrong: if it is connected only to malicious peers (an eclipse attack), it can follow a false branch. It checks the rules, not the truth of the world.
- Names are not standardised: two projects can call two different things "light".
Recap
A role is defined by what it keeps and what it verifies. The less it verifies, the more trust it delegates; the less it keeps, the less it costs.
