3

I understand that a node can request synchronization from the network. But who is fulfilling those requests?

  1. How are these requests sent out? Are they sent to the entire network or 1 specific node?
  2. Who answers these requests? Full nodes?
  3. If one full node is providing the download, how do the other full nodes know that this request has been "served"?
  4. Does whoever providing the download get paid? How do they get paid?

Thanks!

reedvoid
  • 317
  • 1
  • 7

1 Answers1

1

When a node connects to the network, it actually connects to some other nodes, called peers. If those peers have a longer chain, your node requests the missing nodes from them. Every time a node mines a new block, it shares it with it's peers, and them with them's, and so on. The same goes for transactions, when a node publishes one, it broadcast it to it's peers, etc. There is no payment for this, it is just how the nework shares the information.

Usually both full and fast nodes can answer to fast nodes, but only full, archive nodes can answer to full nodes.

  • Thanks for your response, but I am asking about a new node coming into the network or a light node that's disconnected from the network periodically to get synchronized. – reedvoid Nov 06 '18 at 22:17
  • A node coming into the network behaves as i described first. When you start syncing you have a chain of 1 block (genesis), so every peer synced is usefull. Light nodes don't behave differently, it just stores and verify less information. – Hari GTT Psicolabis Nov 06 '18 at 22:37
  • [1] So how does the syncing node know it's getting the right blocks? Say the right genesis block? Does it ask multiple peers and compare what they tell him? How would it know that the peers haven't colluded to trick him into believing a false genesis block? [2] If this is all free, then couldn't I attack the network by constantly inserting new nodes and requesting almost a terabyte of download from every node I know? Seems like this is pretty "expensive" to be free. – reedvoid Nov 06 '18 at 22:47
  • "The right blocks" is a harder question to answer, check https://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use , as a reduction, it chooses the chain with the most work behind – Hari GTT Psicolabis Nov 06 '18 at 22:49
  • As for "the right genesis", yes, and since every block has a hash, it can check if block nr 1 inherits from it and so on – Hari GTT Psicolabis Nov 06 '18 at 22:50
  • Hmm I think I may not be clear about my assumptions. Say the node that's requesting the sync is a sensor, it has almost no computational power, no storage, very poor connectivity (disconnects a lot), and very expensive bandwidth. So it cannot sync or validate anything, the only thing it could possibly do is request updates on a specific account. It cannot stay on the network to listen for traffic, it cannot validate the entire chain from the beginning. From your responses, seems like ETH is simply not taking such devices into consideration, or maybe it's a Layer 2 solution. – reedvoid Nov 06 '18 at 22:57
  • In that case, you would use a light node, that only checks the headers, or use a Layer 2 solution as you suggest. Blockchain as a technology requires verification of headers and transaction from the beginning, so no blockchain can do what you ask. – Hari GTT Psicolabis Nov 07 '18 at 16:55