This builds on #30008 and adds data exported by my crawler an additional source for seed nodes. Data covers all supported network types.
[edit: Added Luke’s seeder as input as well.]
Motivation
- Further decentralizes the seed node selection process (in the long term potentially enabling an n-source threshold for nodes to prevent a single source from entering malicious nodes)
- No longer need to manually curate seed node list for any network type: See last paragraph of OP in #30008. My crawler has been discovering the handful of available cjdns nodes for around two months, all but one of which meet the reliability criteria.
- Alignment of uptime requirements for Onion and I2P nodes with those of clearnet nodes to 50%: If I’m reading the code correctly, seeders appear to optimize for up-to-dateness by using lower connection timeouts than Bitcoin Core to maximize throughput. Since my crawler does not have the same timeliness requirements, it opts for accuracy by using generous timeouts. As a result, its data contains additional eligible Onion (and other darknet nodes), as is shown in the histogram below. Around 4500 Onion nodes are discovered so far (blue); my data adds ~6400 more (orange); ~ 1500 nodes take longer than the default 20-second Bitcoin Core timeout and won’t qualify as “good”.
Here’s the current results with 512 nodes for all networks except cjdns:
0IPv4 IPv6 Onion I2P CJDNS Pass
110335 2531 11545 1589 10 Initial
210335 2531 11545 1589 10 Skip entries with invalid address
35639 1431 11163 1589 8 After removing duplicates
45606 1417 11163 1589 8 Enforce minimal number of blocks
55606 1417 11163 1589 8 Require service bit 1
64873 1228 11163 1589 8 Require minimum uptime
74846 1225 11161 1588 8 Require a known and recent user agent
84846 1225 11161 1588 8 Filter out hosts with multiple bitcoin ports
9512 512 512 512 8 Look up ASNs and limit results per ASN and per net
0IPv4 IPv6 Onion I2P CJDNS Pass
15772 1323 443 0 2 Initial
25772 1323 443 0 2 Skip entries with invalid address
34758 1110 443 0 2 After removing duplicates
44723 1094 443 0 2 Enforce minimal number of blocks
54723 1094 443 0 2 Require service bit 1
63732 867 443 0 2 Require minimum uptime
73718 864 443 0 2 Require a known and recent user agent
83718 864 443 0 2 Filter out hosts with multiple bitcoin ports
9 512 409 443 0 2 Look up ASNs and limit results per ASN and per net