-
Notifications
You must be signed in to change notification settings - Fork 38.8k
seeds: Add additional seed source and bump uptime requirements for Onion and I2P nodes #30695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
seeds: Add additional seed source and bump uptime requirements for Onion and I2P nodes #30695
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code CoverageFor detailed information about the code coverage, see the test coverage report. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsNo conflicts as of last run. |
contrib/seeds/README.md
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will overwrite instead of append.
8332e21 to
f0a7a15
Compare
contrib/seeds/nodes_main.txt
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could be misreading, but it looks like all the tor and i2p peers have been removed without being added elsewhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hadn't regenerated to node lists because I wanted to wait until Ava's seeder resumed exporting good I2P node data. I have now pushed a preliminary export anyway. Everything should be there.
Some very good tor and i2p peers seems absent from the update. I addnode them, but hm. |
|
I've pushed a commit including the node lists generated with all sources. Could you recheck for the peers that were missing? [On a side note, I noticed what (based on the user agent string) might be your cjdns node is no longer part of the cjdns node list because the node didn't have the NODE_NETWORK version bit set.] Also, how do you define very good nodes? Right now, seeds are selected more or less randomly from the set of nodes that pass all selection criteria. Instead of doing a |
Yes, I reluctantly had to begin pruning due to the increased rate of chain data growth over the past year and a half. Is there now only one CJDNS seed node? Edit: OK, I see at least 4 other CJDNS seed nodes. |
I was manually curating I2P nodes based on trusted colleagues (akin to addnode peer selection), filtered by connection reliability and regularly seeing blocks from them. (Edit: I now see that you have ones that I'd recommend, so seems good. There were a couple that were missing, but I see that they, like me, began pruning.) |
contrib/seeds/README.md
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mine is here if you want to add it:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice, added!
5217274 to
a948af6
Compare
Pull additional nodes from virtu's crawler. Data includes sufficient Onion and I2P nodes to align the uptime requirements for these networks to that of clearnet nodes (i.e., 50%). Data also includes more than three times the number of CJDNS nodes currently hardcoded into nodes_main_manual.txt, so hardcoded nodes becomes obsolete.
Pull additional nodes from Luke's seeder to further decentralize the generation of seed nodes.
Regenerate mainnet seeds from new sources without the need for hardcoded data. Result has 512 nodes from each network type except cjdns, for which only eight nodes were found that match the seed node criteria.
a948af6 to
b061b35
Compare
Good to know the automatic process is getting all of the cjdns nodes you were tracking (modulo pruning). Data from @luke-jr's seed is now included as well. As before: 512 nodes for each network type except cjdns, for which there are eight matching the seed node criteria. |
|
ACK b061b35 Instruction updates look correct; did not check any of the changed seeds but did check that i2p and onion mainnet seeds have been readded. If anyone has a testnet crawler, we probably want to have additional sources for testnet and add more i2p and onion testnet seeds. |
fjahr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK b061b35
I have reviewed the changes and verified that the included files generate the included chainparamsseeds.h. I have not tested the seed nodes but I did a quick plausibility check on the txt file changes.
Fun side note: TIL that there is a stable node with a single digit ASN, AS9, which is Carnegie Mellon University.
contrib/seeds/README.md
Outdated
| The seeds compiled into the release are created from sipa's and achow101's DNS seed and AS map | ||
| data. Run the following commands from the `/contrib/seeds` directory: | ||
| The seeds compiled into the release are created from sipa's and achow101's DNS seed, | ||
| virtu's crawler, and fjahr's community AS map data. Run the following commands from the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: It's clear what belongs to who because all the other links have the names in the URL but still might be nicer to be explicit in the future. Ignore if you don't have to retouch.
| virtu's crawler, and fjahr's community AS map data. Run the following commands from the | |
| virtu's crawler (21.ninja), and fjahr's community AS map data. Run the following commands from the |
…blocks, fixed seeds f0b6597 seeds: update .gitignore with signet and testnet4 (Jon Atack) 48f07ac chainparams: remove hardcoded signet seeds (Jon Atack) d4ab115 chainparams: add signet fixed seeds if default network (Jon Atack) 49f155e seeds: update fixed dns seeds (Jon Atack) 2366870 makeseeds: regex improvements (Lőrinc) 98f84d6 generate-seeds: update and add signet (Jon Atack) c4ed23e seeds: add testnet4 seeds (Jon Atack) 60f17dd seeds: add signet seeds (Jon Atack) 2bcccaa makeseeds: align I2P column header (Jon Atack) 94e21aa makeseeds: update MIN_BLOCKS, add reminder to README (Jon Atack) 6ae7a3b makeseeds: update user agent regex (Jon Atack) 9b0d2e5 makeseeds: fix incorrect regex (laanwj) Pull request description: In `makeseeds.py`: - fix the user agent regex (by laanwj) - fix the I2P column header spacing - update the regex (it was also not updated for the previous release) - update `MIN_BLOCKS` (4320 blocks/month * ~6.5 months) and add README documentation to remember to update it - further robustness/standardness/consistency improvements to the regexes (by l0rinc) Add signet and testnet4 seeds to the README and to `generate-seeds.py` Update the fixed seeds in `src/chainparamsseeds.h` In `kernel/chainparams.cpp`: - add signet fixed seeds if default network - remove hardcoded signet seeds Update `contrib/seeds/.gitignore` with signet and testnet4 The previous 2 seeds updates were #30008 and #30695. mainnet: ``` $ contrib/seeds$ python3 makeseeds.py -a asmap-filled.dat -s seeds_main.txt > nodes_main.txt Loading asmap database "asmap-filled.dat"…Done. Loading and parsing DNS seeds…Done. IPv4 IPv6 Onion I2P CJDNS Pass 17252 3630 21079 3095 12 Initial 17252 3630 21079 3095 12 Skip entries with invalid address 8444 1742 14607 2330 10 After removing duplicates 8194 1691 14321 2102 10 Enforce minimal number of blocks 7838 1578 14321 2102 10 Require service bit 1 6802 1326 14321 2102 10 Require minimum uptime 6762 1321 14320 2102 10 Require a known and recent user agent 6762 1321 14320 2102 10 Filter out hosts with multiple bitcoin ports 512 485 512 512 10 Look up ASNs and limit results per ASN and per net ``` signet: ``` $ contrib/seeds$ python3 makeseeds.py -a asmap-filled.dat -s seeds_signet.txt -m 237800 > nodes_signet.txt Loading asmap database "asmap-filled.dat"…Done. Loading and parsing DNS seeds…Done. IPv4 IPv6 Onion I2P CJDNS Pass 110 47 63 9 4 Initial 110 47 63 9 4 Skip entries with invalid address 110 47 63 9 4 After removing duplicates 83 31 58 9 4 Enforce minimal number of blocks 83 31 58 9 4 Require service bit 1 83 31 57 9 4 Require minimum uptime 83 31 57 9 4 Require a known and recent user agent 83 31 57 7 4 Filter out hosts with multiple bitcoin ports 42 30 57 7 4 Look up ASNs and limit results per ASN and per net ``` testnet: ``` $ contrib/seeds$ python3 makeseeds.py -a asmap-filled.dat -s seeds_test.txt > nodes_test.txt Loading asmap database "asmap-filled.dat"…Done. Loading and parsing DNS seeds…Done. IPv4 IPv6 Onion I2P CJDNS Pass 204 73 96 11 5 Initial 204 73 96 11 5 Skip entries with invalid address 204 73 96 11 5 After removing duplicates 204 73 96 11 5 Enforce minimal number of blocks 204 73 96 11 5 Require service bit 1 195 69 87 9 5 Require minimum uptime 193 69 87 9 5 Require a known and recent user agent 193 69 87 9 5 Filter out hosts with multiple bitcoin ports 79 39 87 9 5 Look up ASNs and limit results per ASN and per net ``` testnet4 ``` $ contrib/seeds$ python3 makeseeds.py -a asmap-filled.dat -s seeds_testnet4.txt -m 72600 > nodes_testnet4.txt Loading asmap database "asmap-filled.dat"…Done. Loading and parsing DNS seeds…Done. IPv4 IPv6 Onion I2P CJDNS Pass 149 115 69 11 4 Initial 149 115 69 11 4 Skip entries with invalid address 149 115 69 11 4 After removing duplicates 104 75 52 7 4 Enforce minimal number of blocks 104 75 52 7 4 Require service bit 1 100 73 51 7 4 Require minimum uptime 100 73 51 7 4 Require a known and recent user agent 100 73 51 7 4 Filter out hosts with multiple bitcoin ports 43 46 51 7 4 Look up ASNs and limit results per ASN and per net ``` ACKs for top commit: l0rinc: I have mostly reviewed the regexes, for the rest it's only a very lightweight ACK f0b6597 achow101: ACK f0b6597 laanwj: re-ACK f0b6597 Tree-SHA512: 86f4ea247469dbb3f131f2de884e470fbf93f399744d4854fcc26511afafcec231d7eaed37f8564244bc64d917d130b314d948aa97b13020613f8e186c70e368
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
Here's the current results with 512 nodes for all networks except cjdns:
Using the extra data
Before
To dos