Author

Topic: Cryptocurrency Client Categorization (Full node, Pruned node, SPV node,...) (Read 297 times)

legendary
Activity: 3472
Merit: 10611
Yes, SPV clients do verify the block headers, but I think the most important matter is that they verify the signatures of the transactions.
They can verify signatures but I don't think they do.
There are different implementations of course and some may do it, I haven't checked them. In Electrum, as far as I know, you don't download the UTXO of your transaction so you don't verify transaction signatures. In fact It doesn't have a full script interpreter in first place. It just relies on PoW and longest chain to be valid.

Quote
Interesting, I didn't know about that. So, what's the exact difference of a full node that listens for incoming connections with a full node that doesn't? Don't they both share blocks? What's the limitation?
They are both capable of sharing their blockchain and everything else, the difference is that when a node is accepting inbound connections (listens for incoming connection) you can connect to it and ask for the blocks but if they don't, YOU have to be listening for connections and they connect to your node then you can ask them for blocks or your option is limited to those that do listen.

Basically the best thing you can hope for is to accept inbound connections yourself so that you both connect to other listening nodes and have both listening nodes and non-listening nodes connect to you.

Quote
Can I allow incoming connections through Tor? Just to contribute with little effort.
Yes.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
You've written some nice stuff there, mate. Let me just add one thing that I consider significant.

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.
Yes, SPV clients do verify the block headers, but I think the most important matter is that they verify the signatures of the transactions. This is to be reckoned with. If I had verified the block chain up to a point and all of my UTXOs did not exceed that point, then via an SPV server, I can confirm the validation of those UTXOs, because they have valid signatures of the public keys that match the addresses that I've listed.



A) Archival Full Nodes
These 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.
Interesting, I didn't know about that. So, what's the exact difference of a full node that listens for incoming connections with a full node that doesn't? Don't they both share blocks? What's the limitation?

Can I allow incoming connections through Tor? Just to contribute with little effort.
legendary
Activity: 3472
Merit: 10611
interesting point:
old bitcoin core nodes can no longer be considered "Full Node" because they have not been capable of verifying "everything" ever since SegWit was added. instead they are doing a "partial verification" of everything except SegWit transactions' signatures.
legendary
Activity: 3472
Merit: 10611
IMO it's a bit confusing, usually Archival Full Nodes only means node which store whole blockchain. Can you share reference/discussion which mention "Archival Full Nodes" also means open connection?

i completely agree, in fact this term has been confusing to me too and i was even contemplating not using the term at all but @squatter is correct the term is already in use and can also be found on bitcoin wiki.

In bitcoin, is there a distiction between full nodes? I thought it was only in Ethereum where Vitalik had redefined the term.
I think it'd be better to keep terminology for what a full node is simple. Either you store all of the blockchain or you are not a full node.
Vitalik redefined the meaning because he had no other choice. nobody can run an actual ethereum full node anymore since it requires about 3-3.5 terrabytes of storage. all the current nodes you see are not downloading the whole blockchain, instead they download and verify a tiny percentage of the whole thing which means if something in the history changes nobody would ever find out since the handful of full nodes are in control of the centralized authorities.
keep in mind that being a full node is not about storage but about verification.
legendary
Activity: 2422
Merit: 1451
Leading Crypto Sports Betting & Casino Platform
In bitcoin, is there a distiction between full nodes? I thought it was only in Ethereum where Vitalik had redefined the term.
I think it'd be better to keep terminology for what a full node is simple. Either you store all of the blockchain or you are not a full node.
legendary
Activity: 1666
Merit: 1196
STOP SNITCHIN'
IMO it's a bit confusing, usually Archival Full Nodes only means node which store whole blockchain. Can you share reference/discussion which mention "Archival Full Nodes" also means open connection?

This section has been on the Bitcoin wiki since 2016:

Quote
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.

When you think about it, there is no need to store the entire blockchain unless you run a listening node. A non-listening node won't lose anything by pruning.

There has been some discussion of the distinction:

Quote
There are two different issues.

One is the availability and relay of block data on the network. We want enough full nodes to serve this data to other clients, but other nodes will still verify this data. The only reason for having many nodes is to avoid a central point of failure and having fast access. This requires fast nodes with port 8333 available, but I don't care who runs the nodes. This is what is measured by the available full node count, but it's not the most relevant decentralization metric.

To answer your question: no, a node that does not allow inbound connections hardly contributes to the network, but it may contribute a lot to the decentralization of trust.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
IMO it's a bit confusing, usually Archival Full Nodes only means node which store whole blockchain. Can you share reference/discussion which mention "Archival Full Nodes" also means open connection?

Are those categories classify types of bitcoin clients only or is it the same with other cryptocurrencies wallets?

