Request for help: seeds. Don't let the p2p network starve!

As you guys probably know, anything using the peer to peer network needs some way to find peers. The main entry-point into this is the DNS-seed concept.

One by one the existing seeds have gone stale or simply have dropped all entries. There is literally only one that actually has IPs that work, which is seed.flowee.cash
This has been the situation for quite some time now and I think it is important to pay attention to every now and then.

I run the above seed, have for 5 years, and have no intention for it to go away, so don’t worry about that. At the same time, I don’t think it is the most healthy scenario to only have one seed maintained and owned by one individual.

BCHN is dependent on good seeds, which means that Fulcrum is dependent indirectly on it too. This is core infrastructure.

Would be nice if we could get one or two more individuals commit to maintaining some for various years.

3 Likes
  • What is the alternative way of finding seeds nodes? Scanning whole IP4 address range?
  • Are some known seeds node addresses distributed with BCHN software, hard-coded?

Yes.

I’ve never looked into this. Is the idea that it’s just A and AAAA records pointing to IPv4/IPv6?

If so, could we basically just copy the DNS config that seed[dot]flowee[dot]cash has or is it a bit more involved in the sense that it should be auto-updating from software that finds peers?

yes, that is the idea. But only to peers that use the default port.

Ideally it lists peers that are on all the time (no home setup that are off at night or whatever) and have been on longer, as a way to try to determine they will be running for a while longer.

My approach is indeed a crawler, I update the seed nearly every day with the top-something IPs via some heuristic.
But that is absolutely not a requirement, for all I care you copy some IPs from your BCHN that you’ve been connected to for a week.

Whatever gets the job done :slight_smile:

Thanks for keeping an eye on this @tom!

Looking at Files · master · Bitcoin Cash Node / Bitcoin Cash Node · GitLab

I’m getting reasonable responses (e.g. dig bch.bitjson.com) from these seeds:

  • bch.bitjson.com
  • bchseed.c3-soft.com
  • btccash-seeder.bitcoinunlimited.info
  • seed.flowee.cash

@tom are you seeing bad responses from any of these?

Failing:

  • dnsseed.electroncash.de
  • seed.bch.loping.net
  • seed.bchd.cash
  • seed-bch.bitcoinforks.org

I just tried to contact each to let them know about this thread.

Aside, I’m also running chipnet and testnet4 seeders at dig chipnet.bitjson.com and dig testnet4.bitjson.com, respectively. I encourage anyone setting up mainnet seeds to do the same for those networks at the same time:

The results are mixed, not bad but could be better :slight_smile:

Doing a quick check showed up a lot of BSV IPs. I found 4 on the BU one and 4 on the bitjson feed (from the IPv4 ones I checked).
The BU one is also linking to a LOT of pruned nodes, which are quite sub-optimimal as an entry-point.

Overall its not as bad as I probably saw it at the opening of this thread, so that’s a positive.

Do you have a script for the crawler you’re using that I could work off?

My Orange Pi 5 node is unplugged atm, but might look at getting this setup this weekend.

If not, I should be able to whip something together quickly… looks like I can just use this RPC:

https://docs.bitcoincashnode.org/doc/json-rpc/getpeerinfo/

… and then maybe do a simple sort on conntime for now to choose which nodes to prioritize for DNS.

Ah, good to know! I’m using the BCHN seeder, so I opened an issue here: Seeder listing BSV, XEC nodes (#515) · Issues · Bitcoin Cash Node / Bitcoin Cash Node · GitLab (cc: @cculianu)

It’s great to know we have a diversity of DNS seeder implementations too! Do you have instructions somewhere that others can follow to copy your setup?

that sounds good,
the ‘services’ field should be useful to, including only nodes that have ‘NETWORK’ and ‘BLOOM’ would be useful for peer discovery. (granted, apart from Flowee Pay, the Bloom isn’t used much on our network, so I’m being kinda selfish there).

Took a look at this over the weekend. Most of it looks very simple - the biggest PITA is, unexpectedly, Namecheap (what I usually use atm) API which seems a bit cumbersome to work with.

I’ll create a repo so that others can spin this up towards the end of this week and try to make it so other DNS providers can be coded in easily.

I don’t use them anymore, but in a git repo code never completely goes away, so hollar if you want to have any details on how to do it.

1 Like