There is a lot of misleading information about types of clients and how they are defined. So here is my attempt at categorizing all the client types and gathering the definitions all in one place.
1. Full NodeThe term "full" refers to the verification that the node does. In other words if the client is
fully verifying
everything then it is considered a full node. That means the client has to download every single block from the beginning of time (genesis block) and verify everything about that block.
After verification, what the client does with that block doesn't change anything about it being a "full node" but it changes the
sub-category of full nodes that it belongs to.
A) Archival Full NodesThese are full nodes that
store the entire blockchain on disk.
- These nodes listen for incoming connection, in which case they offer maximum contribution to bitcoin network and new nodes can use them easily to sync.
- If they don't listen for incoming connection their contribution to the network will be significantly less and we may not refer to them as "archival nodes" anymore.
B) Leeching Full NodeAlthough this term is not found anywhere else in bitcoin world but I believe it is a suitable description for this type of full node. In
computing term specifically for P2P networks a "leecher" is a computer that downloads more than it uploads.
A leeching node usually doesn't accept incoming connections and only
downloads. The contribution of such nodes to the network is the least amount.
C) Pruned Full NodeThis is a full node that has discarded old blocks data to reduce the storage requirement and is instead storing the most recent blocks. But it has performed and will continue to perform full verification on everything it receives.
Obviously this type of full node can no longer upload the old blocks it doesn't have but it still can upload the recent blocks it stores, relay new blocks and transactions, have a mempool,...
These clients still contribute to the network but can not be used for initial block download.
a Full node can be either Archival or Leeching but in both cases it could be Pruned.2. SPV clientsSimplified Payment Verification clients also known as Thin clients refer to implementations that do NOT verify everything. Instead they rely on other full nodes, difficulty and cryptography and they download minimum amount of data which makes them easy to use for regular users.
What they download and how much verification these clients perform depends on the implementation itself. There has been many different types in this category but they usually involve downloading all the block headers and related merkle trees (alongside block header + difficulty) as proof that a transaction is included in a block.
A popular example is Electrum. In this implementation clients rely on special bitcoin nodes that have an indexed database so that the user can quickly get their address balance and transaction history from them. The user client connects to at least 10 Electrum nodes to download data and the communication is protected with SSL encryption to prevent MITM attacks.
Some additional information about this type of clients:
https://en.bitcoin.it/wiki/Thin_Client_Security3. Server-dependent clientsThese are the least secure clients that rely on one or a handful of centralized servers and perform minimal verification if any, since they put all their trust in that server to be honest. Most phone wallets are like this. Example: Mycelium