<p>A node does not know about the other nodes that one of their peers are connected to. They will respond with whatever your node requests from them, even if this ends up being duplicate blocks.</p>

<p>Because network connections are direct streams, your node knows exactly what it has sent and received to and from each of its peers. So your node will choose the peers it wants to download blocks from and send them specific requests for those blocks. Since Bitcoin Core uses headers first sync, there is no need to just send a getblocks message; instead it can use getdata messages to request specific blocks and spread out the download over multiple peers.</p>

<p>In previous versions of Bitcoin Core, it would choose one node to sync off of and download all of the blocks from just that node. However this behavior is no longer done, although it is still part of the protocol and can still be done.</p>

CC BY-SA 3.0
2018-04-12T19:36:53.423Z
So it basically gets the responses from all of the other nodes and then processes them into a chain for itself? Wouldn't that cause a lot of traffic?
agah ebrahimi
CC BY-SA 3.0
2018-04-12T20:11:54.367Z
No, it does not cause a lot of traffic. There are not duplicate responses from each node because your node ensures that there are no duplicates by not requesting the same data from different nodes.
Ava Chow
CC BY-SA 3.0
2018-04-12T06:16:02.600Z
2018-04-12T06:16:02.600Z
Ava Chow
<p>I've been thinking about this for a while and can't seem to understand part of the network. </p>

<p>Lets assume that I'm a node that has been offline for 5 months and I want to retrieve the new blocks. When I broadcast the getblocks message different nodes see it, do all of my peers respond or do some of them respond and the others ignore it because of the other responses? And if they all respond back, would my node then choose which one/ones it wants to get the data from, or would it get the data from all of them? If it gets the data from all of them then wouldn't that slow the system down a lot and create a lot more traffic on the network? </p>

<bitcoin-core><block><network><nodes>
Requesting Blocks
agah ebrahimi
# Requesting Blocks

(Asked by: username_0 on 2018-04-12)

I've been thinking about this for a while and can't seem to understand part of the network.

Lets assume that I'm a node that has been offline for 5 months and I want to retrieve the new blocks. When I broadcast the getblocks message different nodes see it, do all of my peers respond or do some of them respond and the others ignore it because of the other responses? And if they all respond back, would my node then choose which one/ones it wants to get the data from, or would it get the data from all of them? If it gets the data from all of them then wouldn't that slow the system down a lot and create a lot more traffic on the network?

**Tags:** bitcoin-core, block, network, nodes


---

## 1 answers

### Answer by username_1 on 2018-04-12. Score: 0 | Accepted answer

A node does not know about the other nodes that one of their peers are connected to. They will respond with whatever your node requests from them, even if this ends up being duplicate blocks.

Because network connections are direct streams, your node knows exactly what it has sent and received to and from each of its peers. So your node will choose the peers it wants to download blocks from and send them specific requests for those blocks. Since Bitcoin Core uses headers first sync, there is no need to just send a getblocks message; instead it can use getdata messages to request specific blocks and spread out the download over multiple peers.

In previous versions of Bitcoin Core, it would choose one node to sync off of and download all of the blocks from just that node. However this behavior is no longer done, although it is still part of the protocol and can still be done.

> **Comments:**
> **username_0**: So it basically gets the responses from all of the other nodes and then processes them into a chain for itself? Wouldn't that cause a lot of traffic?  
> **username_1**: No, it does not cause a lot of traffic. There are not duplicate responses from each node because your node ensures that there are no duplicates by not requesting the same data from different nodes.  

---

