<p>There's a list of hardcoded blocks in the bitcoin client: <a href="https://github.com/bitcoin/bitcoin/blob/master/src/checkpoints.cpp" rel="nofollow">https://github.com/bitcoin/bitcoin/blob/master/src/checkpoints.cpp</a> </p>

<p>However, you present an entirely valid attack. If I can control one DNS seed and DDOS the others, I could cause new clients to only connect to my network.</p>

CC BY-SA 3.0
2013-04-03T17:51:05.493Z
2013-04-03T17:51:05.493Z
Nick ODell
<p>You need to start at the <a href="https://en.bitcoin.it/wiki/Genesis_block" rel="nofollow">Genesis block</a> so you can't go back in time. And like Nick wrote, then the bitcoin-qt client has a list of "checkpoint" blocks which is hardcoded.</p>

<p>Also, the "correct blockchain" is defined by the one with the most work behind it (starting at the Genesis block ofc), so if you can see just one IP with the 'not-fake' blockchain, then he can prove that the millions of IP's you can see (the botnet) has a 'fake' blockchain.</p>

CC BY-SA 3.0
2013-04-03T18:10:49.597Z
2013-04-03T18:10:49.597Z
Nicolai
<p>Global botnets of "pwned" machines exist. Hypothetically, such a botnet could be configured to look a lot like the Bitcoin peer-to-peer network.</p>

<p>It could even have a long (fake) block chain, full of fake timestamps showing years' worth of history where the difficulty just never got very high.</p>

<p>My question is simple: How does the Bitcoin client know it is connected to the "real" Bitcoin P2P network and not to an impostor? That is, what mechanisms does it use to make this identification with confidence?</p>

<p>The more such mechanisms you identify, the better your answer is, in my view. Thanks.</p>

<network>
How does a client know it is connected to the right P2P network?
Nemo
# How does a client know it is connected to the right P2P network?

(Asked by: username_0 on 2013-04-03)

Global botnets of "pwned" machines exist. Hypothetically, such a botnet could be configured to look a lot like the Bitcoin peer-to-peer network.

It could even have a long (fake) block chain, full of fake timestamps showing years' worth of history where the difficulty just never got very high.

My question is simple: How does the Bitcoin client know it is connected to the "real" Bitcoin P2P network and not to an impostor? That is, what mechanisms does it use to make this identification with confidence?

The more such mechanisms you identify, the better your answer is, in my view. Thanks.

**Tags:** network


---

## 2 answers

### Answer by username_1 on 2013-04-03. Score: 2

There's a list of hardcoded blocks in the bitcoin client: <https://github.com/bitcoin/bitcoin/blob/master/src/checkpoints.cpp>

However, you present an entirely valid attack. If I can control one DNS seed and DDOS the others, I could cause new clients to only connect to my network.


---

### Answer by username_2 on 2013-04-03. Score: 1

You need to start at the [Genesis block](https://en.bitcoin.it/wiki/Genesis_block) so you can't go back in time. And like Nick wrote, then the bitcoin-qt client has a list of "checkpoint" blocks which is hardcoded.

Also, the "correct blockchain" is defined by the one with the most work behind it (starting at the Genesis block ofc), so if you can see just one IP with the 'not-fake' blockchain, then he can prove that the millions of IP's you can see (the botnet) has a 'fake' blockchain.


---

