<p>Each normal node should connect to the seeder, this connection is detected by seeder service, that will test the node and add it to the list if some basic verification pass.</p>

<p>Exist other additional features, like for example fetch node list from main know seeder DNS into new seeders services.</p>

CC BY-SA 3.0
2018-01-29T14:50:56.057Z
2018-01-29T14:50:56.057Z
Raul R.
<p>The real virtue of the SIPA node_tracker / DNS_seeder is that it discovers nodes continually. It  spawns threads to <em>crawl</em> the  bitcoin P2P network. That is, having some good nodes to start with ( which are, for example, hard-coded in Sipa's original bitcoin-seeder in main.cpp:</p>
<pre><code>static const string mainnet_seeds[] = {&quot;dnsseed.bluematt.me&quot;, &quot;bitseed.xf2.org&quot;, &quot;dnsseed.bitcoin.dashjr.org&quot;, &quot;seed.bitcoin.sipa.be&quot;, &quot;&quot;};
static const string testnet_seeds[] = {&quot;testnet-seed.alexykot.me&quot;,
                                       &quot;testnet-seed.bitcoin.petertodd.org&quot;,
                                       &quot;testnet-seed.bluematt.me&quot;,
                                       &quot;testnet-seed.bitcoin.schildbach.de&quot;,
                                       &quot;&quot;};
</code></pre>
<p>and provided in the <code>settings.conf</code> file of derivative works like Team-Exor's <a href="https://github.com/team-exor/generic-seeder" rel="nofollow noreferrer">generic-seeder</a> &amp; my own <a href="https://github.com/dbkeys/multiseeder" rel="nofollow noreferrer">multiseeder</a>:</p>
<pre><code>seed_1=&quot;seed.bitcoin.sipa.be&quot; // At least one valid seed ip address is required to begin crawling the network
seed_2=&quot;dnsseed.bluematt.me&quot;
seed_3=&quot;dnsseed.bitcoin.dashjr.org&quot;   // these may be IP numbers, not only names
seed_4=&quot;54.94.158.137&quot;
seed_5=&quot;seed.bitcoin.jonasschnelli.ch&quot;
seed_6=&quot;seed.btc.petertodd.org&quot;
seed_7=&quot;seed.bitcoin.sprovoost.nl&quot;
seed_8=&quot;dnsseed.emzy.de&quot;
seed_9=&quot;seed.bitcoin.wiz.biz&quot;
</code></pre>
<p>)
the seeder sets out on a discovery mission, asking each node it knows to be good for its peers, then goes to those peers, and so on. That is how it builds a very large database of peers.</p>

CC BY-SA 4.0
2023-05-08T17:21:27.240Z
2023-05-08T17:52:38.990Z
2023-05-08T17:52:38.990Z
dbkeys
<p>On bitcoin peer node discovery, the client issues DNS requests to learn about the addresses of other peer nodes. My question is how does this DNS directed service provider learn about all the addresses in the first place?</p>

<bitcoin-core><blockchain><nodes><seed><dns>
How DNS Seeds node maintain the list of addresses?
Consy
# How DNS Seeds node maintain the list of addresses?

(Asked by: username_0 on 2017-12-14)

On bitcoin peer node discovery, the client issues DNS requests to learn about the addresses of other peer nodes. My question is how does this DNS directed service provider learn about all the addresses in the first place?

**Tags:** bitcoin-core, blockchain, nodes, seed, dns


---

## 2 answers

### Answer by username_1 on 2018-01-29. Score: 1 | Accepted answer

Each normal node should connect to the seeder, this connection is detected by seeder service, that will test the node and add it to the list if some basic verification pass.

Exist other additional features, like for example fetch node list from main know seeder DNS into new seeders services.


---

### Answer by username_2 on 2023-05-08. Score: 0

The real virtue of the SIPA node\_tracker / DNS\_seeder is that it discovers nodes continually. It spawns threads to *crawl* the bitcoin P2P network. That is, having some good nodes to start with ( which are, for example, hard-coded in Sipa's original bitcoin-seeder in main.cpp:

```
static const string mainnet_seeds[] = {"dnsseed.bluematt.me", "bitseed.xf2.org", "dnsseed.bitcoin.dashjr.org", "seed.bitcoin.sipa.be", ""};
static const string testnet_seeds[] = {"testnet-seed.alexykot.me",
                                       "testnet-seed.bitcoin.petertodd.org",
                                       "testnet-seed.bluematt.me",
                                       "testnet-seed.bitcoin.schildbach.de",
                                       ""};

```

and provided in the `settings.conf` file of derivative works like Team-Exor's [generic-seeder](https://github.com/team-exor/generic-seeder) & my own [multiseeder](https://github.com/username_2/multiseeder):

```
seed_1="seed.bitcoin.sipa.be" // At least one valid seed ip address is required to begin crawling the network
seed_2="dnsseed.bluematt.me"
seed_3="dnsseed.bitcoin.dashjr.org"   // these may be IP numbers, not only names
seed_4="54.94.158.137"
seed_5="seed.bitcoin.jonasschnelli.ch"
seed_6="seed.btc.petertodd.org"
seed_7="seed.bitcoin.sprovoost.nl"
seed_8="dnsseed.emzy.de"
seed_9="seed.bitcoin.wiz.biz"

```

)
the seeder sets out on a discovery mission, asking each node it knows to be good for its peers, then goes to those peers, and so on. That is how it builds a very large database of peers.


---