Only for Bitcoin and altcoin based on Bitcoin. Few altcoin such as Ethereum have their own classification/definition, for example SPV isn't exist on Ethereum, but there's similar client category which is Light client/node.

I want to focus on this category as you have mentioned the exemple of Mycelium client because i always thought it's one of the most secure wallets based on shared nodes like with Electrum. From what i can understand, if the server get compromised, the wallet will not work anymore and the company is the only responsible to make it run again. Right?
Isn't this considered as an important vulnerability?
Web wallet like blockchain.com, is it classified under this category?

If you're talking about Electrum, then no because they use MIT License which comes without any warranty. Most closed source wallet or custodial service have different license / terms and condition though.
legendary
Activity: 1666
Merit: 1196
STOP SNITCHIN'
If Mycelium servers are down, nothing you can do (I don't remember the user can select another server). The only responsible... well they're not forced to make their servers working again
That's worst than custodiol clients.

It's not. If needed, you can always export your private keys from Mycelium, or import your backup seed into another wallet. Your bitcoins can be recovered. The BitPay and Copay wallets work the same way.

Trying not to be off-topic to discuss carateristics of each wallet i used to use, but this leads me to ask about "Bither" wallet as well.

This is how bitcoin.org describes the difference. For BitPay or Wasabi wallets:

Quote
Centralized validation (Caution)
This wallet relies on a centralized service by default. This means a third party must be trusted to not hide or simulate payments.

For Electrum or Bither:

Quote
Simplified validation (Acceptable)
This wallet uses SPV and the Bitcoin network. This means very little trust in third parties is required when verifying payments. However, it is not as secure as a full node like Bitcoin Core.
legendary
Activity: 3472
Merit: 10611
Are those categories classify types of bitcoin clients only or is it the same with other cryptocurrencies wallets?
this is mainly how you would categorize "bitcoin" clients but considering the fact that majority of altcoins are either exact copies of bitcoin or have a lot of similarities in places where it matters you can expand this categorization to altcoins too which is why i said "cryptocurrency" clients.

With blockchain.com for example we can contact the support at extreme cases.
they store your encrypted wallet on their servers so there isn't much they can help you with.

Quote
Trying not to be off-topic to discuss carateristics of each wallet i used to use, but this leads me to ask about "Bither" wallet as well.
those who are more familiar with this wallet may be able to give a better answer but after checking their github account i don't see any indication of this wallet using decentralized nodes. it seems like it is connecting to a centralized server.
hero member
Activity: 2338
Merit: 757
If Mycelium servers are down, nothing you can do (I don't remember the user can select another server). The only responsible... well they're not forced to make their servers working again
That's worst than custodiol clients.
With blockchain.com for example we can contact the support at extreme cases.

Trying not to be off-topic to discuss carateristics of each wallet i used to use, but this leads me to ask about "Bither" wallet as well.

I think it's high importante to understand those differences between different wallet nodes. Some are really related to some major security reasons afaicu .
copper member
Activity: 2940
Merit: 4101
Top Crypto Casino
Are those categories classify types of bitcoin clients only or is it the same with other cryptocurrencies wallets?

3. Server-dependent clients
these are the least secure clients that rely on one or a handful of centralized servers and perform minimal verification since they put all their trust in that server to be honest. some phone wallets are like this. example: Mycelium
I want to focus on this category as you have mentioned the exemple of Mycelium client because i always thought it's one of the most secure wallets based on shared nodes like with Electrum. From what i can understand, if the server get compromised, the wallet will not work anymore and the company is the only responsible to make it run again. Right?
Isn't this considered as an important vulnerability?
Web wallet like blockchain.com, is it classified under this category?

The difference between Electrum and Mycelium servers is the fact that Electrum servers are open source so anyone can run one, with all the benefits that come with.
If Mycelium servers are down, nothing you can do (I don't remember the user can select another server). The only responsible... well they're not forced to make their servers working again
hero member
Activity: 2338
Merit: 757
Are those categories classify types of bitcoin clients only or is it the same with other cryptocurrencies wallets?

3. Server-dependent clients
these are the least secure clients that rely on one or a handful of centralized servers and perform minimal verification since they put all their trust in that server to be honest. some phone wallets are like this. example: Mycelium
I want to focus on this category as you have mentioned the exemple of Mycelium client because i always thought it's one of the most secure wallets based on shared nodes like with Electrum. From what i can understand, if the server get compromised, the wallet will not work anymore and the company is the only responsible to make it run again. Right?
Isn't this considered as an important vulnerability?
Web wallet like blockchain.com, is it classified under this category?
legendary
Activity: 3472
Merit: 10611
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 Node
The 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 Nodes
These 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 Node
Although 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 Node
This 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 clients
Simplified 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_Security

3. Server-dependent clients
These 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
Jump to: